1 분 소요

Pandas 정렬과 병합: 월마트 주가 데이터로 실습

Pandas 학습으로 정렬과 병합을 정리했다. 이번에도 실제 데이터로 해봤는데, 1972년부터 2025년까지의 월마트(WMT) 주가 데이터를 사용했다.


1. 정렬: sort_values, sort_index

데이터가 많을수록 원하는 순서로 정렬하는 게 분석의 시작이다.

값 기준 정렬 (sort_values)

특정 컬럼 값 기준으로 정렬할 때 쓴다. 거래량이 가장 많았던 날을 찾을 때:

# 거래량 기준 내림차순 정렬
wmt_sorted = df.sort_values(by='volume', ascending=False)

인덱스 기준 정렬 (sort_index)

시계열 데이터가 뒤섞여 있을 때 날짜순으로 재정렬하는 데 쓴다.

# 날짜(Index) 기준 오름차순 정렬
wmt_timeline = df.sort_index(ascending=True)

2. 데이터 추출: nlargest, nsmallest

정렬 후 상위 몇 개 뽑을 때 head() 써도 되지만, nlargest가 더 직관적이다.

# 월마트 역대 최고가(Adj Close) TOP 5
top5_prices = df['adj_close'].nlargest(n=5)

# 월마트 역대 최저가(Adj Close) BOTTOM 5
bottom5_prices = df['adj_close'].nsmallest(n=5)

월마트 성장 추이를 빠르게 확인하는 데 유용하다.


3. 함수 기반 결합: combine

단순 합치기가 아니라 “두 데이터 중 더 큰 값 선택” 같은 로직을 적용해서 합칠 때 쓴다.

# 두 시리즈 비교해서 더 큰 값 선택
def take_larger(s1, s2):
    return s1 if s1.sum() > s2.sum() else s2

# 시가(Open)와 종가(Close) 중 더 높은 값으로 구성
combined_highs = df['open'].combine(df['close'], max)

combine_first()를 쓰면 첫 번째 데이터의 NaN을 두 번째 데이터 값으로 채울 수 있다.


4. 인덱스 기반 병합: join

서로 다른 데이터프레임을 인덱스 기준으로 옆으로 붙일 때 쓴다. 주가 데이터와 거래량 데이터를 따로 관리하다가 합칠 때 유용하다.

# 인덱스(Date)가 같은 두 데이터프레임 합치기
# how='inner', 'outer', 'left', 'right' 옵션으로 병합 방식 결정
full_data = price_df.join(volume_df, how='inner')

5. 키(Key) 기반 병합: merge

SQL의 JOIN과 가장 유사하다. 공통된 컬럼을 기준으로 데이터를 병합한다.

# 'Date' 열을 기준으로 주가 데이터와 외부 경제 지표 데이터 합치기
merged_df = pd.merge(df, economy_indices, on='Date', how='left')

merge는 중복 키 처리나 다양한 병합 방식(on, left_on, right_on)을 지원해서 복잡한 데이터 분석에서 가장 많이 쓰게 된다.


정리

기능 메서드 용도
값 기준 정렬 sort_values() 특정 컬럼 값으로 정렬
인덱스 기준 정렬 sort_index() 인덱스(날짜 등)로 정렬
상위/하위 추출 nlargest(), nsmallest() TOP N, BOTTOM N 추출
함수 기반 결합 combine() 커스텀 로직으로 합치기
인덱스 기반 병합 join() 인덱스 기준으로 옆으로 붙이기
키 기반 병합 merge() 공통 컬럼 기준으로 합치기 (SQL JOIN)

이걸로 Pandas 기초 잡은 것 같다. 다양한 데이터를 만져보며 익숙해 지는게 관건일 듯.


데이터 출처: Kaggle - Walmart Stock Data 2025

댓글남기기