見出し画像

#13 重量単価一覧表をDataFrameとして読み込む

前回の投稿で、重量単価[初期値]の推計が完了しました。
今回からは、各産業の重量単価[初期値]をもとに産業連関表の金額フローを物量フローに変換していきます。

重量単価一覧表を読み込む

「重量単価初期値一覧.ods」をCSV形式で保存し、それをpandasで読み込みます。

import pandas as pd
df_price_per_ton = pd.read_csv('重量単価初期値一覧.csv', index_col=0)
df_price_per_ton.head()

画像1

列名「重量単価初期値【円/t】」が冗長なので、列名を変更します。
こちらのサイトを参考にしました。

任意の行名・列名を変更: rename()

pandas.DataFrameのrename()メソッドを使うと任意の行名・列名を変更できる。
rename()メソッドの引数indexおよびcolumnsに、{元の値: 新しい値}のように辞書型dictで元の値と新しい値を指定する。
indexが行名でcolumnsが列名。行名・列名のいずれかだけを変更したい場合は、引数indexとcolumnsのどちらか一方だけを指定すればよい。
新たなpandas.DataFrameが返され、元のpandas.DataFrameは変更されない。
df_price_per_ton = price_per_ton.rename(columns={'重量単価初期値[円/t]': '重量単価'})
df_price_per_ton.head()

画像2

次に、列「部門名」、「推計に用いた統計資料」を削除します。
参考にしたのはこちらのサイト

DataFrameの列を指定して削除

pandas.DataFrameの行・列を指定して削除するにはdrop()メソッドを使う。
バージョン0.21.0より前は引数labelsとaxisで行・列を指定する。
0.21.0以降は引数indexまたはcolumnsが使えるようになった。
df_price_per_ton = df_price_per_ton.drop('部門名', axis=1)
df_price_per_ton = df_price_per_ton.drop('推計に用いた統計資料', axis=1)
df_price_per_ton.head()

画像3

分類コードのデータ型を文字列に変換

また、分類コードが、CSVファイルを読み込んだ際に数値と解釈されたようで、本来は文字列です。なので、データ型を文字列に変換し、3文字の分類コードには先頭に「0」をつけるようにしなければなりませんね。

df_price_per_ton['分類コード'] = df_price_per_ton['分類コード'].astype('str')
for i in range(len(df_price_per_ton)):
   if len(df_price_per_ton['分類コード'][i]) == 3:
       df_price_per_ton['分類コード'][i] = '0' + str(df_price_per_ton['分類コード'][i])
print(df_price_per_ton.dtypes)
df_price_per_ton.head()

画像4

うーん。
これでいいのか、自信がありません。
分類コードのデータ型が、objectになっているし…

サポート、本当にありがとうございます。サポートしていただいた金額は、知的サイドハッスルとして取り組んでいる、個人研究の費用に充てさせていただきますね♪