import pandas as pd df1 = pd.read_excel( "https://www.e-stat.go.jp/stat-search/file-download?statInfId=000031577984&fileKind=0", header=None, ) df1.to_csv("data.tsv", sep="\t") # 行カウント確認 df1.notnull().sum(axis=0) # 列カウント確認 df1.notnull().sum(axis=1) df1 # テキスト埋め df1.iat[7, 7] = "男女" df1.iat[7, 10] = "年齢" df1.iat[7, 12] = df1.iat[6, 12] df1.iat[7, 13] = df1.iat[6, 13] df1.iat[10, 10] = "計" df1.iat[24, 10] = "計" df1.iat[38, 10] = "計" # 表のみ抽出 df2 = df1.iloc[7:-4, 7:-2].copy() # 英字と番号の行を削除 df2.drop([8, 9], inplace=True) # 総数・男・女 列テキスト結合 df2[7] = df2[7].fillna("") + df2[8].fillna("") + df2[9].fillna("") # 空白のところをNanに置換 df2[7].mask(df2[7] == "", inplace=True) # 前行の値をコピー df2[7].fillna(method="ffill", inplace=True) # タイトルの空白文字を除去 df2.iloc[0, :] = df2.iloc[0, :].str.replace(r"\s", "") # 不要な列を削除 df2.drop([8, 9, 11, 30, 31, 32, 33, 34, 35, 36], axis=1, inplace=True) df2.head(10) df2.to_csv("data.csv", header=False, index=False)
import matplotlib.pyplot as plt import seaborn as sns import japanize_matplotlib df = pd.read_csv("data.csv", index_col=[0,1], header=0) # 計の行削除 df.drop("計", level=1, inplace=True) df.drop(["サンプルサイズ", "15歳以上推定人口(千人)", "総数"], axis=1, inplace=True) df_man = df.loc["男", :].copy() df_man.plot(figsize=(10, 8)) # 凡例を枠外 plt.legend(bbox_to_anchor=(1.05, 1), loc="upper left", borderaxespad=0, fontsize=10) df_woman = df.loc["女", :].copy() df_woman.plot(figsize=(10, 8)) # 凡例を枠外 plt.legend(bbox_to_anchor=(1.05, 1), loc="upper left", borderaxespad=0, fontsize=10) df_all = df.loc["総数", :].copy() df_all.plot(figsize=(10, 8)) # 凡例を枠外 plt.legend(bbox_to_anchor=(1.05, 1), loc="upper left", borderaxespad=0, fontsize=10) plt.figure(figsize=(5, 10)) sns.heatmap(df_man.T, cmap="bwr") plt.savefig('man.png') plt.figure(figsize=(5, 10)) sns.heatmap(df_woman.T, cmap="bwr") plt.savefig('woman.png') plt.figure(figsize=(5, 10)) sns.heatmap(df_all.T, cmap="bwr") plt.savefig('all.png')
男
女
全体
クラスタリング
やりかたがわからない
#EDASalon
— 白戸 敬登 (@ShirotoTakato) 2019年12月17日
趣味・娯楽の種類別行動者率データはクラスタリングを試してみるのにいいデータだと思います。
K-Meansクラスタリング試してみたところ、年齢や性別ごとに趣味に結構違いがあるので面白かったです。https://t.co/uIAMDPmT58 pic.twitter.com/EGrrvbd9yT