
Advent Calendar 2013 - 8
Python で解析! - DataFrame 5
今回は DataFrame の保存。計算の途中経過や結果をファイルに保存しておくことができる。
1. データの準備
では、いつもの通りのデータの準備を。
import pandas as pd
df = pd.DataFrame({
u'名前': [u'山田', u'鈴木', u'佐藤', u'木村'],
u'性別': [u'男', u'男', u'女', u'女'] ,
u'身長': [181, 173, 159, 164],
u'体重': [79, 71, 51, 52]
})
体重 名前 性別 身長
0 79 山田 男 181
1 71 鈴木 男 173
2 51 佐藤 女 159
3 52 木村 女 164
2. バイナリ形式のセーブ
DataFrame はそのまま保存できる。
df.save('hoge.pickle')
…が、save すると "save is deprecated, use to_pickle" と警告が表示されるので、to_pickle の方を使うようにする。
df.to_pickle('hoge.pickle')
保存したファイルを読み込む場合は read_pickle を使う。
df2 = pd.read_pickle('hoge.pickle')
df2
体重 名前 性別 身長
0 79 山田 男 181
1 71 鈴木 男 173
2 51 佐藤 女 159
3 52 木村 女 164
再現できた。
3. テキスト形式のセーブ
to_csv でテキスト形式で保存できる。
df.to_csv('hoge.csv')
日本語を含む場合は、encoding を指定する。
df.to_csv('hoge.csv', encoding='utf-8')
!cat hoge.csv
,体重,名前,性別,身長
0,79,山田,男,181
1,71,鈴木,男,173
2,51,佐藤,女,159
3,52,木村,女,164
タブ区切りなら、sep を指定する。
df.to_csv('hoge.tsv', encoding='utf-8', sep='\t')
!cat hoge.tsv
体重 名前 性別 身長
0 79 山田 男 181
1 71 鈴木 男 173
2 51 佐藤 女 159
3 52 木村 女 164
4. Excel 形式ののセーブ
Excel 形式でも保存できるが、そのためには xlwt をインストールしておく必要がある。
$ pip install xlwt
テキスト形式の保存より、少し手間がかかるが、次のような手順で Excel 形式で保存できる。
xl = pd.ExcelWriter('hoge.xls')
df.to_excel(xl, 'Sheet1')
xl.save()
!ls -l hoge.xls
-rw-r--r-- 1 tokutomi staff 5632 12 8 09:27 hoge.xls
pythonista ならこう書きたいところだが…。
with(pd.ExcelWriter('hoge.xls')) as xl:
df.to_excel(xl, 'Sheet1')
"AttributeError: __exit__" とのことで、with には対応してないようだ。残念…。
そういえば、さらっと '!cat' や '!ls' のようにシェルコマンドを書いているが、 ipython から抜けずにシェルコマンドを使えて便利である。実は先頭の '!' を付けずに 'ls' とだけしても使えるのだが、同じ変数名があったりなどすると、そちらが優先されるので、 '!' を付けて実行する方が確実だろう。
今回は、こんなところで。