[무역|3|Phase1&2] 자전거 수출입과 일상의 데이터 - 공공데이터포털 데이터수집 (1부)
자전거 수출입 통계
자전거는 그 형태가 상당히 다양하게 발달해 있습니다. 바퀴의 개수에 따라 외발부터, 두발, 세발, 네발 그리고 그 이상까지도 있고요. 사이드카가 붙은 것도 있고, 자전거에 부착하는 트레일러도 있습니다. 모터가 붙은 것도 있고, 그 모터가 연료를 넣는 불꽃점화식 모터인 것도 있고, 전기로 작동되는 전기모터인 것도 있습니다. 그 유형이 다양하여 HS code를 분류함에 있어서도 조금 다양한 세번으로 분류가 되고 있는데요. 자전거의 HS code를 그 유형별로 분류하는 것에 관해서는 제 네이버 블로그를 통해 그 상세를 정리해 두었습니다. 자전거의 수출입에 관심 있으신 분들께서는 해당 블로그에서 자전거 수출입요령, 세율 등의 다양한 정보를 제공해 드리고 있으니 많은 참조 부탁 드립니다.
링크 : [8712.00] (1) 자전거 HS code 분류 편
위 페이지에 정리된 내용을 기반으로 확인되는 자전거 HS code은 아래와 같이 요약됩니다.
8712.00-1000 경기용 자전거
8712.00-9020 삼륜 자전거 (어린이용 제외)
8712.00-9090 외발, 두발, 네발의 각종 자전거
8711.60-9000 전기자전거
9503.00-1100 어린이용 세발 자전거
그럼 위 HS code로 품목 수출입 실적을 조회하여 다운로드 받아 보도록 하겠습니다.
애석하게도 이 통계페이지의 데이터 제공 방식은 1개 아이템에 대해서만 조회 후 다운로드하도록 하는 방식이라서 총 5개 HS에 대해 다운로드를 위해서는 5번의 조회를 이행해야 합니다. 귀찮더라도 어쩔 수 없네요. 조회기간은 '월'방식으로 하여 2017.1 ~ 2020.5 까지로 해보겠습니다.
총 5개 파일을 다음과 같은 파일명으로 저장하였습니다.
품목별 수출입실적_경기용자전거
품목별 수출입실적_기타자전거
품목별 수출입실적_삼륜자전거
품목별 수출입실적_전기자전거
품목별 수출입실적_어린이용세발자전거
관세청 제공데이터 형식에 대해서는 Data Refining부분이 이미 필자가 작성한 지난 주제 코드에 모두 녹아 있기 때문에, 단순히 지난 시간 작성한 함수를 사용토록 하겠습니다.
그럼 이번 통계를 위해 Python파일을 먼저 생성해 보겠습니다. 파일명은 bicycleTrade.py로 하겠습니다.
이제 빈 .py파일이 생성되었는데요. 이제 지난 시간에 작성된 아래 함수코드를 이 파일에 그대로 붙여 넣고 사용해도 되겠지만 이번에는 다르게 해보겠습니다.
매번 새 파일을 만들때마다, 해당 코드를 찾아다가 복사해서 사용하는 데에는 불편함이 따릅니다. 하지만, 파이썬에서는 다른 파일에 생성한 함수를 쉽게 호출할 수 있습니다. 마치, 우리가 사용하려고 하는 pandas나 matplotlib.pyplot을 import하는 것과 같이 해당 파일명과 함수명을 import함으로서 가능하게 됩니다.
python 사용자 정의 함수 호출해 쓰기
요약하면 해당 함수를 정의한 .py파일을 별도로 만들고 해당 파일의 함수를 import하여 쓰는 것입니다.
그럼 먼저 우리의 수출입실적 시각화코드를 아래와 같이 잘라내 보겠습니다. 이 코드는 importexportCal이라는 이름을 가진 별도의 python file을 만들어 저장해 놓겠습니다.
import pandas as pd
import matplotlib.pyplot as plt
import pyautogui
from matplotlib import font_manager, rc
font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/batang.ttc").get_name()
rc('font', family=font_name)
def exportimportCal(project_Name = '3D 프린터', hs_code = '8463901000', fileName = pyautogui.prompt('파일명을 입력하시오.')):
d1 = pd.read_excel('C:\\Users\\USER\\Desktop\\블로그\\example\\' + project_Name + '\\' + fileName + '''.xlsx''')
d2 = d1.drop(d1.index[0:3])
d3 = d2.drop(d1.index[4]).reset_index()
d4 = d3.drop(['index'], axis=1)
d5 = d4.rename(columns=d4.iloc[0])
d6 = d5.drop(d5.index[0])
d6['수출금액'] = d6['수출금액'].str.replace(pat=r',', repl=r'', regex=True)
d6['수출금액'] = d6['수출금액'].astype('float64')
d6['수입금액'] = d6['수입금액'].str.replace(pat=r',', repl=r'', regex=True)
d6['무역수지'] = d6['무역수지'].str.replace(pat=r',', repl=r'', regex=True)
d6['수입금액'] = d6['수입금액'].astype('float64')
d6['무역수지'] = d6['무역수지'].astype('float64')
d7 = d6[['기간', '수출금액', '수입금액', '무역수지']]
# d8 = d7.groupby(by='국가명', as_index=False).sum()
d7.to_excel('C:\\Users\\USER\\Desktop\\블로그\\example\\' + project_Name + '\\' + 'python' + hs_code + '''.xlsx''',
sheet_name="sheet1")
x1 = d7['기간']
y1 = d7['수출금액']
y2 = -d7['수입금액']
y3 = d7['무역수지']
plt.plot(x1, y1, linestyle='solid', color='blue', marker='.', alpha=0.5)
plt.plot(x1, y2, linestyle='solid', color='red', marker='.', alpha=0.5)
plt.bar(x1, y3, color='green', alpha=1.0)
plt.tick_params(axis='x', labelcolor='black', labelsize=9)
plt.legend(labels=('수출금액', '수입금액', '무역수지'), loc='best')
plt.grid(axis='y', linestyle='-.', linewidth=0.5, color='black', alpha=0.3)
plt.grid(axis='x', linestyle='-.', linewidth=0.5, color='black', alpha=0.3)
plt.ylabel('금액(Thou.USD)')
plt.tick_params(axis='x', labelcolor='black', labelsize=8, labelrotation=90)
plt.tick_params(axis='y', labelcolor='black', labelsize=8, labelrotation=30)
plt.tight_layout()
plt.show()
지난번 코드에서 조금 수정을 했는데요. fileName도 이 함수의 인자로 넣음으로서 재활용성을 더욱 높였습니다.
인자 중 첫번째 인자인 project_Name은 default값을 '3D 프린터'로 하였는데요. 이 부분은 이 함수를 호출해 돌릴 때 값을 변경 지정해 주도록 하겠습니다. 두번째 인자인 hs_code도 함수를 project_Name인자처럼 함수를 호출할 때 지정해 줄 것이구요. 이번에 새롭게 인자로 추가한 fileName은 기존 함수내 코드라인이 아닌 함수 인자로서 함수가 실행 될 때 문의하여 받도록 하겠습니다.
그리고 이제 비어있는 bicycleTrade.py에 아래와 같은 코드를 넣겠습니다.
from blog.importexportCal import *
exportimportCal(project_Name='Bicycle', hs_code='8712001000')
매우 간단합니다.
이 2줄의 코드로 기존 정의해 둔 함수를 활용해 data set의 경로를 지정해 주기만 하면 결과물이 바로 나오게 됩니다.
코드의 의미는 아래와 같습니다.
1) from blog.importexportCal import *
이 import 구문은 파이썬 가상환경이 설치된 경로 내에 제가 만든 하위폴더인 blog폴더의 importexportCal이라는 파일로부터 포함된 모든 내용을 불러오라는 의미가 됩니다.
이 파일에는 exportimportCal이라고 명명된 함수가 하나 존재 합니다.
2) exportimportCal(project_Name='Bicycle', hs_code='8712001000')
이 코드는 exportimportCal()함수를 project_Name 인자에는 'Bicycle'이라는 값을, hs_code 인자에는 '8712001000'이라는 값을 넣어서 함수를 작동해 달라는 의미가 됩니다. 세번째 인자인 fileName은 입력을 생략하였는데요. 비록 생략하더라도 그 대입값은 pyautogui.prompt('파일명을 입력하시요.')라는 값이 default로서 대입되어 있기 때문에 해당 작업을 기본 실행합니다.
이제 이 함수는 3개 인자의 값을 받게 되어 정의된 코드의 내용데로 그 값을 돌려 주게 되는 것입니다.
이 포스팅에서는 함수의 정의와 재활용을 위한 호출방법을 알아 보았습니다.
다음 포스팅에서 우리가 받아둔 5개 data set에 대한 결과물을 확인해 보시도록 하겠습니다.
NPU(엔피유) 관세사무소
대표관세사 고장주
Tel) 031-986-7190
E-mail) sales@npucus.com
[NPU관세사무소 프로모션 페이지] https://www.tradenpu.com/npu_cus/
[무역비지니스 인텔리전스 서비스 | TradeNPU] https://www.tradenpu.com
[파이썬 실용 예제. 무역과 공공데이터] https://pdatinmylife.tistory.com
Certified Customs Broker JangJu Goh
Executive Customs Broker @ NPU Customs Consulting
CEO @ JG TradePlus
sales@npucus.com
Trade Compliance / Customs clearance management at foreign company
Working experience of Air export freight forwarding
Data Visualization / Independent development of business automation application – copyright of JGPO_Manager, JG Data Center, AutoCC and etc.
B2B consignment & direct export/import, B2C Overseas Buying Office consulting
Alibaba.com B2B trade / taobao B2C trade / Amazon.com global selling etc. Online trade regulation consulting.
Import license / Quarantine
English communication available
[TradeNPU for partnership proposal - JGTP] https://www.tradenpu.com/jgtp/
'파이썬(Python) > 자전거 수출입과 일상의 데이터' 카테고리의 다른 글
[무역|3|Plotly] 자전거 수출입과 일상의 데이터 - 공간데이터 시각화 Plotly (2부) (0) | 2020.06.24 |
---|---|
[무역|3|Plotly] 자전거 수출입과 일상의 데이터 - 공간데이터 시각화 Plotly (1부) (2) | 2020.06.23 |
[무역|3|Phase3] 자전거 수출입과 일상의 데이터 - matplotlib (0) | 2020.06.22 |