데이터프레임 구조화와 크기 조정
1. 데이터프레임 구조화
데이터프레임의 구조를 재조정하면 데이터를 원하는 형태로 변형하고, 분석하기 적합한 상태로 만들 수 있습니다. 판다스에서는 다음과 같은 주요 작업이 사용됩니다:
1.1 pivot()을 사용한 피벗 테이블 생성
- 특정 열 데이터를 행 또는 열로 이동하여 새 데이터프레임을 만듭니다.
- 데이터를 요약하거나 분석하는 데 유용합니다.
import pandas as pd
# 데이터 생성
data = {
'날짜': ['2023-01-01', '2023-01-02', '2023-01-01', '2023-01-02'],
'도시': ['서울', '서울', '부산', '부산'],
'온도': [2, 3, 6, 7],
'습도': [55, 60, 80, 85]
}
df = pd.DataFrame(data)
# 피벗 테이블 생성
pivot_df = df.pivot(index='날짜', columns='도시', values='온도')
print(pivot_df)
결과:
도시 부산 서울
날짜
2023-01-01 6 2
2023-01-02 7 3
1.2 melt()를 사용한 데이터 구조 해체
- *긴 형식(long format)**으로 데이터를 변환합니다.
- 여러 열을 하나의 열로 통합할 때 유용합니다.
# 데이터 구조 해체
melted_df = pd.melt(df, id_vars=['날짜', '도시'], value_vars=['온도', '습도'])
print(melted_df)
결과:
날짜 도시 variable value
0 2023-01-01 서울 온도 2
1 2023-01-02 서울 온도 3
2 2023-01-01 부산 온도 6
3 2023-01-02 부산 온도 7
4 2023-01-01 서울 습도 55
5 2023-01-02 서울 습도 60
6 2023-01-01 부산 습도 80
7 2023-01-02 부산 습도 85
1.3 stack()과 unstack()을 사용한 데이터 변환
- stack(): 열 데이터를 인덱스 하위 레벨로 이동.
- unstack(): 인덱스를 열로 이동하여 원래 구조 복원.
# 스택
stacked_df = pivot_df.stack()
print(stacked_df)
# 언스택
unstacked_df = stacked_df.unstack()
print(unstacked_df)
스택 결과:
날짜 도시
2023-01-01 부산 6
서울 2
2023-01-02 부산 7
서울 3
dtype: int64
언스택 결과:
도시 부산 서울
날짜
2023-01-01 6 2
2023-01-02 7 3
2. 데이터프레임 크기 조정
데이터프레임의 크기를 조정하려면 열 추가, 행 삭제, 데이터 병합 등의 작업을 수행할 수 있습니다.
2.1 행과 열 추가
- 열 추가: 새 데이터를 할당하여 간단히 열을 추가할 수 있습니다.
# 열 추가
df['날씨'] = ['맑음', '흐림', '맑음', '흐림']
print(df)
결과:
날짜 도시 온도 습도 날씨
0 2023-01-01 서울 2 55 맑음
1 2023-01-02 서울 3 60 흐림
2 2023-01-01 부산 6 80 맑음
3 2023-01-02 부산 7 85 흐림
2.2 행과 열 삭제
- drop(): 특정 행 또는 열 삭제.
# 열 삭제
df_dropped = df.drop(columns=['습도'])
print(df_dropped)
# 행 삭제
df_dropped_row = df.drop(index=0)
print(df_dropped_row)
결과 (열 삭제):
날짜 도시 온도 날씨
0 2023-01-01 서울 2 맑음
1 2023-01-02 서울 3 흐림
2 2023-01-01 부산 6 맑음
3 2023-01-02 부산 7 흐림
결과 (행 삭제):
날짜 도시 온도 습도 날씨
1 2023-01-02 서울 3 60 흐림
2 2023-01-01 부산 6 80 맑음
3 2023-01-02 부산 7 85 흐림
2.3 데이터 병합
- concat(): 행(row) 또는 열(column) 단위로 데이터프레임 연결.
# 새로운 데이터프레임
data2 = {
'날짜': ['2023-01-03', '2023-01-04'],
'도시': ['서울', '부산'],
'온도': [5, 8],
'습도': [70, 75],
'날씨': ['맑음', '흐림']
}
df2 = pd.DataFrame(data2)
# 데이터프레임 병합
merged_df = pd.concat([df, df2], ignore_index=True)
print(merged_df)
결과:
날짜 도시 온도 습도 날씨
0 2023-01-01 서울 2 55 맑음
1 2023-01-02 서울 3 60 흐림
2 2023-01-01 부산 6 80 맑음
3 2023-01-02 부산 7 85 흐림
4 2023-01-03 서울 5 70 맑음
5 2023-01-04 부산 8 75 흐림
'[Python 기초]' 카테고리의 다른 글
[Python-Framework] Django & MVT 정리 (0) | 2024.11.27 |
---|---|
[Python-Framework] Django 정리 (0) | 2024.11.27 |
[Python-Preprocessing] Data sorting and Merging 정리 (1) | 2024.11.27 |
[Python-Libarary] Data Searching 정리 (1) | 2024.11.27 |
[Python-Library] Pandas(2) (1) | 2024.11.27 |