LoginSignup
3
4

More than 3 years have passed since last update.

(備忘)財務省貿易統計データの探し方〜コーヒー豆が世界一高価なのはどこ?〜

Last updated at Posted at 2019-09-01

背景

コーヒーの本を読んでいる時に、
ブラジルのコーヒー豆輸入平均単価は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
image.png
検索結果が3000件以下の場合は、csvダウンロードできるとのこと
中身はこんな感じ。
image.png
月別では見れない?季節性も見たかった・・。

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)

image.png

1万円/kg越えって何だよ・・・
→ニューカレドニアのは幻のコーヒーらしいです。200gで3000円くらいで売ってる。
http://www.aqua-nc.com/netshop/shop_frame.htm
どうやらバグではなさそう。

以上

(初めてvscode使ってみた。可視化を対話的にやる設定方法が分からない。画像をコピーする方法も(上図はmacのキャプチャ機能))

(世界地図にマッピングしたい。今度やってみよう)

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4