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

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

新規登録して質問してみよう
ただいま回答率
85.46%
scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1248閲覧

ダミー変数を作成するとNaNが発生する

hima-mura.

総合スコア42

scikit-learn

scikit-learnは、Pythonで使用できるオープンソースプロジェクトの機械学習用ライブラリです。多くの機械学習アルゴリズムが実装されていますが、どのアルゴリズムも同じような書き方で利用できます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2021/11/22 12:29

編集2021/11/24 07:57
from sklearn.preprocessing import OneHotEncoder import random all_data=pd.read_csv('./all_data.csv',dtype=object,encoding='SHIFT-JIS') all_data['馬体重']=all_data['馬体重'].astype(int) # 馬体重のみをint型にする。 all_data.dropna(inplace=True) # NaNを含む列を削除 X=all_data.loc[:,'枠':'条件'] y=all_data.loc[:,'上位以内'] X_train,X_test,y_train,y_test=separate_train_to_test(X,y) # X,yを3:1の割合で分ける関数 # X_trainは、DataFrameに渡してある。 X_header=X_train.columns.values judge_str=[type(s)==type('object') for s in X_train.loc[random.randint(0,len(X_train)),:]] col_str=[s for s,bl in zip(X_header,judge_str) if bl] # データ値が文字(object)であるもののヘッダーを取得 col_num=[s for s,bl in zip(X_header,judge_str) if not bl] # データ値が数値であるもののヘッダーを取得(ここでは'馬体重'ヘッダーのみが該当) # カテゴリ変数のダミー化 ohe=OneHotEncoder(handle_unknown='ignore',sparse=False) X_train_trans=ohe.fit_transform(X_train[col_str]) # カテゴリー変数のみダミー化 col_str_class=[cls for ary in ohe.categories_ for cls in ary] # ダミー化したもののヘッダー # ダミー変数と連続値の結合(訓練データ) af_X_train_trans=DataFrame(X_train_trans,columns=col_str_class) af_X_train_trans[col_num]=X_train[col_num] # 訓練データを参照しカテゴリ変数のダミー変数の生成と、その結合(テストデータ) X_test_trans=ohe.transform(X_test[col_str]) af_X_test_trans=DataFrame(X_test_trans,columns=col_str_class) af_X_test_trans[col_num]=X_test[col_num] # 確認 print(f'axis=0:{X_train[col_num].isnull().any(axis=0)}') # axis=0:馬体重 False for i,s in enumerate(X_train[col_num].isnull().any(axis=1)): if s: print(i) # なにも表示されないため該当なし print('-'*20) find_NaN=af_X_train_trans.isnull().any(axis=0) for i,s in enumerate(find_NaN): if s:     print(i)   # 4120 # これは結合した'馬体重'の列 find_NaN=af_X_train_trans.isnull().any(axis=1) for i,s in enumerate(find_NaN): if s: print(i) print(af_X_train_trans['馬体重'][i]) ''' 5041 nan 5042 nan 5043 nan 5044 nan 5045 nan 5046 nan 5047 nan 5048 nan 5049 nan 5050 nan 5051 nan 5052 nan 5053 nan 5054 nan 5055 nan 5056 nan ''' print(af_X_train_trans['馬体重'].shape) # (8194,) print(af_X_train_trans.shape) # (8194, 4121)

OneHotEncoderを用いて、dropna()を用いてNaNを省いた訓練データXを最初にカテゴリー変数と連続値に分け、カテゴリー変数のみをダミー化した後に連続値と結合させる処理を施しました。ですが、ダミー化したカテゴリー変数単体と連続値にはNaNが含まれていないのに、それらを結合させると'馬体重'にNaNが発生してしまいます。
助言をお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/11/22 22:06

all_data.csvの一部(プログラムを再現できる最小限の量…例えば5行分など)を掲載できますか?
jbpb0

2021/11/23 06:59

