Python:日本のアメリカからの小麦輸入額をプロットする

これからの季節は、冷やしうどん、冷や麦、素麺、冷やし中華、冷やしつけ麺、牛しゃぶ冷麺、冷製パスタ、クレープが美味い季節になるが、その原材料として使われる小麦を日本はアメリカからどのくらい輸入しているのかが気になったので、アメリカの小麦輸出相手国について調べてみた。何故アメリカかというと、小麦粉=メリケン粉だからである。まぁ、実際には、日本人にはうどん粉という呼び方の方が馴染みが深いんだけど。

from pandas import *
import warnings
warnings.simplefilter('ignore', FutureWarning)
from pandas import *
import matplotlib
matplotlib.rcParams['axes.grid'] = True # show gridlines by default
%matplotlib inline

df = read_csv('usa_wheat.csv',encoding='utf-8')
df.head(2)
Classification Year Period Period Desc. Aggregate Level Is Leaf Code Trade Flow Code Trade Flow Reporter Code Reporter Qty Alt Qty Unit Code Alt Qty Unit Alt Qty Netweight (kg) Gross weight (kg) Trade Value (US$) CIF Trade Value (US$) FOB Trade Value (US$) Flag
0 HS 2018 201804 April 2018 4 0 2 Exports 842 United States of America NaN NaN NaN NaN 83433.0 NaN 109414 NaN NaN 0
1 HS 2018 201804 April 2018 4 0 2 Exports 842 United States of America NaN NaN NaN NaN 27789000.0 NaN 7184031 NaN NaN 0

2 rows × 35 columns

i = df[df['Commodity Code']==110900].index
df = df.drop(i)
df=df[['Year', 'Period','Trade Flow','Reporter', 'Partner', 'Commodity','Commodity Code','Trade Value (US$)']]
df_world = df[df['Partner'] == 'World']
df_countries = df[df['Partner'] != 'World']
df_countries_imports = df_countries[df_countries['Trade Flow'] == 'Imports']
df_world_imports=df_world[df_world['Trade Flow'] == 'Imports']
df_countries_exports = df_countries[df_countries['Trade Flow'] == 'Exports']
df_world_exports=df_world[df_world['Trade Flow'] == 'Exports']
df1_countries = df_countries
print(df_world_imports['Trade Value (US$)'].aggregate(sum))
print(df_world_exports['Trade Value (US$)'].aggregate(sum))
1577738878
5702913219

アメリカは小麦を結構輸入しているようである。それと、アメリカと言えばメリケン粉というイメージがあったので、輸出量が想像以上に少なくて驚かされる。

df1=df_countries_imports.groupby(['Commodity','Commodity Code'])
df1['Trade Value (US$)'].aggregate(sum)
Commodity                                         Commodity Code
Buckwheat, millet and canary seed; other cereals  1008              110376697
Cereal groats and meal; of wheat                  110311             22703117
Starch; wheat                                     110811             12311921
Wheat and meslin                                  1001              801863897
Wheat gluten; whether or not dried                1109              422884744
Wheat or meslin flour                             1101              207598502
Name: Trade Value (US$), dtype: int64
df2=df_countries_exports.groupby(['Commodity','Commodity Code'])
df2['Trade Value (US$)'].aggregate(sum)
Commodity                                         Commodity Code
Buckwheat, millet and canary seed; other cereals  1008               102584900
Cereal groats and meal; of wheat                  110311               9801444
Starch; wheat                                     110811               2292642
Wheat and meslin                                  1001              5436882664
Wheat gluten; whether or not dried                1109                19983948
Wheat or meslin flour                             1101               131367621
Name: Trade Value (US$), dtype: int64

アメリカの小麦輸出相手国をプロットする

先ず、通貨単位をドルから円に変換する

b=df_countries_exports.groupby(['Partner'])['Trade Value (US$)'].aggregate(sum)
for i in range(len(b)):
    b[i] = b[i]*111
#b.sort_values(ascending=False)
e = b.sort_values(ascending=False)
c=[]
for i in range(len(e)):
    d = e[i]/e.sum()*100
    c.append(d)
