- 데이터 읽기 (0~3행 skip)
- 상위 5개 데이터 확인하기
- 불필요한 행 삭제 및 인덱스 초기화
- 0, 485 행 : '총계', '설명' 에 해당하는 row 삭제
- 인덱스를 0부터 초기화
- 컬럼 데이터 타입 변경
- 수출중량~무역수지 : Object 타입 ==> float으로 데이터 타입 변경
- 연도별 무역수지 평균 및 합계
- 연도별 무역수지가 가장 적은 품목은?
▶ 데이터 읽기 (0~3행 skip)
!pip install openpyxl
import pandas as pd
import numpy as np
df = pd.read_excel('import_export.xls', skiprows=[0,1,2,3], engine='openpyxl')
df.head()
df.tail()
▶ 불필요한 행 삭제 및 인덱스 초기화
# 0, 485 행 : '총계', '설명' 에 해당하는 row 삭제
df = df.drop([0, 485])
# 인덱스를 0부터 초기화
df.index = np.arange(0,484)
# reset_index 사용
df = df.reset_index(drop=True)
▶ 컬럼 데이터 타입 변경
# 수출중량~무역수지 : Object 타입 ==> float으로 데이터 타입 변경
df.dtypes
기간 object
품목명 object
품목코드 float64
수출중량 object
수입중량 object
수출금액 object
수입금액 object
무역수지 object
dtype: object
# 방법 2
df[df.columns[3:]] = df[df.columns[3:]].astype(np.float32)
# 방법 3
df['수출중량'].replace('[,]','',regex=True,inplace=True)
df['수입중량'].replace('[,]','',regex=True,inplace=True)
df['수출금액'].replace('[,]','',regex=True,inplace=True)
df['수입금액'].replace('[,]','',regex=True,inplace=True)
df['무역수지'].replace('[,]','',regex=True,inplace=True)
df[df.columns[3:]] = df[df.columns[3:]].astype('float')
df.dtypes
기간 object
품목명 object
품목코드 float64
수출중량 float32
수입중량 float32
수출금액 float32
수입금액 float32
무역수지 float32
dtype: object
▶ 연도별 무역수지 평균 및 합계
grouped = df.groupby('기간')['무역수지'].agg(['mean','sum'])
grouped
# 멀티 인덱스에서 싱글 인덱스로 컬럼명 변경
grouped.columns = ['평균 무역수지', '총 무역수지']
grouped
# 포맷 지정
grouped.columns = ['평균 무역수지', '총 무역수지']
for col in ['평균 무역수지', '총 무역수지']:
grouped[col] = grouped[col].apply(lambda x:f'{x:,.2f}')
grouped
▶ 연도별 무역수지가 가장 적은 품목은?
grouped = df.groupby('기간')[['품목명','무역수지']]
for year, group in grouped:
print('년도:', year)
display(group.sort_values('무역수지').head(1))
print('-'*78)
# 전체에서 무역수지가 가장 적은 품목
df[df['무역수지'].min() == df['무역수지']][['기간','품목명','무역수지']]
▶ 데이터 시각화
import matplotlib.pyplot as plt
# 폰트 지정
plt.rcParams['font.family'] = 'Malgun Gothic'
# 연도별 수출금액과 수입금액의 총합
df2 = df.groupby('기간')[['수출금액', '수입금액']].sum()
df2
# 연도별 수출액과 수입액의 선 그래프 그리기
# x축=기간, y축=수출금액
plt.plot(df2.index, df2['수출금액'], 'bo--', label='수출금액')
# x축=기간, y축=수입금액
plt.plot(df2.index, df2['수입금액'], 'r^:', label='수입금액')
plt.title('연도별 수입 수출 현황')
plt.xlabel('연도')
plt.ylabel('금액')
plt.legend() # 범례표시
plt.show()
'데이터 분석 > 판다스' 카테고리의 다른 글
[Pandas] 서울시 공공자전거 대여 정보 분석 2 (0) | 2023.11.14 |
---|---|
[Pandas] 서울시 공공자전거 대여소 정보 분석 1 (0) | 2023.11.14 |
[Pandas] 국가별 알콜 섭취량 데이터 분석 (0) | 2023.11.13 |
[Pandas] 시애틀 강수량 데이터 분석 (0) | 2023.11.13 |
[Pandas] DataFrame 합치기 (0) | 2023.11.13 |