0.9%の人にウケる話(多分)

"もしかしたら"話のネタになるかもです

【実証】2019年_金沢市のアイスクリーム支出額は全国1位!!!


ご挨拶

初めまして、とら良です。
よろしくお願いいたします!


ただいま将来のために
データ分析の勉強をしています。

最近、勉強を進めていく上で、
”アウトプットしたい”
と言う思いと、
データ分析によって
”誰かの役に立ちたい”
と言う思いが、
日に日に強くなってきました。

そこでデータ分析によって分かった、
「ごく一部の人には話のネタになりそう」
な情報と、
「分析に使用したコード」
を発信しようと思いブログを始めました🌟

ほんの少しでも
お時間頂けますと幸いです。

【本題】0.9%の人にウケる話

以前テレビで
金沢市のアイス消費量は全国1位」
と言われていました。
今回はそれが果たして本当なのか???

テレビの情報ではなく
実際に自分で確かめてみよう💡

と言うことで、
政府が統計データを公開している
e-Stat政府統計の総合窓口より、
各地域の家計調査データを頂きました。


【データの内容】

  • 2019年の2人以上の世帯
  • 「アイスクリーム・シャーベット」の支出額のみ抽出
  • 支出額は四半期毎に集計


それでは集計結果どうぞ

f:id:toraii:20200927055855p:plain
2019年各地域のアイスクリームの支出額(円)

”消費量”ではなく
”支出額”にはなるのですが、
金沢市年間平均11,888円
本当に1位でした
(ケドめちゃくちゃ僅差)

とりあえず年間の結果を出しましたが、
四半期ごとにも集計しましたのでどうぞ

f:id:toraii:20200927060116p:plain

f:id:toraii:20200927060149p:plain

f:id:toraii:20200927060213p:plain

f:id:toraii:20200927060245p:plain

※ 各四半期の支出を累積し、
 その時のTOP10を表示しています。
 そのため表示されている10の地域が
 入れ替わっていたりします。
 例.【2019年1月~12月】で
   急に高知市がランクインしたり

【分析結果】

  • 金沢市のライバル(勝手に)浜松市は4月~9月の夏季にめっぽう強く冬期は失速
  • 金沢市は冬季でも落ち込みが少なく年間を通して(比較的)安定

<余談>
10月~12月のTOPは
ダントツで高知市でした。
その結果、
最後に追い上げてTOP10入りしました

と言うか、
折れ線グラフ用意しておけば良かった…(これも勉強)

番外編(下位10もどうぞ)

f:id:toraii:20200927062020p:plain
2019年各地域のアイスクリームの支出額(円)

私の中で今回の一番の発見。
あれだけ暑い那覇市ですが
異様に支出が少ない😮

【調べてみた結果】
”アイスを食べない”
ではなく
”アイスの単価が安い”
その結果
”支出が少ない”ようです
(なるほど💡)

中締め

【今回の話まとめ】

  • 金沢市のアイス支出は1位

    • 年間平均支出額は11,888円

    • 冬でも他の地域に比べてアイスを購入している

    • ライバルは浜松市
  • 那覇市だけ支出額が7,000円を下回っている

ここまでいかがでしたでしょうか?
”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  ...    201913月期     円  1459
1         1   金額    10800150  ...    201946月期     円  2658
2         1   金額    10800150  ...    201979月期     円  3744
3         1   金額    10800150  ...  20191012月期     円  1839
4         1   金額    10800150  ...    201913月期     円  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')

出力結果 f:id:toraii:20200927055855p:plain


積上棒グラフのための下準備

#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)

出力結果 f:id:toraii:20200927060116p:plain


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)

出力結果 f:id:toraii:20200927060149p:plain


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)

出力結果 f:id:toraii:20200927060213p:plain


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)

出力結果 f:id:toraii:20200927060245p:plain


下位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)

出力結果 f:id:toraii:20200927062020p:plain



これで本当の本当に最後となります。
最後までご覧頂きありがとうございます。