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)
行ごとに少なくとも1つのnan
があったため、機能していませんでした