pandasではデータをDataFrameに保持しています。このDataFrameをCSVファイルに出力するにはto_csvメソッドを用います。ここではto_csvメソッドについてのべます。
to_csvメソッドの使い方
to_csvメソッドはpandas.DataFrameをcsvファイルに出力するときに用いるメソッドです。read_csv同様、多数のパラメータがありますが、良く使うもののみ取り上げます。
パラメータの全量を知りたい場合には公式のドキュメントpanads.DataFrame.to_csvをみてください。
まずは以下の3つのパラメータを覚えましょう。
DataFrame.to_csv(ファイル名,sep=セパレータ,encoding=エンコーディング)
第一引数はファイル名かバッファです。何も指定しない場合には、標準出力に出力します。sepで区切り文字を指定します。タブ区切りにしたりカンマ区切りにしたい場合はここで指定します。encodingはどの文字コードで出力するかを指定します。
他にも色々とオプションがありますが、上記の3つを良く使うので、あとは公式ドキュメントをみてもらうのが良いとおもいます。
一つ注意するとエンコーディングをshift_jisにしている人がいますが、cp932のほうが良いです。簡単に言うとshift_jisだと文字化けする文字が多いですがcp932はWindowsで採用されていただけでなくサポートしている文字がshift_jisに比べ多く文字化けしにくいです。このあたりはどこかで解説できればとおもいます。
to_csvメソッドの実装サンプル
ここでは実際にto_csvの実装サンプルをみてみます。
読み込むcsvのサンプルは以下です、UTF-8で保存されています。
"調査年コード","調査年","地域コード","地域","A1101_総人口【人】" "2015100000","2015年度","C0101","北海道","5381733" "2015100000","2015年度","C0102","東北","8982807" "2015100000","2015年度","C0103","関東","45928765" "2015100000","2015年度","C0104","北陸","5311340" "2015100000","2015年度","C0105","東海","15031201" "2015100000","2015年度","C0106","近畿","20725433" "2015100000","2015年度","C0107","中国","7438037" "2015100000","2015年度","C0108","四国","3845534" "2015100000","2015年度","C0109","九州","13016329" "2015100000","2015年度","C0110","沖縄","1433566"
"A1101_総人口【人】"の列名を"地域人口"に変更し、行のインデックスを変更した上でcsvで出力します。エンコードはcp932にします。
まずはcsvを読み込みます。read_csvでおこなったようにread_csvメソッドを用います。
import pandas as pd
data_frame=pd.read_csv('sample1-read.csv')
行名と列名を変更するためのdictionaryを作成します。
# (調査年,地域コード)のリストrow_listを作成
row_list=zip([ str(i)[0:4] for i in data_frame['調査年コード'] ],[i for i in data_frame['地域コード']])
row_dic={k:v for k,v in enumerate([ j + '-' + i for i,j in row_list])}
column_dic={'A1101_総人口【人】':'地域人口'}
renameメソッドで行名と列名を変更します。inplace=Trueを指定しているためDataFrameの内容が直接書き換えられます。
data_frame.rename(index=row_dic,columns=column_dic,inplace=True)
最後にsample1-to.csvという名前で、cp932(マイクロソフトShift JIS)、tab区切りで出力します。
data_frame.to_csv('sample1-to.csv',sep='\t',encoding='cp932')
print(data_frame)
実際にsample1-to.csvをShift Jisを指定して開いてみてください。以下のように出力されているはずです。
調査年コード 調査年 地域コード 地域 地域人口 C0101-2015 2015100000 2015年度 C0101 北海道 5381733 C0102-2015 2015100000 2015年度 C0102 東北 8982807 C0103-2015 2015100000 2015年度 C0103 関東 45928765 C0104-2015 2015100000 2015年度 C0104 北陸 5311340 C0105-2015 2015100000 2015年度 C0105 東海 15031201 C0106-2015 2015100000 2015年度 C0106 近畿 20725433 C0107-2015 2015100000 2015年度 C0107 中国 7438037 C0108-2015 2015100000 2015年度 C0108 四国 3845534 C0109-2015 2015100000 2015年度 C0109 九州 13016329 C0110-2015 2015100000 2015年度 C0110 沖縄 1433566
まとめ
to_csvメソッドをみてみました。良く使う引数のみに絞って解説しました。詳細を知りたい場合には、公式ページをみてみてください。
Comment on this article
コメントはまだありません。
Send comments