【実証】2019年_金沢市のアイスクリーム支出額は全国1位!!!
ご挨拶
初めまして、とら良です。
よろしくお願いいたします!
ただいま将来のために
データ分析の勉強をしています。
最近、勉強を進めていく上で、
”アウトプットしたい”
と言う思いと、
データ分析によって
”誰かの役に立ちたい”
と言う思いが、
日に日に強くなってきました。
そこでデータ分析によって分かった、
「ごく一部の人には話のネタになりそう」
な情報と、
「分析に使用したコード」
を発信しようと思いブログを始めました🌟
ほんの少しでも
お時間頂けますと幸いです。
【本題】0.9%の人にウケる話
以前テレビで
「金沢市のアイス消費量は全国1位」
と言われていました。
今回はそれが果たして本当なのか???
テレビの情報ではなく
実際に自分で確かめてみよう💡
と言うことで、
政府が統計データを公開している
e-Stat政府統計の総合窓口より、
各地域の家計調査データを頂きました。
【データの内容】
- 2019年の2人以上の世帯
- 「アイスクリーム・シャーベット」の支出額のみ抽出
- 支出額は四半期毎に集計
それでは集計結果どうぞ
”消費量”ではなく
”支出額”にはなるのですが、
金沢市が年間平均11,888円で
本当に1位でした
(ケドめちゃくちゃ僅差)
とりあえず年間の結果を出しましたが、
四半期ごとにも集計しましたのでどうぞ
※ 各四半期の支出を累積し、
その時のTOP10を表示しています。
そのため表示されている10の地域が
入れ替わっていたりします。
例.【2019年1月~12月】で
急に高知市がランクインしたり
【分析結果】
<余談>
10月~12月のTOPは
ダントツで高知市でした。
その結果、
最後に追い上げてTOP10入りしました
と言うか、
折れ線グラフ用意しておけば良かった…(これも勉強)
番外編(下位10もどうぞ)
私の中で今回の一番の発見。
あれだけ暑い那覇市ですが
異様に支出が少ない😮
【調べてみた結果】
”アイスを食べない”
ではなく
”アイスの単価が安い”
その結果
”支出が少ない”ようです
(なるほど💡)
中締め
【今回の話まとめ】
ここまでいかがでしたでしょうか?
”0.9%の方にウケる話”
はここまでとなります。
今後もデータの分析をしつつ、
話のネタになりそうな情報を
お届けしていきます。
お時間頂きありがとうございました😄
これ以降は実際に使用したコードを
載せますので興味のある方はどうぞ。
独学でのコードのため
アドバイス頂けますと幸いです😣
実際に使用したコード
※GoogleColaboratoryを使用しています
※使用したcsvファイルは
Googleドライブに入れています
グラフに日本語表示出来るように
#日本語対応matplotlib
!pip install japanize-matplotlib
データのあるGoogleドライブの
フォルダをカレントディレクトリに
#カレントディレクトリの変更 import os #カレントディレクトリにしたいフォルダのパス os.chdir("/content/drive/My Drive/◯◯◯◯/◯◯◯◯) #Googleドライブのフォルダのパス os.getcwd()
出力結果
/content/drive/My Drive/◯◯◯◯/◯◯◯◯
必要なモジュール等をインポート
#いつも通りの作業 import numpy as np import pandas as pd import matplotlib.pyplot as plt import japanize_matplotlib import seaborn as sns %matplotlib inline sns.set_style("darkgrid") sns.set(font="IPAexGothic") #日本語フォント ice = pd.read_csv("2019_ice_city.csv") #一度スプレッドシートでデータを開くと”shift-jis”しなくて良くなった(発見) ice.head()
出力結果
tab_code 表章項目 cat01_code ... 時間軸(四半期) unit value 0 1 金額 10800150 ... 2019年1~3月期 円 1459 1 1 金額 10800150 ... 2019年4~6月期 円 2658 2 1 金額 10800150 ... 2019年7~9月期 円 3744 3 1 金額 10800150 ... 2019年10~12月期 円 1839 4 1 金額 10800150 ... 2019年1~3月期 円 1826
DataFrameの加工
#不要部分は削除 #”二人以上の世帯のうち勤労者世帯の行を削除”(全国単位のみで都市区分が無いので) ice=ice.drop(index=ice[ice["地域区分"]=="全国"].index) #削除より必要部分だけ抽出した方が楽なことに気付く ice = ice[["area_code","地域区分","time_code","時間軸(四半期)","value"]] #地域区分と時間軸を残すか迷いましたが、それほど邪魔でもないし良いかな #地域区分を数値と地名に分けて地域を新たに作成 ice['地域']=ice['地域区分'].str[6:]#データでは2019年を4期に分けてあるので、4期分をまとめる ice_2019 = ice.groupby("地域",as_index=False).sum() #購入金額を降順で並び替え ice_2019 = ice_2019.sort_values('value',ascending=False) ice_2019.head()
出力結果
地域 area_code time_code value 44 金沢市 68012 8076002230 11888 33 浜松市 88016 8076002230 11828 18 山口市 140012 8076002230 11667 36 盛岡市 12012 8076002230 11481
Top10のグラフ作成
ice_2019_top10 = ice_2019.head(10) #pandasのplotメソッドで描画 ice_2019_top10.plot.bar(x='地域',y='value',width=0.6,alpha=0.6,xticks=[],legend=False,table=True,figsize=(13,5),color="C6") plt.xlabel("",size=0) plt.title('【2019年_上位10】金沢市1位、しかし差はわずか60円!!',loc="left",fontsize=20,color='BLACK')
出力結果
積上棒グラフのための下準備
#top10のエリアをリストで抽出 area=[] for i in ice_2019_top10['地域']: area.append(i) #時間軸もリストで抽出 time=[] for i in ice['時間軸(四半期)'].unique(): time.append(i) #下準備、積上棒グラフが作成しやすいように ice_base = ice.groupby(["地域","時間軸(四半期)"])['value'].sum().unstack() ice_base = ice_base.reindex(columns=time) #2019年1~6月、1~9月の合計値を算出しておく ice_base['2019年1~6月期'] = ice_base.loc[:,'2019年1~3月期':'2019年4~6月期'].sum(axis=1) ice_base['2019年1~9月期'] = ice_base.loc[:,'2019年1~3月期':'2019年7~9月期'].sum(axis=1)
2019年1~3月
#2019年1〜3月 ice_top10_1_3 = ice_base.sort_values('2019年1~3月期',ascending=False).head(10) ice_top10_1_3.plot.bar(stacked=True,y='2019年1~3月期',width=0.6,table=True,xticks=[],alpha=0.6,figsize=(13,5),color='C0') plt.xlabel("",size=0) plt.title('【2019年1月〜3月】金沢市が1位。2位以下に約280円差をつけて引き離す',loc='left',fontsize=20)
出力結果
2019年1~6月
#2019年1〜3月+4~6月 #1~6月の合計上位10を抽出 ice_top10_1_6 = ice_base.sort_values('2019年1~6月期',ascending=False).head(10) ice_top10_1_6.plot.bar(stacked=True,y=['2019年1~3月期','2019年4~6月期'],width=0.6,table=True,xticks=[],alpha=0.6,figsize=(13,5)).legend(loc='upper right') plt.xlabel("",size=0) plt.title('【2019年1月〜6月】浜松市が1位に!金沢市に約80円差',loc='left',fontsize=20)る',loc='left',fontsize=20)
出力結果
2019年1~9月
#2019年1〜3月+4~6月+7~9月 #1~9月の合計上位10を抽出 ice_top10_1_9 = ice_base.sort_values('2019年1~9月期',ascending=False).head(10) ice_top10_1_9.plot.bar(stacked=True,y=['2019年1~3月期','2019年4~6月期','2019年7~9月期'],ylim=(0,11000),width=0.6,table=True,xticks=[],alpha=0.6,figsize=(13,5)).legend(loc='upper right') plt.xlabel("",size=0) plt.title('【2019年1月〜9月】依然浜松市が1位!金沢市との差を約290円に広げる',loc='left',fontsize=20)
出力結果
2019年1~12月
#積上棒グラフで確認 ice_top10 = pd.DataFrame() for i in area[:]: ice_top10 = pd.concat([ice_top10,ice[ice['地域']==i]]) ice_top10 = ice_top10.groupby(["地域","時間軸(四半期)"])['value'].sum().unstack() ice_top10 = ice_top10.reindex(index=area) ice_top10.plot.bar(stacked=True,y=time,width=0.6,ylim=(0,16000),table=True,xticks=[],alpha=0.6,figsize=(13,5)) plt.xlabel("",size=0) plt.title('【2019年1月〜12月】金沢市が1位に返り咲く!浜松市に約60円差',loc='left',fontsize=20)
出力結果
下位10の表示
#下位10 ice_2019_under10 = ice_2019.sort_values('value').head(10) #pandasのplotメソッドで描画 ice_2019_under10.plot.bar(x='地域',y='value',ylim=(0,12000),width=0.6,alpha=0.6,legend=False,xticks=[],table=True,figsize=(13,5),color="C4") plt.xlabel("",size=0) plt.title('【2019年_下位10】意外!! 那覇市のみ7,000円を下回る',loc='left',fontsize=20)
出力結果
これで本当の本当に最後となります。
最後までご覧頂きありがとうございます。