#183 2014年(平成26年)大阪府産業連関表推計における3部門の結合
投稿#182までで、
- 粗付加価値部門
- 中間需要部門
- 最終需要部門
の3つの部門それぞれを推計したDataFrameが作成されたことになります。
今回は、上記3部門のDataFrameを結合します。
合計値の部門の値を算出し、値を代入する
それぞれのDataFrameにある「〇〇計」という部門の合計値を算出し、値を代入していきます。
粗付加価値部門の表の"9600" 粗付加価値部門計と"9700" 府内生産額
粗付加価値部門のDataFrameに
- "9600" 粗付加価値部門計
- "9700" 府内生産額
の行を追加し、合計値を代入していきます。
Pythonのコードは、以下のようになります。
code183-1
# 祖付加価値部門の表に"9600" 祖付加価値部門計の行を挿入し、祖付加価値部門計を算出
h26_adjusted_gav_df.loc["9600"] = h26_adjusted_gav_df.loc["7111":"9511", :].sum()
# 祖付加価値部門の表に"9700" 府内生産額の行を挿入し、府内生産額を代入
h26_adjusted_gav_df.loc["9700"] = h26_pro_df.loc["production"]
中間需要部門の表の最終行を"9700" 府内生産額から"7000" 内生部門計に変更
中間需要部門のDataFrameの最終行が"9700" 府内生産額になっています。この行のインデックスを"7000"に変更し、内生部門を合計した値を代入します。
Pythonのコードは、以下のようになります。
code183-2
# 中間需要部門の表の最終行(9700 府内生産額)を"7000" 内生部門計に変更
h26_adjusted_mid_df = h26_adjusted_mid_df.rename(index={"9700": "7000"})
# 行"7000"に内生部門合計値を代入
idx = "7000"
for col in h26_adjusted_mid_df.columns:
h26_adjusted_mid_df.loc[idx, col] = h26_adjusted_mid_df.loc["0111":"6911", col].sum()
最終需要部門の表の第1列に"7000" 内生部門計を挿入
次に、最終需要部門のDataFrameの第1列に"7000" 内生部門計を挿入します。挿入した列に、内生部門を合計した値を代入します。
Pythonのコードは、以下のようになります。
code183-3
# 最終需要部門の表の第1列に"7000" 内生部門計を挿入
h26_fd_df.insert(0, "7000", 0)
col = "7000"
for idx in h26_adjusted_mid_df.index:
h26_fd_df.loc[idx, col] = h26_adjusted_mid_df.loc[idx, "0111":"6911"].sum()
列"7611" 在庫純増を挿入し、値を算出
列"7611" 在庫純増を挿入し、下記の部門の合計値を代入します。
- 761101 生産者製品在庫純増
- 761102 半製品・仕掛品在庫純増
- 761103 流通在庫純増
- 761104 原材料在庫純増
Pythonのコードは、以下のようになります。
code183-4
# 列"7611" 在庫純増を挿入し、値を算出
h26_fd_df.insert(8, "7611", (h26_fd_df["761101"] + h26_fd_df["761102"]
+ h26_fd_df["761103"] + h26_fd_df["761104"]
)
)
列"780000" 府内最終需要計を挿入し、値を算出
列"780000" 府内最終需要計を挿入し、値を算出します。
Pythonのコードは、以下のようになります。
code183-5
# 列"780000" 府内最終需要計を算出し、値を代入
h26_fd_df["780000"] = (h26_fd_df["711100"] + h26_fd_df["721100"]
+ h26_fd_df["721200"] + h26_fd_df["7311"]
+ h26_fd_df["7311"] + h26_fd_df["741100"]
+ h26_fd_df["751100"] + h26_fd_df["7611"]
+ h26_fd_df["771100"]
)
列"790000" 府内需要合計を算出し、値を代入
列"790000" 府内需要合計を算出し、値を代入します。
Pythonのコードは、以下のようになります。
code183-6
# 列"790000" 府内需要合計を算出し、値を代入
h26_fd_df["790000"] = h26_fd_df["7000"] + h26_fd_df["780000"]
列"8100" 輸出を挿入し、値を算出
列"8100" 輸出を挿入し、列"810101 輸出(普通貿易)と列"810102 輸出(特殊貿易)との合計額を代入します。
Pythonのコードは、以下のようになります。
code183-7
# 列"8100" 輸出を挿入し、値を算出
h26_fd_df.insert(16, "8011", h26_fd_df["801101"] + h26_fd_df["801102"])
列"810000" 輸出計を算出
列"810000" 輸出計を算出します。
Pythonのコードは、以下のようになります。
code183-8
# 列"810000" 輸出計を算出
h26_fd_df["810000"] = h26_fd_df["8011"] + h26_fd_df["801200"]
列"830000" 最終需要計を算出
列"830000" 最終需要計を算出します。
Pythonのコードは、以下のようになります。
code183-9
# 列"830000" 最終需要計を算出
h26_fd_df["830000"] = (h26_fd_df["780000"]
+ h26_fd_df["810000"]
+ h26_fd_df["821100"]
)
列"8400" 需要合計を挿入し、値を算出
列"8400" 需要合計を挿入し、値を算出します。
Pythonのコードは、以下のようになります。
code183-10
# 列"8400" 需要合計を挿入し、値を算出
h26_fd_df.insert(23, "8400", h26_fd_df["7000"] + h26_fd_df["830000"])
列"851100" (控除)輸入を算出
列"851100" (控除)輸入を算出します。
Pythonのコードは、以下のようになります。
code183-11
# 列"851100" (控除)輸入を算出
h26_fd_df["851100"] = h26_fd_df["851101"] + h26_fd_df["851102"]
列"880000" 輸入計を算出
列"880000" 輸入計を算出します。
Pythonのコードは、以下のようになります。
code183-12
# 列"880000" 輸入計を算出
h26_fd_df["880000"] = (h26_fd_df["851101"] + h26_fd_df["851102"]
+ h26_fd_df["851200"] + h26_fd_df["861100"]
+ h26_fd_df["871100"]
)
列"900000" 最終需要部門計の算出
列"900000" 最終需要部門計を算出します。
Pythonのコードは、以下のようになります。
code183-14
# 列"900000" 最終需要部門計の算出
h26_fd_df["900000"] = (h26_fd_df["830000"] + h26_fd_df["880000"]
+ h26_fd_df["891100"]
)
9700" 府内生産額を代入
9700" 府内生産額を代入します。
Pythonのコードは、以下のようになります
code183-15
# "9700" 府内生産額を代入
h26_fd_df["970000"] = h26_pro_df.T["production"]
結合小分類で統合された列を削除
列"761101" 生産者製品在庫純増のように、結合小分類にする際に、他部門と結合されて不要になった列を削除します。
Pythonのコードは、以下のようになります。
code183-16
# 結合小分類で統合された列を削除
h26_osaka_fd_df = h26_fd_df.drop(["761101", "761102", "761103", "761104",
"801101", "801102", "851101", "851102"],axis=1)
最終需要部門のDataFrameには、4桁と6桁の最終需要部門コードが混在しています。結合小分類では、すべての産業部門コードが4桁なので、6桁の最終需要部門コードを4桁に修正します。
Pythonのコードは、以下のようになります。
code183-17
# 列コードが6桁のコードを4桁にする
for col in h26_osaka_fd_df.columns:
if len(col) == 6:
h26_osaka_fd_df = h26_osaka_fd_df.rename(columns={col:col[:4]})
各部門の表にあるNaNを0で置換する
それぞれのDataFrame内のNanを0で置換します。
fillnaメソッドを使い、引数に0を指定します。
DataFrameの結合
中間需要部門の表に粗付加価値部門の表を結合
中間需要部門のDataFrameに、粗付加価値部門のDataFrameを結合します。
Pythonのコードは、以下のようになります。
code183-18
# 中間需要部門の表に粗付加価値部門の表を結合
h26_mid_gav_df = h26_adjusted_mid_df.append(h26_adjusted_gav_df)
最終需要部門の表を結合
code182-18で作成したDataFrameに、最終需要部門のDataFrameを結合します。
Pythonのコードは、以下のようになります。
code182-19
# 中間需要部門+粗付加価値部門の表に最終需要部門の表を結合
h26_osaka_io = pd.concat([h26_mid_gav_df, h26_osaka_fd_df], axis=1)
数値を整数値で表す
産業連関表(取引基本表)では、単位が100万円で整数値となっています。よって、3つの部門を結合したDataFrameの数値を整数値で表示します。
Pythonのコードは、以下のようになります。
# 整数値の表を作成
h26_osaka_int_io = h26_osaka_io.copy()
for idx in h26_osaka_io.index:
for col in h26_osaka_io.columns:
h26_osaka_int_io.loc[idx, col] = h26_osaka_io.loc[idx, col].astype(int)
これで、2014年(平成26年)大阪府産業連関表の推計が完了したことになります。
DataFrameをCSVファイル形式で保存することにします。