インデントを直してください
hima-mura.

2021/11/23 13:43 編集

これで大丈夫でしょうか?下記にスクレイピングしてデータ処理し、csv形式で保存したものの一部を抜き出しました。特に、上記のコードの4行目(all_data.dropna(inplace=True))ではindex:5041~5056の部分(条件部分が空欄のため)がdropしています。なぜか、'馬体重'で発生しているNaNもindex:5041~5056の一致しているのでここが原因なのかもしれません。 着順 枠 馬名 性齢 騎手 馬体重 調教師 人気 race_id 競馬場 コース 天気 条件 上位以内 0 1 4 ヤマカツエース 牡4 池添謙一 492 池添兼雄 3 2016001 中山 芝2,000メートル 晴 良 1 1 2 5 マイネルフロスト 牡5 松岡正海 488 高木登 5 2016001 中山 芝2,000メートル 晴 良 1 2 3 6 フルーキー 牡6 M.デムーロ 490 角居勝彦 1 2016001 中山 芝2,000メートル 晴 良 1 3 4 8 ライズトゥフェイム 牡6 石川裕紀人 488 加藤征弘 6 2016001 中山 芝2,000メートル 晴 良 0 4 5 3 ステラウインド 牡7 蛯名正義 490 尾関知人 7 2016001 中山 芝2,000メートル 晴 良 0 5 6 4 ブライトエンブレム 牡4 C.ルメール 492 小島茂之 2 2016001 中山 芝2,000メートル 晴 良 0 6 7 2 スピリッツミノル 牡4 酒井学 494 本田優 9 2016001 中山 芝2,000メートル 晴 良 0 7 7 3 ネオリアリズム 牡5 戸崎圭太 496 堀宣行 4 2016001 中山 芝2,000メートル 晴 良 0 8 9 8 マイネルディーン 牡7 柴田大知 464 鹿戸雄一 11 2016001 中山 芝2,000メートル 晴 良 0 9 10 1 ロンギングダンサー 牡7 吉田豊 494 勢司和浩 10 2016001 中山 芝2,000メートル 晴 良 0 10 11 5 フラアンジェリコ 牡8 柴山雄一 516 斎藤誠 12 2016001 中山 芝2,000メートル 晴 良 0 11 12 7 バロンドゥフォール 牡6 横山典弘 490 久保田貴士 8 2016001 中山 芝2,000メートル 晴 良 0 12 13 7 メイショウカンパク 牡9 大野拓弥 484 荒川義之 13 2016001 中山 芝2,000メートル 晴 良 0 13 1 4 ウインプリメーラ 牝6 川田将雅 452 大久保龍志 3 2016002 京都 芝1,600メートル 曇 良 1 14 2 7 テイエムタイホー 牡7 浜中俊 498 鈴木孝志 13 2016002 京都 芝1,600メートル 曇 良 1 15 3 3 ミッキーラブソング 牡5 小牧太 468 橋口弘次郎 7 2016002 京都 芝1,600メートル 曇 良 1 16 4 2 シベリアンスパーブ 牡7 藤岡康太 512 手塚貴久 5 2016002 京都 芝1,600メートル 曇 良 0 17 5 1 ニンジャ 牡7 熊沢重文 476 宮徹 15 2016002 京都 芝1,600メートル 曇 良 0 18 6 4 エイシンブルズアイ 牡5 和田竜二 468 野中賢二 6 2016002 京都 芝1,600メートル 曇 良 0 19 7 6 エキストラエンド 牡7 吉田隼人 478 角居勝彦 4 2016002 京都 芝1,600メートル 曇 良 0 20 8 8 タガノエスプレッソ 牡4 菱田裕二 454 五十嵐忠男 9 2016002 京都 芝1,600メートル 曇 良 0 21 9 7 マーティンボロ 牡7 S.フォーリー 456 友道康夫 11 2016002 京都 芝1,600メートル 曇 良 0 22 10 8 トーセンスターダム 牡5 武豊 504 池江泰寿 1 2016002 京都 芝1,600メートル 曇 良 0 23 11 5 マジェスティハーツ 牡6 森一馬 496 松永昌博 12 2016002 京都 芝1,600メートル 曇 良 0 24 12 5 オメガヴェンデッタ せん5 岩田康誠 514 安田隆行 2 2016002 京都 芝1,600メートル 曇 良 0 25 13 1 バッドボーイ 牡6 幸英明 514 河内洋 16 2016002 京都 芝1,600メートル 曇 良 0 26 14 3 メイショウマンボ 牝6 武幸四郎 496 飯田祐史 10 2016002 京都 芝1,600メートル 曇 良 0 27 15 2 ケイティープライド 牡6 秋山真一郎 496 角田晃一 8 2016002 京都 芝1,600メートル 曇 良 0 28 16 6 ダイワマッジョーレ 牡7 松若風馬 442 矢作芳人 14 2016002 京都 芝1,600メートル 曇 良 0 29 17 8 ドリームバスケット 牡9 川須栄彦 464 中村均 17 2016002 京都 芝1,600メートル 曇 良 0 5012 1 2 ルヴァンスレーヴ 牡3 M.デムーロ 490 萩原清 1 2018132 中京 ダ1,800メートル 晴 良 1 5013 2 7 ウェスタールンド せん6 藤岡佑介 480 佐々木晶三 8 2018132 中京 ダ1,800メートル 晴 良 1 5014 3 5 サンライズソア 牡4 J.モレイラ 522 河内洋 3 2018132 中京 ダ1,800メートル 晴 良 1 5015 4 1 アンジュデジール 牝4 横山典弘 486 昆貢 9 2018132 中京 ダ1,800メートル 晴 良 0 5016 5 6 オメガパフューム 牡3 C.デムーロ 452 安田翔伍 4 2018132 中京 ダ1,800メートル 晴 良 0 5017 6 4 サンライズノヴァ 牡4 戸崎圭太 538 音無秀孝 5 2018132 中京 ダ1,800メートル 晴 良 0 5018 7 3 ノンコノユメ せん6 内田博幸 446 加藤征弘 6 2018132 中京 ダ1,800メートル 晴 良 0 5019 8 7 ミツバ 牡6 松山弘平 476 加用正 12 2018132 中京 ダ1,800メートル 晴 良 0 5020 9 8 ヒラボクラターシュ 牡3 四位洋文 518 大久保龍志 11 2018132 中京 ダ1,800メートル 晴 良 0 5021 10 4 アスカノロマン 牡7 太宰啓介 524 川村禎彦 15 2018132 中京 ダ1,800メートル 晴 良 0 5022 11 5 ケイティブレイブ 牡5 福永祐一 528 杉山晴紀 2 2018132 中京 ダ1,800メートル 晴 良 0 5023 12 6 センチュリオン 牡6 吉田隼人 532 田村康仁 14 2018132 中京 ダ1,800メートル 晴 良 0 5024 13 8 インカンテーション 牡8 三浦皇成 506 羽月友彦 10 2018132 中京 ダ1,800メートル 晴 良 0 5025 14 3 アポロケンタッキー 牡6 小牧太 574 山内研二 13 2018132 中京 ダ1,800メートル 晴 良 0 5026 15 2 パヴェル 牡4 M.グティエレス 496 L.モラ 7 2018132 中京 ダ1,800メートル 晴 良 0 5027 1 5 ギベオン 牡3 C.デムーロ 508 藤原 英昭 1 2018133 中京 芝2,000メートル 晴 良 1 5028 2 6 ショウナンバッハ ショウナンバッハ 牡7 鮫島 克駿 454 上原 博之 12 2018133 中京 芝2,000メートル 晴 良 1 5029 3 7 ストロングタイタン 牡5 B.アヴドゥラ 552 池江 泰寿 7 2018133 中京 芝2,000メートル 晴 良 1 5030 4 6 レイホーロマンス 牝5 丸山 元気 424 橋田 満 8 2018133 中京 芝2,000メートル 晴 良 0 5031 5 7 メートルダール 牡5 福永 祐一 486 戸田 博文 3 2018133 中京 芝2,000メートル 晴 良 0 5032 6 1 エンジニア 牡5 北村 宏司 482 牧 光二 6 2018133 中京 芝2,000メートル 晴 良 0 5033 7 4 マサハヤドリーム 牡6 北村 友一 474 今野 貞一 13 2018133 中京 芝2,000メートル 晴 良 0 5034 8 8 マイスタイル 牡4 田中 勝春 460 昆 貢 2 2018133 中京 芝2,000メートル 晴 良 0 5035 9 2 アメリカズカップ 牡4 松山 弘平 448 音無 秀孝 10 2018133 中京 芝2,000メートル 晴 良 0 5036 10 5 ドレッドノータス せん5 中谷 雄太 458 矢作 芳人 4 2018133 中京 芝2,000メートル 晴 良 0 5037 11 4 ハクサンルドルフ 牡5 藤岡 康太 476 西園 正都 9 2018133 中京 芝2,000メートル 晴 良 0 5038 12 3 エテルナミノル 牝5 四位 洋文 468 本田 優 11 2018133 中京 芝2,000メートル 晴 良 0 5039 13 3 グレイル 牡3 津村 明秀 494 野中 賢二 5 2018133 中京 芝2,000メートル 晴 良 0 5040 14 8 スズカディープ スズカディープ せん6 岩崎 翼 428 橋田 満 14 2018133 中京 芝2,000メートル 晴 良 0 5041 1 1 コパノキッキング せん3 柴田 大知 480 村山 明 1 2018134 中山 ダ1,200メートル 曇 1 5042 2 6 サイタスリーレッド 牡5 津村 明秀 488 池添 兼雄 11 2018134 中山 ダ1,200メートル 曇 1 5043 3 1 キタサンミカヅキ 牡8 森 泰斗 530 佐藤 賢二 2 2018134 中山 ダ1,200メートル 曇 1 5044 4 3 タテヤマ 牡4 大野 拓弥 462 渡辺 薫彦 8 2018134 中山 ダ1,200メートル 曇 0 5045 5 2 ヴェンジェンス 牡5 石川 裕紀人 492 大根田 裕之 10 2018134 中山 ダ1,200メートル 曇 0 5046 6 7 オウケンビリーヴ 牝5 三浦 皇成 488 安田 隆行 7 2018134 中山 ダ1,200メートル 曇 0 5047 7 4 ダノングッド ダノングッド 牡6 田中 勝春 510 村山 明 12 2018134 中山 ダ1,200メートル 曇 0 5048 8 4 ハットラブ 牝4 横山 典弘 482 菊沢 隆徳 3 2018134 中山 ダ1,200メートル 曇 0 5049 9 2 キングズガード 牡7 内田 博幸 472 寺島 良 5 2018134 中山 ダ1,200メートル 曇 0 5050 10 5 ネロ 牡7 瀧川 寿希也 478 森 秀行 9 2018134 中山 ダ1,200メートル 曇 0 5051 11 8 ウインムート 牡5 松山 弘平 518 加用 正 6 2018134 中山 ダ1,200メートル 曇 0 5052 12 3 オールドベイリー 牡4 中井 裕二 468 中内田 充正 4 2018134 中山 ダ1,200メートル 曇 0 5053 13 6 ナンチンノン 牡7 国分 恭介 538 中竹 和也 13 2018134 中山 ダ1,200メートル 曇 0 5054 14 8 ヒカリブランデー 牡7 江田 照男 486 池上 昌和 16 2018134 中山 ダ1,200メートル 曇 0 5055 15 5 ノボバカラ 牡6 勝浦 正樹 512 天間 昭一 15 2018134 中山 ダ1,200メートル 曇 0 5056 16 7 ブラゾンドゥリス 牡6 藤田 菜七子 526 尾形 和幸 14 2018134 中山 ダ1,200メートル 曇 0
退会済みユーザー

