Home > 記事 > Python > pandas > 【Python】CSVに書き込む | to_csvメソッド

記事

【Python】CSVに書き込む | to_csvメソッド

pandasではデータをDataFrameに保持しています。このDataFrameをCSVファイルに出力するにはto_csvメソッドを用います。ここではto_csvメソッドについてのべます。

目次

  1. to_csvメソッドの使い方
  2. to_csvメソッドの実装サンプル
  3. まとめ

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

必須
必須  
※ メールアドレスは公開されません
任意
必須
Loading...  Please enter the letters of the image