Pandasのデータフレームをcsvファイルに出力する方法

Pandasでデータフレームをcsvファイルに書き出しする方法を見ていきましょう。エクスポートはとても簡単で、to_csv()メソッドを使うだけです。引数の種類が多いので、よく使う引数を知りたいという方はじっくりご覧ください。

また、csvファイルやtxtファイルを読み込む方法を知りたい方はこちらの記事をどうぞ!

Pandasのread_csvでcsvファイルを読み込む方法 Pandasのread_tableでtxtファイルを読み込む方法

csvファイルはto_csv()で書き出せる

出力自体は非常に簡単です。以下のコードサンプルをご覧ください。ファイル名はabcd.csvで、to_csv()により簡単に書き出すことができます。

Python
import pandas as pd
# サンプルのデータフレーム
df=pd.DataFrame([[1,5,3],[60,50,300],[100,50,40],[3000,1000,2000]],
              index=['Gamma', 'Delta','Alpha','Beta'],
              columns=['B','A','C'])
df
	B	A	C
Gamma	1	5	3
Delta	60	50	300
Alpha	100	50	40
Beta	3000	1000	2000

# 出力
df.to_csv("abcd.csv")

忙しいあなたのための重要引数まとめ表

主に使う引数をまとめておきました。txtファイルへの書き出し時にもすべて使用可能です。

詳しく知りたい方は表の下からの解説をご覧ください。

columns 特定の列のみ出力
header ヘッダーの有無を指定
index インデックスの有無を指定
sep 区切り文字を指定
encoding 文字コードの指定(utf-8, shift-jis, euc_jp, cp932)
path_or_buf 読み込み元のファイルのパスやURLを指定

csvファイルの出力をマスターする

特定の列のみを書き出す方法

特定の列だけ書き出したい場合には、引数columnsに列名のリストを指定する。一列だけでもリスト形式で指定します。

Python
# C列のみを書き出す
df.to_csv("abcd.csv", columns=['C'])

ヘッダーとインデックスの有無を指定する方法

ヘッダー名とインデックス名を入れるかどうかはそれぞれの引数でTrueFalseで指定します。

Python
# ヘッダーとインデックス両方とも無し
df.to_csv("abcd.csv", header=False, index=False)

txtファイルに書き出す方法

txtファイルへの書き出しは引数で区切り文字をタブに指定することで出力できます。

Python
# sepで区切り文字を指定
df.to_csv('efgh.tsv', sep='\t')

エンコーディングの指定をする

エンコーディングは引数encodingで指定する。省略した場合はutf-8になります。もしutf-8でうまくいかない場合は、shift-jiscp932を指定するとうまくいきます。

Python
df.to_csv("abcd.csv", encoding='shift_jis')
MEMO
エンコーディングの指定を省略した際に、utf-8ではないファイルを読み込むとエラーが起きます(UnicodeDecodeError)。文字化けすることはありません。

まとめ

csv / txtファイルのエクスポート方法を解説してきました。最後にこの記事のまとめを書いておきます。

覚えておきたいポイント
  • to_csv()でcsvファイル書き出し
  • columnsで特定の列のみ出力
  • headerでヘッダーの有無を指定
  • indexでインデックスの有無を指定
  • sepでtxtファイル書き出しを選択
  • encodingでエラーを回避
  • 引数の数が多いけど、よく使うのはまとめ表の引数