데이터 분석/판다스

[Pandas] 품목별 수출입실적 분석

eunnys 2023. 11. 14. 14:36

품목별 수출입실적_20230232.xls
0.04MB

 

- 데이터 읽기 (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()