質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

9454閲覧

Pandas(Python): データを呼び出すと, Nanになる

B-Hirosuke

総合スコア22

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2018/12/02 03:32

編集2018/12/02 08:05

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での質問の仕方に「もう少しこういう風にしたら良いよ」というのがありましたら,ご教授いただけると幸いです.

よろしくお願いします.
長文失礼しました.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

can110

2018/12/02 03:43

Nanになる現象が再現できません。CSV読込後に「print(df.head())」と「print(df.info())」した結果を追記ください。
B-Hirosuke

2018/12/02 08:06

追加しました.よろしくお願いします.
can110

2018/12/02 08:29

追記ありがとうございます。データには問題ないようですね。ひとつ可能性あるので回答に書きます。
guest

回答2

0

自己解決

解決方法

can110様
色々とご教授いただきまして,ありがとうございます.
can110様の環境では,Nanが表示されなかったということを聞き,私の環境を調べました.

そして,pandasのバージョンをアップデートすることで問題を解決できました.

私は,pandas=0.18.1を使用しており,pandas=0.23.4にアップデートしました.

ありがとうございました.

投稿2018/12/02 10:08

B-Hirosuke

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

コード、CSVファイルには問題ないと思います。提示されたCSVファイルで動作確認したところ正常に'd'列の値が表示されました。

ひとつの可能性として、CSVファイルの末尾あたり、以下のように値のない行が存在していないでしょうか?
それでprintで目視確認したときに[nan]が表示されている可能性あります。

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 3,,,,,,,,, 4,,,,,,,,, 520,2,19,18,0.25,17.5,241,254,1.06,0.25 622,8,18,14,0.5,13,133,154,1.16,0.5

以下のようなコードで欠損値(nan)が含まれている行がないか分かりますので確認してみてください。

Python

1"""ファイル名: main.py""" 2 3import pandas as pd 4 5# CSVデータの読み込み 6df = pd.read_csv("inp.csv", header=0) 7 8# 欠損値(nan)が含まれる行を除いた行数と比較 9row1 = len(df) 10row2 = len(df.dropna()) 11print(row1,row2) # 5 3

投稿2018/12/02 08:37

can110

総合スコア38233

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問