number of을 찾고 싶은 데이터가 NaN
있으므로 임계 값보다 작 으면이 열을 삭제합니다. 나는 보았지만 이것에 대한 기능을 찾지 못했습니다. 있다value_counts
있지만 대부분의 값이 고유하고 카운트 NaN
만 원하기 때문에 속도가 느려집니다 .
답변
이 isna()
방법 (또는 isnull()
구형 팬더 버전 <0.21.0 과도 호환되는 별칭 )을 사용한 다음 합계를 사용하여 NaN 값을 계산할 수 있습니다. 한 열의 경우 :
In [1]: s = pd.Series([1,2,3, np.nan, np.nan])
In [4]: s.isna().sum() # or s.isnull().sum() for older pandas versions
Out[4]: 2
여러 열의 경우 다음과 같이 작동합니다.
In [5]: df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})
In [6]: df.isna().sum()
Out[6]:
a 1
b 2
dtype: int64
답변
난이 아닌 값 의 개수 에서 총 길이를 뺄 수 있습니다.
count_nan = len(df) - df.count()
당신은 당신의 데이터에 시간을해야합니다. 소형 Series의 경우 isnull
솔루션 과 비교하여 3 배의 속도가 향상되었습니다 .
답변
df
팬더 DataFrame 이라고 가정 합니다.
그때,
df.isnull().sum(axis = 0)
이것은 모든 열에 많은 NaN 값을 줄 것입니다.
필요한 경우 모든 행의 NaN 값
df.isnull().sum(axis = 1)
답변
가장 투표가 많은 답변을 바탕으로 각 열의 결 측값과 결 측값의 %를 미리 볼 수있는 데이터 프레임을 제공하는 함수를 쉽게 정의 할 수 있습니다.
def missing_values_table(df):
mis_val = df.isnull().sum()
mis_val_percent = 100 * df.isnull().sum() / len(df)
mis_val_table = pd.concat([mis_val, mis_val_percent], axis=1)
mis_val_table_ren_columns = mis_val_table.rename(
columns = {0 : 'Missing Values', 1 : '% of Total Values'})
mis_val_table_ren_columns = mis_val_table_ren_columns[
mis_val_table_ren_columns.iloc[:,1] != 0].sort_values(
'% of Total Values', ascending=False).round(1)
print ("Your selected dataframe has " + str(df.shape[1]) + " columns.\n"
"There are " + str(mis_val_table_ren_columns.shape[0]) +
" columns that have missing values.")
return mis_val_table_ren_columns
답변
팬더 이후 0.14.1 내 제안 여기가 구현 된 value_counts 방법에 키워드 인수를가합니다 :
import pandas as pd
df = pd.DataFrame({'a':[1,2,np.nan], 'b':[np.nan,1,np.nan]})
for col in df:
print df[col].value_counts(dropna=False)
2 1
1 1
NaN 1
dtype: int64
NaN 2
1 1
dtype: int64
답변
팬더 열에서 난 값을 계산하는 것이 빠른 방법이라면
import pandas as pd
## df1 as an example data frame
## col1 name of column for which you want to calculate the nan values
sum(pd.isnull(df1['col1']))
답변
Jupyter Notebook을 사용하는 경우 어떻습니까 ….
%%timeit
df.isnull().any().any()
또는
%timeit
df.isnull().values.sum()
또는 데이터의 NaN이 어디에 있습니까?
df.isnull().any()