PandasでCSVファイルを読み込む方法について解説します。
本記事では読み込みオプションの解説ではなく、CSVファイルや CSVファイルに似たファイルの読み込み方について解説しています。
CSVファイルを読み込む
次のCSVファイルを読み込んでデータフレームを作成します。
社員番号,氏名,姓,名,生年月日,役職
001,山田 太郎,山田,太郎,1990-01-01,係長
002,田中 花子,田中,花子,1990-12-31,部長
ふつうのCSVファイルであればオプションなしで読み込むことができます。
import pandas as pd
test1_df = pd.read_csv('test1.csv')
カンマやダブルクォーテーションをカラムに含むCSVファイルを読み込む
カラムにカンマを含む場合、ダブルクォーテーションでカラムを囲みます(a,b
→ "a,b"
) 。もちろん、カンマを含んでいない場合でもダブルクォーテーションでカラムを囲んでもかまいません。
ダブルクォーテーションでカラムを囲んでいるときにカラムにダブルクォーテーションが含まれる場合はエスケープする必要があります。エスケープする場合はダブルクォーテーションを二つ重ねます(a"b
→ "a""b"
)。
次のCSVファイルを読み込んでデータフレームを作成します。
社員番号,氏名,姓,名,生年月日,役職
001,"山田,""太郎",山田,太郎,1990-01-01,係長
002,"田中,""花子",田中,花子,1990-12-31,部長
Pandasのread_csv
関数は基本的なCSVの仕様に対応しているため、特にオプションを使用せずに読み込むことができます。
import pandas as pd
test2_df = pd.read_csv('test2.csv')
タブ区切りファイルを読み込む
最近は見かけることが減りましたが、タブ区切りファイル(TSVファイル)をread_csv
関数で読み込むことができます。
次のTSVファイルを読み込んでデータフレームを作成します。
社員番号 氏名 姓 名 生年月日 役職
001 山田 太郎 山田 太郎 1990-01-01 係長
002 田中 花子 田中 花子 1990-12-31 部長
オプションなしで読み込むことはできないため、sep
で区切り文字を指定します。
import pandas as pd
test3_df = pd.read_csv('test3.csv', sep='\t')
任意の区切り文字のファイルを読み込む
出力する側の問題でダブルクォーテーションによる区切り文字が使用できない場合や出力または中間での加工の都合で、カラム内に絶対に含まれない文字を使ってファイルを出力することがあります。
先ほどのタブ区切りの応用でread_csv
関数を使って読み込むことができます。
垂直バー(|
)を区切り文字にした次のCSVファイルを読み込んでデータフレームを作成します。
社員番号|氏名|姓|名|生年月日|役職
001|山田 太郎|山田|太郎|1990-01-01|係長
002|田中 花子|田中|花子|1990-12-31|部長
TSVファイルのときと同様に、sep
で区切り文字を指定します。
import pandas as pd
test4_df = pd.read_csv('test4.csv', sep='|')
まとめ
read_csv関数を使うことで、CSVファイルやTSVファイルだけでなく、任意の区切り文字のファイルも読み込むことができます。
運用上の理由からCSVファイルでは都合が悪いケースもありますので、その場合は任意の区切り文字を使うことを検討してみてはいかがでしょうか。