Python CSV形式を扱う

open関数によるCSVファイルの入出力

一般的にデータセットは外部のファイルに格納されており、それをPythonに読み込み必要がある。CSV(Comma-Separated Values)は表形式のデータを格納するためのテキストファイルである。この形式は通常 ,で項目を区切って列挙している。区切り文字にはスペースやタブなどが使われることもある。最初の数行はコメント行や列名を格納する行となっているのが一般的。

あらかじめサンプルとなるdata.csvを作成しておく。 Google Sheetsを使用して編集してもよい。

スクリーンショット 2020-06-27 19.48.41

CSVファイルも中身はテキストデータなので、open関数を使ってファイルの読み書きができる。また、Pythonの標準ライブラリには、CSVファイルからデータを読み出す際に便利なcsvモジュールが用意されている。

スクリーンショット 2020-06-27 19.49.48

CSVファイルにデータを書き込むにはcsv.write関数を使う。open関数でファイルを開く際にnewline=''を指定しておくと、意図しない改行が入ってしまうことを防げる。writerオブジェクトのwriterowsメソッドにリストを渡すと、リストの要素がCSVファイルに書き込まれる。

スクリーンショット 2020-06-27 20.00.33

NumpyによるCSVファイルの入出力

Numpyではテキストファイルをloadtxt関数やgenfromtxt関数で読み込むことができる。データに欠損値がある場合にはgenfromtxt関数を使う。CSVファイルのデータもこれらの関数で読み込める。

CSVファイルを読み込むには区切り文字をdelimiter引数で指定する。先頭の数行が不要であればskiprows引数で読み飛ばす行数を指定する。また、読み込んだデータの型はdtype引数で指定でき、デフォルトではfloat64になる。

スクリーンショット 2020-06-27 20.01.42

usecols引数によって読み込む列を選択し、読み込む行数の上限をmax_rows引数で指定できる。読み込んだ各列を別々の配列として取得したい場合はunpack=Trueと指定しておく。

スクリーンショット 2020-06-27 20.02.36

配列をテキストファイルに出力するのがsavetxt関数である。CSVファイルとして保存する際には引数にdelimiter=','を与え、ヘッダ行とコメント行はheader引数とcomments引数で記述する。

スクリーンショット 2020-06-27 20.03.25

pandasによるCSVファイルの入出力

pandasには様々な形式のファイルやデータベースとの間でデータを入出力する機能が備わっている。CSV形式などのテキストファイルからデータを読み込みにはread_csv関数を使用する。この関数はファイルのパスまたはデータソースのURLを受け取り、そこから読み込んだデータを元にデータフレームを作成する。

スクリーンショット 2020-06-27 20.04.27

データフレームのto_csvメソッドによってデータをCSVファイルに書き出せる。出力ファイルのエンコーディングはencoding引数で設定できる(デフォルトはUTF-8)。

スクリーンショット 2020-06-27 20.05.09


この記事が気に入ったらサポートをしてみませんか?