背景
コーヒーの本を読んでいる時に、
「ブラジルのコーヒー豆輸入平均単価はx円(財務省「コーヒー輸入統計」より)」
という記述がありまして、データ触ってみたいなと思いました。
コーヒー輸入データのcsvダウンロード手順
財務省貿易統計トップページ
検索機能の使い方:ある商品の貿易を調べる
貿易統計は9桁の統計品目番号毎に集計していますので、お調べの品物についての9桁の統計品目番号で検索することができます
統計品目番号の調べ方
9桁の統計品目番号については、税関ホームページに掲載されてる輸出統計品目表(輸出の場合)や実行関税率表(輸入の場合)でお調べいただけます。
品目番号確認の説明図
輸入統計品目表(実行関税率表)(2019年4月1日版)
第2部 植物性生産品
第9類 コーヒー、茶、マテ及び香辛料
http://www.customs.go.jp/tariff/2019_4/data/j_09.htm
コーヒー(カフェインを除いてないもの)の品目番号は「090111000」っぽい
品別国別表による検索
http://www.customs.go.jp/toukei/srch/index.htm?M=01&P=0
検索結果が3000件以下の場合は、csvダウンロードできるとのこと
中身はこんな感じ。
月別では見れない?季節性も見たかった・・。
pythonで可視化してみる
# %%
import pandas as pd
PATH_IN = "../data/coffee_2018.csv"
df = pd.read_csv(PATH_IN, skiprows=8, encoding="sjis")
if False: # check
df.shape
#(45, 11)
df.head(1).T
"""
品目 0901.11-000
国 '105
国名 中華人民共和国
第1単位 NaN
第2単位 KG
当月第1数量 NaN
当月第2数量 NaN
当月金額 NaN
累計第1数量 NaN
累計第2数量 83184
累計金額 26624
"""
df.isnull().sum()
"""
品目 0
国 0
国名 0
第1単位 45
第2単位 0
当月第1数量 45
当月第2数量 45
当月金額 45
累計第1数量 45
累計第2数量 0
累計金額 0
dtype: int64
"""
# drop columns of all null
df = df.loc[:, df.isnull().sum() < 45]
if False: # check
df.shape # (45, 6)
df.head(1).T
"""
目 0901.11-000
国 '105
国名 中華人民共和国
第2単位 KG
累計第2数量 83184
累計金額 26624
"""
df.nunique()
"""
品目 1
国 45
国名 45
第2単位 1
累計第2数量 45
累計金額 45
"""
# drop columns have only one value
df = df.loc[:, df.nunique()>1]
# df.head()
"""
国 国名 累計第2数量 累計金額 en_per_kg
0 '105 中華人民共和国 83184 26624 320.061550
1 '106 台湾 347 1847 5322.766571
2 '110 ベトナム 98188365 20552045 209.312427
3 '111 タイ 75052 63408 844.854234
4 '117 フィリピン 5625 4217 749.688889
"""
# 金額単位は1000円(検索結果ページより)。kgあたり価格を算出
df["en_per_kg"] = df['累計金額'] * 1000 / df['累計第2数量']
# kgあたり単価が高い順
# df.sort_values(by="en_per_kg", ascending=False).head()
"""
618 ニューカレドニア(仏) 54 928 17185.185185
40 '548 レユニオン(仏) 201 2584 12855.721393
35 '537 セントヘレナ及びその附属諸島(英) 59 689 11677.966102
1 '106 台湾 347 1847 5322.766571
14 '304 アメリカ合衆国 97025 493972 5091.182685
"""
# kgあたり単価が安い順
# df.sort_values(by="en_per_kg", ascending=True).head()
"""
国 国名 累計第2数量 累計金額 en_per_kg
2 '110 ベトナム 98188365 20552045 209.312427
38 '542 ウガンダ 1198879 332196 277.088847
30 '410 ブラジル 111452987 35479175 318.333101
5 '118 インドネシア 30344490 9696931 319.561509
0 '105 中華人民共和国 83184 26624 320.061550
"""
import matplotlib.pyplot as plt
import seaborn as sns
import japanize_matplotlib
plt.figure(figsize=(10,4))
tmp = df.sort_values(by="en_per_kg", ascending=True)
barp = sns.barplot(data=tmp, x="国名", y="en_per_kg")
xx = barp.set_xticklabels(barp.get_xticklabels(), rotation=270)
1万円/kg越えって何だよ・・・
→ニューカレドニアのは幻のコーヒーらしいです。200gで3000円くらいで売ってる。
http://www.aqua-nc.com/netshop/shop_frame.htm
どうやらバグではなさそう。
以上
(初めてvscode使ってみた。可視化を対話的にやる設定方法が分からない。画像をコピーする方法も(上図はmacのキャプチャ機能))
(世界地図にマッピングしたい。今度やってみよう)