こんにちは!インストラクターのフクロウです!Pandasでデータをエイヤッといろいろ操作した後に、データを保存しておきたい時があります。
そんなときには、データフレームをCSVファイルに保存できるto_csvメソッドがおすすめです!データ解析・機械学習、やって終わりじゃもったいない!
この記事でto_csvをマスターして、Pythonプログラムで作ったデータをファイルとして保存するという作業をあなたの機械学習ライフに追加してみましょう!
開発環境
この記事を書くために使った開発環境は以下のとおりです。
- OS=”Ubuntu 18.04.1 LTS”
- Python 3.7.0
- Pandas 0.23.4
OSが異なっても基本的には同じ操作で記事中のプログラムは再現できるので、試してみてください!
to_csvのAPI
to_csvはDataFrameのメソッドです。引数や返り値の詳しい解説は以下のページを参照してください。
上のページは公式ドキュメントですが、引数がたくさんあって混乱しちゃうかもしれません。次の章で特に大切な部分の使い方を紹介していきます!
また、この関数はCSVに書き出す機能ですが、逆にCSVから読み込む関数もあります。これについては以下の記事解説していますよ!
to_csvの使い方
[前準備]DataFrameの作成
まずライブラリをimportします。
In [1]:
import pandas as pd
import numpy as np
from sklearn import datasets
機械学習ライブラリsklearnから、iris datasetsを読み込んでDataFrameを作ります。
# sklearnからデータセットを読み込みます
iris = datasets.load_iris()
# データセットからDataFrameを作成します。ここでは列が特徴になっていて、クラスをlabel列として追加しておきます。
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df["lable"] = [iris.target_names[i] for i in iris.target]
df.head()
CSVファイルにDataFrameを書き出す
まずは最低限の使い方。to_csvメソッドに作りたいCSVファイルの名前を渡すだけで、CSVファイルが作れます。ちなみに、区切り文字がカンマ「,」になっているのがCSVファイルです。
df.to_csv("./iris1.csv")
保存したファイルは以下のような形になっています。
区切り文字を変える
カンマ以外の区切り文字が使いたい場合を考えてみましょう。例えばTABを使いたい場合(TSVファイルと呼びます)などは、to_csvのsep引数を使います。
df.to_csv("./iris2.tsv", sep="t") # tはTABを表す特殊な記号です。
保存したファイルを見てみましょう。
ヘッダーやインデックスの扱い
DataFrameには行のインデックスや、列の名前などを扱えます。これらをCSVファイルに保存するときにどう扱うかはheader引数やindex引数で決められます。
デフォルトではどちらもCSVファイルに書き込むことになっていますが、これらの情報を削除する方法を見てみましょう。
df.to_csv("./iris3.csv",
header=False, # ヘッダー情報を削除
index=False # 行インデックスを削除
)
まとめ
この記事ではPandasのDataFrameをCSVファイルに保存する方法を解説しました。CSVファイルへの保存の要点は、
- df.to_csvメソッドを使う
- sep引数で区切り文字を変えられる
- header/index引数のTrue/Falseで行や列の名前を保存するかどうか操作できる
です。簡単なのでどんどん使ってみてくださいね!