前回の記事で、pandasを使ったテキストデータの読み込み方法を紹介したが、今回はデータを区切り文字で区切られたCSV形式のファイルとして、エクスポートする方法を紹介する。
コンテンツ
サンプルファイルの読み込み
前回の記事で作成したサンプルファイル(ex01.csv)を使う。
https://chusotsu-program.com/pandas-textdata-read
# ~/examples/ex01.csv
a,b,c,d,message
1,2,3,4,hoge
5,6,7,8,fuga
9,10,11,12,foo
import pandas as pd
df = pd.read_csv('examples/ex1.csv')
# a b c d message
# 0 1 2 3 4 hoge
# 1 5 6 7 8 fuga
# 2 9 10 11 12 foo
データフレームをカンマ区切りファイルに出力するto_csvメソッド
データフレームが持つto_csvメソッドは、データをカンマ区切りのファイルに書き出すことができる。
df.to_csv('examples/out.csv')
ターミナルで、書き出したファイルの中身を見てみよう。
cat ~/examples/out.csv
,a,b,c,d,message
0,1,2,3,4,hoge
1,5,6,7,8,fuga
2,9,10,11,12,foo
index・headerオプション
to_csvメソッドの引数に何も指定しないと、行列それぞれのラベルまでファイルに保存される。
これを無効化したい場合は、別途オプションでFalseを指定すると良い。
df.to_csv('examples/out2.csv', index=False, header=False)
cat ~/examples/out2.csv
1,2,3,4,hoge
5,6,7,8,fuga
9,10,11,12,foo
出力結果をコンソールに表示する
いちいちファイルに書き出しているとファイル数もどんどん増えていくので、ここからは出力結果をコンソール上で確認していくことにする。
まずはsysをインポートする。
import sys
そしてto_csvメソッドの書き出し用ファイル名をsys.stdoutとする。
df.to_csv(sys.stdout, index=False, header=False)
# 1,2,3,4,hoge
# 5,6,7,8,fuga
# 9,10,11,12,foo
これで、to_csvメソッドを実行するとファイルを書き出さずに結果をコンソール上で直接確認できるようになった。
カンマ以外の区切り文字を使用する
別の区切り文字を使用したい場合は、sepオプションを使用する。
df.to_csv(sys.stdout, sep='|', index=False, header=False)
# 1|2|3|4|hoge
# 5|6|7|8|fuga
# 9|10|11|12|foo
一部の列のみ指定して書き出す
データベースのSELECT分の要領で、一部の列のみを抜き出し、指定した順序で出力することもできる。
df.to_csv(sys.stdout, index=False, columns=['d', 'c', 'a'])
# d,c,a
# 4,3,1
# 8,7,5
# 12,11,9
シリーズをファイルに書き出す
to_csvメソッドは、データフレームだけでなくシリーズでも使うことができる。
import pandas as pd
import numpy as np
import sys
series = pd.Series(np.arange(10))
series.to_csv(sys.stdout)