Pandasでデータを呼び出すとNanになる
現在,CSVファイルをpandasで操作する練習をしています.
データフレームを作るまでは,なんとかできました.
しかし,データフレームから値を取り出そうとすると,値がNanになってしまいます.
なぜ,このようなことが起こるのかをご教授いただけないでしょうか.
ソースコード
python
1"""ファイル名: main.py""" 2 3# CSVデータの読み込み 4df = pd.read_csv("<CSVファイル>", header=0) 5# データが何個あるかを調べる 6Num_of_Data = len(df) 7# データを呼び出す 8for idx in range(Num_of_Data): 9 data = df.ix[idx] 10 d = data[["d"]].values 11 print(d)
CSVファイルの一部
csv
1d,p,d2,d1,ac,d3,a3,a1,a1a3,r 220,4,18,16,0.25,15.5,189,201,1.07,0.25 320,2,19,18,0.25,17.5,241,254,1.06,0.25 422,8,18,14,0.5,13,133,154,1.16,0.5 522,5,19.5,17,0.25,16.5,214,227,1.06,0.25 622,3,20.5,19,0.25,18.5,269,284,1.05,0.25 724,8,20,16,0.5,15,177,201,1.14,0.5 824,5,21.5,19,0.25,18.5,269,284,1.05,0.25 924,3,22.5,21,0.25,20.5,330,346,1.05,0.25 10...
ソースコードを実行した場合
$ python main.py [nan] [nan] [nan] [nan] [nan] [nan] [nan] [nan] ...
試したこと
変数dataを表示する
python
1# CSVデータの読み込み 2df = pd.read_csv("<CSVファイル>", header=0) 3# データが何個あるかを調べる 4Num_of_Data = len(df) 5# データを呼び出す 6for idx in range(Num_of_Data): 7 data = df.ix[idx] 8 print(data)
とすると
$ python main.py d 20.00 p 4.00 d2 18.00 d1 16.00 ac 0.25 d3 15.50 a3 189.00 a1 201.00 a1a3 1.07 r 0.25 Name: 0, dtype: float64 d 20.00 p 2.00 d2 19.00 d1 18.00 ac 0.25 d3 17.50 a3 241.00 a1 254.00 a1a3 1.06 r 0.25 Name: 1, dtype: float64 d 22.00 p 8.00 d2 18.00 d1 14.00 ac 0.50 d3 13.00 a3 133.00 a1 154.00 a1a3 1.16 r 0.50 Name: 2, dtype: float64 d 22.00 p 5.00 d2 19.50 d1 17.00 ac 0.25 d3 16.50 a3 214.00 a1 227.00 a1a3 1.06 r 0.25 Name: 3, dtype: float64 d 22.00 p 3.00 d2 20.50 d1 19.00 ac 0.25 d3 18.50 a3 269.00 a1 284.00 a1a3 1.05 r 0.25 Name: 4, dtype: float64 d 24.00 p 8.00 d2 20.00 d1 16.00 ac 0.50 d3 15.00 a3 177.00 a1 201.00 a1a3 1.14 r 0.50 Name: 5, dtype: float64 d 24.00 p 5.00 d2 21.50 d1 19.00 ac 0.25 d3 18.50 a3 269.00 a1 284.00 a1a3 1.05 r 0.25 Name: 6, dtype: float64 d 24.00 p 3.00 d2 22.50 d1 21.00 ac 0.25 d3 20.50 a3 330.00 a1 346.00 a1a3 1.05 r 0.25 Name: 7, dtype: float64 ...
というように,"d"
に値が入っています.
"d"
以外のデータを呼び出す
python
1"""ファイル名: main.py""" 2 3# CSVデータの読み込み 4df = pd.read_csv("<CSVファイル>", header=0) 5# データが何個あるかを調べる 6Num_of_Data = len(df) 7# データを呼び出す 8for idx in range(Num_of_Data): 9 data = df.ix[idx] 10 a3 = data[["a3"]].values 11 print(a3)
とすると
$ python main.py [189.] [241.] [133.] [214.] [269.] [177.] [269.] [330.] [227.] [330.] [398.] ...
のように,値を呼び出すことができます.
追記
python
1"""ファイル名: main.py""" 2 3# CSVデータの読み込み 4df = pd.read_csv("<CSVファイル>", header=0) 5print(df.head()) 6print(df.info())
とすると
d p d2 d1 ac d3 a3 a1 a1a3 r 0 20 4 18.0 16 0.25 15.5 189 201 1.07 0.25 1 20 2 19.0 18 0.25 17.5 241 254 1.06 0.25 2 22 8 18.0 14 0.50 13.0 133 154 1.16 0.50 3 22 5 19.5 17 0.25 16.5 214 227 1.06 0.25 4 22 3 20.5 19 0.25 18.5 269 284 1.05 0.25 <class 'pandas.core.frame.DataFrame'> RangeIndex: 161 entries, 0 to 160 Data columns (total 10 columns): d 161 non-null int64 p 161 non-null int64 d2 161 non-null float64 d1 161 non-null int64 ac 161 non-null float64 d3 161 non-null float64 a3 161 non-null int64 a1 161 non-null int64 a1a3 161 non-null float64 r 161 non-null float64 dtypes: float64(5), int64(5) memory usage: 12.7 KB None
でした.
最後に
現在,pandasの使い方を勉強してますが,わからないことが多いです.
良い本やサイトがあれば,教えていただけないでしょうか.
また,teratailでの質問の仕方に「もう少しこういう風にしたら良いよ」というのがありましたら,ご教授いただけると幸いです.
よろしくお願いします.
長文失礼しました.
回答2件
あなたの回答
tips
プレビュー