web-dev-qa-db-ja.com

Pandas dropna()関数が機能しない

pandasデータフレームからNA値を削除しようとしています。

私はdropna()を使用しました(データフレームからすべてのNA行を削除する必要があります)。しかし、それは機能しません。

これがコードです:

_import pandas as pd
import numpy as np
prison_data = pd.read_csv('https://andrewshinsuke.me/docs/compas-scores-two-years.csv')
_

これがデータフレームの取得方法です。次のように、デフォルトの_read_csv_メソッドは実際にNAデータポイントを_np.nan_に変換します。

_np.isnan(prison_data.head()['out_custody'][4])

Out[2]: True
_

便利なことに、DFのhead()にはすでにNaN値が含まれている(_out_custody_列に)ので、prison_data.head()を出力すると、取得する:

_   id                name   first         last compas_screening_date   sex  

0   1    miguel hernandez  miguel    hernandez            2013-08-14  Male
1   3         kevon dixon   kevon        dixon            2013-01-27  Male
2   4            ed philo      ed        philo            2013-04-14  Male
3   5         marcu brown   marcu        brown            2013-01-13  Male
4   6  bouthy pierrelouis  bouthy  pierrelouis            2013-03-26  Male

      dob  age          age_cat              race      ...        
0  1947-04-18   69  Greater than 45             Other      ...
1  1982-01-22   34          25 - 45  African-American      ...
2  1991-05-14   24     Less than 25  African-American      ...
3  1993-01-21   23     Less than 25  African-American      ...
4  1973-01-22   43          25 - 45             Other      ...

   v_decile_score  v_score_text  v_screening_date  in_custody  out_custody  

0               1           Low        2013-08-14  2014-07-07   2014-07-14
1               1           Low        2013-01-27  2013-01-26   2013-02-05
2               3           Low        2013-04-14  2013-06-16   2013-06-16
3               6        Medium        2013-01-13         NaN          NaN
4               1           Low        2013-03-26         NaN          NaN

priors_count.1 start   end event two_year_recid
0               0     0   327     0              0
1               0     9   159     1              1
2               4     0    63     0              1
3               1     0  1174     0              0
4               2     0  1102     0              0
_

ただし、prison_data.dropna()を実行しても、データフレームは変更されません。

_prison_data.dropna()
np.isnan(prison_data.head()['out_custody'][4])


Out[3]: True
_

df.dropna()は、デフォルトでNaN値を含まない新しいデータセットを返します。だから、あなたはそれを変数に割り当てる必要があります

df = df.dropna()

dfインプレースを変更する場合は、明示的に指定する必要があります

df.dropna(inplace= True)
12
rafaelc

行ごとに少なくとも1つのnanがあったため、機能していませんでした