LoginSignup
3
3

More than 3 years have passed since last update.

pandasでCSVを読み込む際の工夫

Last updated at Posted at 2019-09-03

データ分析をする際、CSV形式でデータが保存されている場合、pandasで read_csv 関数により、データをロードする。

pandasでは、値が欠けているセルを自動的に検出し、NaNを入れてくれる。

データに欠損値があるかどうかをロード後に確認してもいいが、データロード時に利用できる様々なオプションがある。

  • keep_default_na
  • na_values
  • na_filter

である。

以下サンプルCSVである。Favoriteのカラムには何らかの趣味を示す文字列が入って欲しいが、ダミーとして欠損値や0にしている。

"Name","Gender","Favorite"
"Alice","F","Guitar"
"Bob","M","Music"
"Carol","F",
"Cary","M","Nothing"
"Dave","M",0

オプションの指定がない場合は以下のようになる。

pd.read_csv("./test/users.csv")
Name Gender Favorite
0 Alice F Guitar
1 Bob M Music
2 Carol F NaN
3 Cary M Nothing
4 Dave M 0

keep_default_na

これはデフォルトではTrue指定されているもので、NaNのような欠損値のリストを使用するかどうかを指定するものだ。

Falseにすると指定しないためNaNが利用されない。

pd.read_csv("./test/users.csv", keep_default_na=False)
Name Gender Favorite
0 Alice F Guitar
1 Bob M Music
2 Carol F
3 Cary M Nothing
4 Dave M 0

na_values

na_values は、利用者側で欠損値となる値を決めることが可能だ

pd.read_csv("./test/users.csv", na_values=[0]) # この場合0に欠損値リストが利用される。
Name Gender Favorite
0 Alice F Guitar
1 Bob M Music
2 Carol F NaN
3 Cary M Nothing
4 Dave M NaN

keep_default_na との併用も可能だ。

pd.read_csv("./test/users.csv", keep_default_na=False, na_values=['', 0])
Name Gender Favorite
0 Alice F Guitar
1 Bob M Music
2 Carol F NaN
3 Cary M Nothing
4 Dave M NaN

Nothing という趣味がないということを意図してそうな入力も一応欠損値にできる

pd.read_csv("./test/users.csv", keep_default_na=False, na_values=['', 0, "Nothing"])
Name Gender Favorite
0 Alice F Guitar
1 Bob M Music
2 Carol F NaN
3 Cary M NaN
4 Dave M NaN

na_filter

欠損値を判定し、読み込むかどうかをきめるものだ。

pd.read_csv("./test/users.csv", na_filter=True)
Name Gender Favorite
0 Alice F Guitar
1 Bob M Music
2 Carol F NaN
3 Cary M Nothing
4 Dave M 0
pd.read_csv("./test/users.csv", na_filter=False)

Falseの場合データをそのまま読み込む。

Name Gender Favorite
0 Alice F Guitar
1 Bob M Music
2 Carol F
3 Cary M Nothing
4 Dave M 0

まとめ

読み込み時にこのようなオプションを駆使することで、前処理の手間も少し改善できるだろう

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3