pandasのDataFrame型におけるデータ書き込み/保存/出力の方法として、to_csvについて記載する。
データを整形したり、分析結果を確認した時、データの書き込みは必要となる。csvやtsvなどのテキストファイルからの定義するメソッドと使い方は似ているため、覚えやすいと思う。


この記事を読んでわかること
- csvファイルへの書き込み(to_csv)
- テキストファイル(カンマ以外の区切り文字)への書き込み(to_csv+sepオプション)
先にまとめ
# csvファイルとして(ヘッダーあり)
DataFrame型.to_csv("ファイルパス", index=False)
# csvファイルとして(ヘッダーなし)
DataFrame型.to_csv("ファイルパス", index=False, header=False)
# テキストファイル(カンマ以外の区切り文字)として(ヘッダーあり)
DataFrame型.to_csv("ファイルパス", sep="区切り文字", index=False)
# テキストファイル(カンマ以外の区切り文字)として(ヘッダーなし)
DataFrame型.to_csv("ファイルパス", sep="区切り文字", index=False, header=False)
データ書き込み(保存)
CSVファイルとして
to_csvメソッドを使えば、名前の通りcsvとして書き出される。行のindexを付けたくない場合はindexオプションをFalseにする必要がある。個人的には行Indexを書き出すケースは少ないと思うので、ここでは行Indexは書き出さない。また文字コードはデフォルトでutf-8である。(encodingオプションで変更可能)
# 書き方
## ヘッダーをつける場合
DataFrame型.to_csv("ファイルパス", index=False)
## ヘッダーを付けない場合
DataFrame型.to_csv("ファイルパス", index=False, header=False)
# サンプル
import pandas as pd
list_data = [[1, 'apple', 100],[2, 'orange', 30],[3, 'lemon', 50]]
df_list = pd.DataFrame(list_data, columns=["id","product","price"])
df_list.to_csv("data.csv", index=False)
## 以下のようなデータが保存される。(data.csv)
# id,product,price
# 1,apple,100
# 2,orange,30
# 3,lemon,50


テキストファイル(カンマ以外の区切り文字)として
上記と同じくto_csvを使い、sepオプションで区切り文字を指定すればよい。ちなみに\tはタブ区切り。
# 書き方
## ヘッダーをつける場合
DataFrame型.to_csv("ファイルパス", sep="区切り文字", index=False)
## ヘッダーを付けない場合
DataFrame型.to_csv("ファイルパス", sep="区切り文字", index=False, header=False)
# サンプル
import pandas as pd
list_data = [[1, 'apple', 100],[2, 'orange', 30],[3, 'lemon', 50]]
df_list = pd.DataFrame(list_data, columns=["id","product","price"])
df_list.to_csv("data.csv", sep='\t', index=False)
## 以下のようなデータが保存される。(data.csv)
# id product price
# 1 apple 100
# 2 orange 30
# 3 lemon 50