退会済みユーザー

2021/11/23 21:53

スペース区切りだとCSVの正確さが抜けてしまいます。CSVファイルを直接テキストエディタで開いてコピー貼り付けをしないと、スペース区切りになってしまって「苗字と名前で区切れて何が原因でエラーが起きているか追跡困難」です。
jbpb0

2021/11/24 01:59

まだインデントが間違ってるので、直してください ほとんどの行の行頭に、スペースが四つあります 「find_NaN=af_X_train_trans.isnull().any(axis=0)」とかの行は、全角スペースが行頭にあります
hima-mura.

2021/11/24 08:00

これで大丈夫でしょうか? ,着順,枠,馬名,性齢,騎手,馬体重,調教師,人気,race_id,競馬場,コース,天気,条件,上位以内 0,1,4,ヤマカツエース,牡4,池添謙一,492,池添兼雄,3,2016001,中山,"芝2,000メートル",晴,良,1 1,2,5,マイネルフロスト,牡5,松岡正海,488,高木登,5,2016001,中山,"芝2,000メートル",晴,良,1 2,3,6,フルーキー,牡6,M.デムーロ,490,角居勝彦,1,2016001,中山,"芝2,000メートル",晴,良,1 3,4,8,ライズトゥフェイム,牡6,石川裕紀人,488,加藤征弘,6,2016001,中山,"芝2,000メートル",晴,良,0 4,5,3,ステラウインド,牡7,蛯名正義,490,尾関知人,7,2016001,中山,"芝2,000メートル",晴,良,0 5,6,4,ブライトエンブレム,牡4,C.ルメール,492,小島茂之,2,2016001,中山,"芝2,000メートル",晴,良,0 6,7,2,スピリッツミノル,牡4,酒井学,494,本田優,9,2016001,中山,"芝2,000メートル",晴,良,0 7,7,3,ネオリアリズム,牡5,戸崎圭太,496,堀宣行,4,2016001,中山,"芝2,000メートル",晴,良,0 8,9,8,マイネルディーン,牡7,柴田大知,464,鹿戸雄一,11,2016001,中山,"芝2,000メートル",晴,良,0 9,10,1,ロンギングダンサー,牡7,吉田豊,494,勢司和浩,10,2016001,中山,"芝2,000メートル",晴,良,0 10,11,5,フラアンジェリコ,牡8,柴山雄一,516,斎藤誠,12,2016001,中山,"芝2,000メートル",晴,良,0 11,12,7,バロンドゥフォール,牡6,横山典弘,490,久保田貴士,8,2016001,中山,"芝2,000メートル",晴,良,0 12,13,7,メイショウカンパク,牡9,大野拓弥,484,荒川義之,13,2016001,中山,"芝2,000メートル",晴,良,0 13,1,4,ウインプリメーラ,牝6,川田将雅,452,大久保龍志,3,2016002,京都,"芝1,600メートル",曇,良,1 14,2,7,テイエムタイホー,牡7,浜中俊,498,鈴木孝志,13,2016002,京都,"芝1,600メートル",曇,良,1 15,3,3,ミッキーラブソング,牡5,小牧太,468,橋口弘次郎,7,2016002,京都,"芝1,600メートル",曇,良,1 16,4,2,シベリアンスパーブ,牡7,藤岡康太,512,手塚貴久,5,2016002,京都,"芝1,600メートル",曇,良,0 17,5,1,ニンジャ,牡7,熊沢重文,476,宮徹,15,2016002,京都,"芝1,600メートル",曇,良,0 18,6,4,エイシンブルズアイ,牡5,和田竜二,468,野中賢二,6,2016002,京都,"芝1,600メートル",曇,良,0 19,7,6,エキストラエンド,牡7,吉田隼人,478,角居勝彦,4,2016002,京都,"芝1,600メートル",曇,良,0 20,8,8,タガノエスプレッソ,牡4,菱田裕二,454,五十嵐忠男,9,2016002,京都,"芝1,600メートル",曇,良,0 21,9,7,マーティンボロ,牡7,S.フォーリー,456,友道康夫,11,2016002,京都,"芝1,600メートル",曇,良,0 22,10,8,トーセンスターダム,牡5,武豊,504,池江泰寿,1,2016002,京都,"芝1,600メートル",曇,良,0 23,11,5,マジェスティハーツ,牡6,森一馬,496,松永昌博,12,2016002,京都,"芝1,600メートル",曇,良,0 24,12,5,オメガヴェンデッタ,せん5,岩田康誠,514,安田隆行,2,2016002,京都,"芝1,600メートル",曇,良,0 25,13,1,バッドボーイ,牡6,幸英明,514,河内洋,16,2016002,京都,"芝1,600メートル",曇,良,0 26,14,3,メイショウマンボ,牝6,武幸四郎,496,飯田祐史,10,2016002,京都,"芝1,600メートル",曇,良,0 27,15,2,ケイティープライド,牡6,秋山真一郎,496,角田晃一,8,2016002,京都,"芝1,600メートル",曇,良,0 28,16,6,ダイワマッジョーレ,牡7,松若風馬,442,矢作芳人,14,2016002,京都,"芝1,600メートル",曇,良,0 29,17,8,ドリームバスケット,牡9,川須栄彦,464,中村均,17,2016002,京都,"芝1,600メートル",曇,良,0 5012,1,2,ルヴァンスレーヴ,牡3,M.デムーロ,490,萩原清,1,2018132,中京,"ダ1,800メートル",晴,良,1 5013,2,7,ウェスタールンド,せん6,藤岡佑介,480,佐々木晶三,8,2018132,中京,"ダ1,800メートル",晴,良,1 5014,3,5,サンライズソア,牡4,J.モレイラ,522,河内洋,3,2018132,中京,"ダ1,800メートル",晴,良,1 5015,4,1,アンジュデジール,牝4,横山典弘,486,昆貢,9,2018132,中京,"ダ1,800メートル",晴,良,0 5016,5,6,オメガパフューム,牡3,C.デムーロ,452,安田翔伍,4,2018132,中京,"ダ1,800メートル",晴,良,0 5017,6,4,サンライズノヴァ,牡4,戸崎圭太,538,音無秀孝,5,2018132,中京,"ダ1,800メートル",晴,良,0 5018,7,3,ノンコノユメ,せん6,内田博幸,446,加藤征弘,6,2018132,中京,"ダ1,800メートル",晴,良,0 5019,8,7,ミツバ,牡6,松山弘平,476,加用正,12,2018132,中京,"ダ1,800メートル",晴,良,0 5020,9,8,ヒラボクラターシュ,牡3,四位洋文,518,大久保龍志,11,2018132,中京,"ダ1,800メートル",晴,良,0 5021,10,4,アスカノロマン,牡7,太宰啓介,524,川村禎彦,15,2018132,中京,"ダ1,800メートル",晴,良,0 5022,11,5,ケイティブレイブ,牡5,福永祐一,528,杉山晴紀,2,2018132,中京,"ダ1,800メートル",晴,良,0 5023,12,6,センチュリオン,牡6,吉田隼人,532,田村康仁,14,2018132,中京,"ダ1,800メートル",晴,良,0 5024,13,8,インカンテーション,牡8,三浦皇成,506,羽月友彦,10,2018132,中京,"ダ1,800メートル",晴,良,0 5025,14,3,アポロケンタッキー,牡6,小牧太,574,山内研二,13,2018132,中京,"ダ1,800メートル",晴,良,0 5026,15,2,パヴェル,牡4,M.グティエレス,496,L.モラ,7,2018132,中京,"ダ1,800メートル",晴,良,0 5027,1,5,ギベオン,牡3,C.デムーロ,508,藤原 英昭,1,2018133,中京,"芝2,000メートル",晴,良,1 5028,2,6,ショウナンバッハ ショウナンバッハ,牡7,鮫島 克駿,454,上原 博之,12,2018133,中京,"芝2,000メートル",晴,良,1 5029,3,7,ストロングタイタン,牡5,B.アヴドゥラ,552,池江 泰寿,7,2018133,中京,"芝2,000メートル",晴,良,1 5030,4,6,レイホーロマンス,牝5,丸山 元気,424,橋田 満,8,2018133,中京,"芝2,000メートル",晴,良,0 5031,5,7,メートルダール,牡5,福永 祐一,486,戸田 博文,3,2018133,中京,"芝2,000メートル",晴,良,0 5032,6,1,エンジニア,牡5,北村 宏司,482,牧 光二,6,2018133,中京,"芝2,000メートル",晴,良,0 5033,7,4,マサハヤドリーム,牡6,北村 友一,474,今野 貞一,13,2018133,中京,"芝2,000メートル",晴,良,0 5034,8,8,マイスタイル,牡4,田中 勝春,460,昆 貢,2,2018133,中京,"芝2,000メートル",晴,良,0 5035,9,2,アメリカズカップ,牡4,松山 弘平,448,音無 秀孝,10,2018133,中京,"芝2,000メートル",晴,良,0 5036,10,5,ドレッドノータス,せん5,中谷 雄太,458,矢作 芳人,4,2018133,中京,"芝2,000メートル",晴,良,0 5037,11,4,ハクサンルドルフ,牡5,藤岡 康太,476,西園 正都,9,2018133,中京,"芝2,000メートル",晴,良,0 5038,12,3,エテルナミノル,牝5,四位 洋文,468,本田 優,11,2018133,中京,"芝2,000メートル",晴,良,0 5039,13,3,グレイル,牡3,津村 明秀,494,野中 賢二,5,2018133,中京,"芝2,000メートル",晴,良,0 5040,14,8,スズカディープ スズカディープ,せん6,岩崎 翼,428,橋田 満,14,2018133,中京,"芝2,000メートル",晴,良,0 5041,1,1,コパノキッキング,せん3,柴田 大知,480,村山 明,1,2018134,中山,"ダ1,200メートル",曇,,1 5042,2,6,サイタスリーレッド,牡5,津村 明秀,488,池添 兼雄,11,2018134,中山,"ダ1,200メートル",曇,,1 5043,3,1,キタサンミカヅキ,牡8,森 泰斗,530,佐藤 賢二,2,2018134,中山,"ダ1,200メートル",曇,,1 5044,4,3,タテヤマ,牡4,大野 拓弥,462,渡辺 薫彦,8,2018134,中山,"ダ1,200メートル",曇,,0 5045,5,2,ヴェンジェンス,牡5,石川 裕紀人,492,大根田 裕之,10,2018134,中山,"ダ1,200メートル",曇,,0 5046,6,7,オウケンビリーヴ,牝5,三浦 皇成,488,安田 隆行,7,2018134,中山,"ダ1,200メートル",曇,,0 5047,7,4,ダノングッド ダノングッド,牡6,田中 勝春,510,村山 明,12,2018134,中山,"ダ1,200メートル",曇,,0 5048,8,4,ハットラブ,牝4,横山 典弘,482,菊沢 隆徳,3,2018134,中山,"ダ1,200メートル",曇,,0 5049,9,2,キングズガード,牡7,内田 博幸,472,寺島 良,5,2018134,中山,"ダ1,200メートル",曇,,0 5050,10,5,ネロ,牡7,瀧川 寿希也,478,森 秀行,9,2018134,中山,"ダ1,200メートル",曇,,0 5051,11,8,ウインムート,牡5,松山 弘平,518,加用 正,6,2018134,中山,"ダ1,200メートル",曇,,0 5052,12,3,オールドベイリー,牡4,中井 裕二,468,中内田 充正,4,2018134,中山,"ダ1,200メートル",曇,,0 5053,13,6,ナンチンノン,牡7,国分 恭介,538,中竹 和也,13,2018134,中山,"ダ1,200メートル",曇,,0 5054,14,8,ヒカリブランデー,牡7,江田 照男,486,池上 昌和,16,2018134,中山,"ダ1,200メートル",曇,,0 5055,15,5,ノボバカラ,牡6,勝浦 正樹,512,天間 昭一,15,2018134,中山,"ダ1,200メートル",曇,,0 5056,16,7,ブラゾンドゥリス,牡6,藤田 菜七子,526,尾形 和幸,14,2018134,中山,"ダ1,200メートル",曇,,0
jbpb0