from matplotlib.pyplot import *
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams
import matplotlib.patches as mpatches
style.use('ggplot')

rcParams["font.size"] = "18"
fp = FontProperties(fname='/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf', size=54)
rcParams['font.family'] = fp.get_name()
rcParams["font.size"] = "25"
fig, ax = subplots(figsize=(20,15))
b.sort_values(ascending=False, inplace=False).head(20).plot(kind='barh',width=.8,color='skyblue')
rc('xtick', labelsize=25)
rc('ytick', labelsize=25)
xticks(np.arange(0,9.1e10,2e10/2),
   ['{}億'.format(int(x/1e7)) if x > 0 else 0 for x in np.arange(0,9.1e9,2e9/2)])
ax.legend(["輸出額"],loc='upper right', prop={'size': 26})
for j,i in enumerate(ax.patches):
    ax.text((i.get_width()+5e8 if int(i.get_width()) < 5e10 else i.get_width()-4e10),\
     i.get_y()+.15,'{:,}{:,}{:,}円 ({:.4f}%)'.format(int(str(i.get_width())[:-8]),\
       int(str(i.get_width())[-8:-4]),int(str(i.get_width())[-4:]),c[j]) \
 if int(i.get_width()) > 1e8 else '{:,}万円 ({:.4f}%)'.format(int(str(i.get_width())[:-4]),c[j]),\
            fontsize=30, color='k');

とうもろこしと同じく、メキシコが1位、日本が2位である。両国の小麦輸入額は、とうもろこしと比べるとかなり見劣りする数字となっている。3位フィリピンが意外と言えば意外と言えなくもない。

アメリカはどこから小麦を輸入しているのか

a=df_countries_imports.groupby(['Partner'])['Trade Value (US$)'].aggregate(sum)
for i in range(len(a)):
    a[i] = a[i]*111
#a.sort_values(ascending=False)
rcParams["font.size"] = "25"
fig, ax = subplots(figsize=(20,15))
a.sort_values(ascending=False, inplace=False).head(20).plot(kind='barh',width=.8,color='skyblue')
rc('xtick', labelsize=25)
rc('ytick', labelsize=25)
xticks(np.arange(0,9.1e10,2e10/2),
   ['{}億'.format(int(x/1e7)) if x > 0 else 0 for x in np.arange(0,9.1e9,2e9/2)])
ax.legend(["輸入額"],loc='upper right', prop={'size': 26})
for j,i in enumerate(ax.patches):
    ax.text((i.get_width()+5e8 if int(i.get_width()) < 5e10 else i.get_width()-7e10),\
     i.get_y()+.15,'{:,}{:,}{:,}円 ({:.4f}%)'.format(int(str(i.get_width())[:-8]),\
       int(str(i.get_width())[-8:-4]),int(str(i.get_width())[-4:]),i.get_width()/a.sum()*100) \
 if int(i.get_width()) > 1e8 else '{:,}万円 ({:.4f}%)'.format(int(str(i.get_width())[:-4]),i.get_width()/a.sum()*100),\
            fontsize=30, color='k');

カナダが圧倒的に多いようである。アメリカは、カナダとオーストラリアから全体の7割近い小麦を輸入している。ドイツ、フランス、ポーランドの欧州三カ国からも15%近い小麦を輸入している。パスタやピザと言えばイタリアを想像するが、イタリアからの小麦輸入は意外と少ない。恐らく、パスタやピザ生地として輸入されているのだろう。それよりも気になるのが日本が20位にランクインしていることである。ちょっと気になるので詳しく調べてみることにした。

アメリカはどこからそばを輸入しているのか

