e-Statの人口動態調査の確定数→死亡→年次→2020年とたどって,5-4「死亡月別にみた年次別死亡数及び死亡率(人口千対)」をCSV形式でダウンロードし,Excelで開く:
これは整然データになっていない。これを次のような整然データに直したい。ただし,5個の「不詳」は無視する。
年 | 月 | 死亡数 |
---|---|---|
1947 | 1 | 109940 |
1947 | 2 | 115405 |
1947 | 3 | 116996 |
… | … | … |
次のようにすればよい:
import pandas as pd df = pd.read_csv('mc040000.csv', encoding='cp932', skiprows=5, nrows=28) df.columns = ['年次', '年', '総数'] + list(range(1, 13)) + ['不詳'] df = df.melt(id_vars=['年'], value_vars=range(1, 13), var_name='月', value_name='死亡数') df['月'] = df['月'].astype(int) df = df.sort_values(by=['年', '月']) df
年 月 死亡数 0 1947 1 109940.0 28 1947 2 115405.0 56 1947 3 116996.0 84 1947 4 99403.0 112 1947 5 92456.0 .. ... .. ... 223 2020 8 111141.0 251 2020 9 106345.0 279 2020 10 116951.0 307 2020 11 117607.0 335 2020 12 132148.0
逆にこの表を元のように2次元に戻すには次のようにする:
pd.pivot_table(df, values="死亡数", columns="月", index="年")
月 1 2 3 4 ... 9 10 11 12 年 ... 1947 109940.0 115405.0 116996.0 99403.0 ... 79305.0 77592.0 78563.0 92232.0 1950 91367.0 81463.0 88905.0 71320.0 ... 66578.0 66830.0 67701.0 90629.0 1955 72754.0 63206.0 64545.0 58779.0 ... 50331.0 53397.0 57304.0 62089.0 (後略)