pandasモジュールを用いてcsvファイルを読み書きする方法をまとめました。
巨大csvファイルのデータに複雑な処理を施す場合は、csvモジュールを使用するよりもpandasモジュールを使用したほうが便利です。
csvモジュールを用いる方法は、以下の記事を参照してください。
目次
pandasモジュール
pandasモジュールは大量のデータを分析する際に便利なモジュールです。
巨大なデータの整列、グループ化、データ同士の結合など様々な処理を、pandas一つで行うことができます。
モジュールのインポート
pandasモジュールを使用するには、別途インストールが必要です。
事前にpip install pandas
を実行してインストールをしておきます。
モジュールをインポートする際は、「pd」という短縮名にしてインポートすると便利です。
様々な解説書を見ても、ほとんどが「pd」としてインポートしているので基本的にはそれに倣いましょう。
例:モジュールのインポート
import pandas as pd
csvファイルの読み込み
csvファイルの読み込み
csvファイルを読み込むには、read_csv関数を用います。read_csv関数にcsvファイルのパスを渡すと、csvファイルを読み込んでDataFrameオブジェクトを生成します。
csvファイルの1行目はヘッダーとなり、以降がデータとなります。
例:test.csvを読み込んで表示
- test.csv
A,B,C,D A0,B0,C0,D0 A1,B1,C1,D1 A2,B2,C2,D2 A3,B3,C3,D3 A4,B4,C4,D4 A5,B5,C5,D5
import pandas as pd csv_data = pd.read_csv("test.csv") print(csv_data)
出力:
A B C D 0 A0 B0 C0 D0 1 A1 B1 C1 D1 2 A2 B2 C2 D2 3 A3 B3 C3 D3 4 A4 B4 C4 D4 5 A5 B5 C5 D5
csvファイルの読み込み(ヘッダー無し)
上記の例では1行目はヘッダーとして読み込まれました。
1行目からデータとして読み込む場合は、read_csv関数のheaderオプションでNoneを指定します。
headerをNoneとしてcsvファイルを読み込んだ場合は、ヘッダーには自動的に整数値が割り振られます。
例:test.csvを1行目からデータとして読み込んで表示
- test.csv
A,B,C,D A0,B0,C0,D0 A1,B1,C1,D1 A2,B2,C2,D2 A3,B3,C3,D3 A4,B4,C4,D4 A5,B5,C5,D5
import pandas as pd csv_data = pd.read_csv("test.csv", header=None) print(csv_data)
出力:
0 1 2 3 0 A B C D 1 A0 B0 C0 D0 2 A1 B1 C1 D1 3 A2 B2 C2 D2 4 A3 B3 C3 D3 5 A4 B4 C4 D4 6 A5 B5 C5 D5
ファイルパスに日本語が含まれる場合
ファイルパスに日本語が含まれる場合は、read_csv関数のengineオプションを「python」に指定する必要があります。
engineオプションを「python」にすると処理速度が劣化するので、可能な限りファイルパスは英数字にしておく方が無難です。
例:テスト.csvを読み込んで表示
- テスト.csv
A,B,C,D A0,B0,C0,D0 A1,B1,C1,D1 A2,B2,C2,D2 A3,B3,C3,D3 A4,B4,C4,D4 A5,B5,C5,D5
import pandas as pd csv_data = pd.read_csv("テスト.csv", engine="python") print(csv_data)
出力:
A B C D 0 A0 B0 C0 D0 1 A1 B1 C1 D1 2 A2 B2 C2 D2 3 A3 B3 C3 D3 4 A4 B4 C4 D4 5 A5 B5 C5 D5
csvファイルの書き込み
csvファイルの書き込み
DataFrameオブジェクトをcsvファイルに書き出すには、to_csvメソッドを使用します。
例:test.csvを読み込み、test2.csvとして保存
- test.csv
A,B,C,D A0,B0,C0,D0 A1,B1,C1,D1 A2,B2,C2,D2 A3,B3,C3,D3 A4,B4,C4,D4 A5,B5,C5,D5
import pandas as pd read_csv = pd.read_csv("test.csv") read_csv.to_csv("test2.csv")
出力:以下の内容のtest2.csvファイルが作成される。
,A,B,C,D 0,A0,B0,C0,D0 1,A1,B1,C1,D1 2,A2,B2,C2,D2 3,A3,B3,C3,D3 4,A4,B4,C4,D4 5,A5,B5,C5,D5
ヘッダーとインデックスを除く場合
上記の例では、csvファイルにヘッダーとインデックスも一緒に出力されてしまいました。
ヘッダーとインデックスを外してcsvファイルに書き出す場合は、to_csvメソッドのオプションheaderとindexをNoneに設定する必要があります。
例:test.csvを読み込み、test2.csvとして保存
- test.csv
A,B,C,D A0,B0,C0,D0 A1,B1,C1,D1 A2,B2,C2,D2 A3,B3,C3,D3 A4,B4,C4,D4 A5,B5,C5,D5
import pandas as pd read_csv = pd.read_csv("test.csv") read_csv.to_csv("test2.csv", header=None, index=None)
出力:以下の内容のtest2.csvファイルが作成される。
A0,B0,C0,D0 A1,B1,C1,D1 A2,B2,C2,D2 A3,B3,C3,D3 A4,B4,C4,D4 A5,B5,C5,D5