「日経ソフトウェア2022年9月号 特集1 統計」をやってみた その2

日経ソフトウェア9月号 特集1 統計」を行ってみます。

 

記述統計を活用して家計簿データを分析しよう

家計簿データをもとに以下を実行します。

・データを結合する

・データを加工する

・支出金額の分布を調べる

・項目間の相関を調べる

 

家計簿データは日経ソフトウェアのWebページからダウンロードできます。

サンプルプログラムは日経ソフトウェアのWebからダウンロードできます。

以下URLから「本誌バックナンバーを見る」→「2022年9月号」→「「特集1 Pythonで学ぶ統計 記述統計編」(t12209.zip)

t12209フォルダの下のexpensesフォルダにあります。

Google Colabを開き「expenses」フォルダを作成し、その中にcsvファイルをアップロードします。

フォルダの作成は、左端にある「ファイル」アイコンをクリックし、右クリックで「新しいフォルダ」を選択し作成できます。

フォルダの作成

expensesフォルダを選択し、アップロードからcsvファイルを全てアップロードします。ファイルを全部を選択し、アップロードします。

アップロード

 

データを結合する

csvファイルを読み込み一つのデータにまとめます。

#globはファイル名やフォルダ名を取得するモジュール

#plotly.expresssはグラフを描写するモジュール

#datetimeは日付や時刻を扱うときに使用するモジュール

import pandas as pd

import glob

import plotly.express as px

import datetime

#ファイル名の取得。csvファイルまでのパスを明記

files = glob.glob("./expenses/*.csv")

#データフレームの用意

df = pd.DataFrame()

#ファイルの読み込みと結合

#dfにtmpを結合

for file in files :

  tmp  = pd.read_csv(file,encoding='S-JIS')

  df = pd.concat([df,tmp])

 

print(df.shape)

print(df.info)

 

実行結果

結合データ

 

データを加工する

データを加工していきます。

加工内容は、必要のない列の削除、不要なデータの削除、カラムの表記を英語に、dateカラムの変更です。

 

 

#分析に不必要な列の削除(axis:0で行削除、1で列削除)
df=df.drop(['計算対象','内容','保有金融機関','メモ','振替','ID'],axis=1)

#カラム名を英語表記
df.columns=['date','amount','item','sub_item']

#取引金額のマイナスをプラス
df=df[df['amount']<0]
df['amount'] = -1*df['amount']

#不要なデータの削除
df =df[df['item']!= '現金・カード']
df =df[df['item']!= '住宅']
df =df[df['item']!= '未分類']

#dateカラムの型を変更
df['date']=pd.to_datetime(df['date'])
df['month']=df['date'].dt.month
df['week']=df['date'].dt.isocalendar().week
df['dow']=df['date'].dt.dayofweek

#カラムの整理
df=df.reindex(columns=['date','month','week','dow','item','sub_item','amount'])
df=df.sort_values('date')
print(df.info)

 

 

実行結果

データ加工後

 支出金額の分布を確認

加工データに対してヒストグラムと箱ひげ図を表示します。

ヒストグラム++箱ひげ図

 

describe関数を使用してデータの各値を確認します。

describe

count:データの数

mean:平均値

std :標準偏差

min :最小値

max :最大値

 

実行結果より支出の大半が1000円以下で、一番高い買い物は42980円であることがわかります。

高額購入品の行を表示ししてみます。22000円より高い買い物を表示してみます。

 

高額支出

項目間の相関

各項目の相関を求めるため、データを縦から横向きに変換します。

ピボットテーブル

週ごとの支出金額を集計したデータができました。これらのデータをヒストグラムで見ていきます。

ヒストグラム

相関係数はcorr関数で求めることができます。

相関係数

 

相関関係をヒートマップで可視化することで相関の強弱がわかります。

ヒートマップ

色の明るいところが相関が大きいことを表しています。この図から

「衣服・美容」と「交際費」

「通信費」と「水道・光熱費」

「趣味・娯楽」と「交通費」

に正の相関関係があるといえます。

 

/* -----codeの行番号----- */