2021/11/24 11:42

af_X_train_trans=DataFrame(X_train_trans,columns=col_str_class) のすぐ後に、 print(af_X_train_trans.index) print(X_train[col_num].index) を追加して実行して、結合する両者の行名が一致してるか、確認してみてください もし、「af_X_train_trans」の行名のうちで、「X_train[col_num]」の行名に含まれないものがあれば、「af_X_train_trans」のその行の「馬体重」は af_X_train_trans[col_num]=X_train[col_num] で代入されないため、「NaN」になります 「af_X_test_trans」の行名と「X_test[col_num]」の行名も、同様に調べてみてください 「X_train_trans」と「X_test_trans」は行名を持たないnumpy配列なので、それらを経由して作成された「af_X_train_trans」と「af_X_test_trans」の行名は、元々の「all_data」の行名とは無関係で、どちらも0からの連番になってると思います つまり、「af_X_train_trans」と「af_X_test_trans」の行名は、ある程度重複してるはずです 一方、「X_train[col_num]」と「X_test[col_num]」は、元々の「all_data」からpandasのデータフレームのまま変換されているので、「all_data」の行名を継承してるため、「X_train[col_num]」と「X_test[col_num]」で重複する行名は無いはずです したがって、 ・「af_X_train_trans」の行名と「X_train[col_num]」の行名が全部一致する ・「af_X_test_trans」の行名と「X_test[col_num]」の行名が全部一致する が、両方同時に成立することはあり得ないはずで、「af_X_train_trans」と「af_X_test_trans」の少なくともどちらかは、「馬体重」が「NaN」になる行が発生します
hima-mura.

2021/11/25 07:49

確かにaf_X_train_transのindexは連番でとX_train[col_num]のindexは抜けていて総数は同じでも連番ではありませんでした。4行目のall_data.dropna(inplace=True)の後にall_data=all_data.reset_index(drop=True)を加えるとNaNはなくなりました。自分でも納得できる大変丁寧な説明をありがとうございます。
guest

回答1

0

ベストアンサー

python

1af_X_train_trans=DataFrame(X_train_trans,columns=col_str_class)

のすぐ後に、

python

1print(af_X_train_trans.index) 2print(X_train[col_num].index)

を追加して実行して、結合する両者の行名が一致してるか、確認してみてください

もし、「af_X_train_trans」の行名のうちで、「X_train[col_num]」の行名に含まれないものがあれば、「af_X_train_trans」のその行の「馬体重」は

python

1af_X_train_trans[col_num]=X_train[col_num]

で代入されないため、「NaN」になります

「af_X_test_trans」の行名と「X_test[col_num]」の行名も、同様に調べてみてください

投稿2021/11/25 08:03

jbpb0

総合スコア7653

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問