Python Code Notes

Information by python engineer

pandas csvファイルを読み書きする方法 Python

f:id:vigilantPotato:20190609112249p:plain

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