groups = df_countries.groupby(['Partner','Trade Flow'])
groups.get_group(('Japan','Imports'))
Year Period Trade Flow Reporter Partner Commodity Commodity Code Trade Value (US$)
438 2018 201810 Imports United States of America Japan Wheat or meslin flour 1101 170261
538 2018 201809 Imports United States of America Japan Wheat or meslin flour 1101 333764
830 2018 201806 Imports United States of America Japan Wheat or meslin flour 1101 179667
911 2018 201807 Imports United States of America Japan Wheat or meslin flour 1101 237445
1134 2018 201808 Imports United States of America Japan Wheat or meslin flour 1101 333465
1476 2018 201804 Imports United States of America Japan Wheat or meslin flour 1101 115588
1681 2018 201803 Imports United States of America Japan Wheat or meslin flour 1101 140392
2095 2018 201801 Imports United States of America Japan Wheat or meslin flour 1101 131534
2163 2018 201802 Imports United States of America Japan Wheat or meslin flour 1101 176135
2480 2018 201805 Imports United States of America Japan Wheat or meslin flour 1101 189652
2692 2018 201811 Imports United States of America Japan Wheat or meslin flour 1101 171679
3020 2018 201812 Imports United States of America Japan Wheat or meslin flour 1101 202344

そば粉でも輸入しているのかと思ったが、普通に小麦粉かメスリン粉を輸入しているようである。アメリカがそばをどこから輸入しているのか見てみる。

gr = df_countries.groupby(['Commodity Code','Trade Flow'])
gr1 = gr.get_group((1008,'Imports'))
gr2 = gr1.groupby('Partner')
gr2['Trade Value (US$)'].aggregate(sum).sort_values(ascending=False).head(9)
Partner
Peru                  46264022
Bolivia               37494129
Canada                12762375
India                  3037277
Ecuador                1810098
China                  1609567
Russian Federation     1579892
Spain                  1539535
South Africa           1148352
Name: Trade Value (US$), dtype: int64

上記の輸入額の中には、そばの他に、きび、あわ、カナリーシード等の鳥の餌や他の雑穀も含まれている。そば自体は、主に、カナダ、ロシア、中国から輸入しているようである。ただ、韃靼そばに関しては圧倒的に中国が多いと思われる。ちなみに、世界のそば生産高上位国は、ロシア、中国、ウクライナで、そば粉を最も輸入している国は我が国日本である。そばと言えば日本だから当然と言えば当然だろう。日本の場合、中国からの輸入が最も多い。皮肉なことに、日本はアメリカからそばを輸入しているようである。

日本人の小麦消費に季節性はあるのか?

groups = df_countries.groupby(['Partner','Trade Flow'])
g = groups.get_group(('Japan','Exports'))
g = g[['Period','Trade Value (US$)']].sort_values(by='Period',ascending=True)
for i, col in enumerate(g['Trade Value (US$)']):
    g['Trade Value (US$)'].iloc[i] = col*111
group = g.groupby('Period')
g1 = group['Trade Value (US$)'].aggregate(sum)
g2 = DataFrame(g1).sort_values(by='Period',ascending=False)
l=[]
for i in range(len(f)):
    d = g1.iloc[i]/g1.sum()*100
    l.insert(0,d)
rcParams["font.size"] = "25"
fig, ax = subplots(figsize=(22,15))
g2.plot(ax=ax, kind='barh',width=.8,color='pink',legend=False)
rc('xtick', labelsize=25)
rc('ytick', labelsize=25)
xticks(np.arange(0,8.6e9,2e9/4),
   ['{}億'.format(int(x/1e8)) if x > 0 else 0 for x in np.arange(0,8.6e9,2e9/4)])
#ax.legend(["輸入額"],loc=7, prop={'size': 26})
for j,i in enumerate(ax.patches):
    ax.text((i.get_width()+8e6 if int(i.get_width()) < 5.2e9 else i.get_width()-3.5e9),\
     i.get_y()+.2,'{:,}{:,}{:,}円 ({:.3f}%)'.format(int(str(i.get_width())[:-8]),\
       int(str(i.get_width())[-8:-4]),int(str(i.get_width())[-4:]),i.get_width()/g1.sum()*100) \
 if int(i.get_width()) > 1e8 else '{:,}万円 ({:.3f}%)'.format(int(str(i.get_width())[:-4]),i.get_width()/g1.sum()*100),\
            fontsize=30, color='k');

28日という日数を考慮しても、2月の少なさが目を引く。1月が多いのは、すいとんやちくわぶ需要のためだろうと思われる。