para - ¿Cómo obtengo un recuento resumido de datos faltantes/NaN por columna en ''pandas''?
como hacer tablas en jupyter notebook (4)
Aún no puedo hacer comentarios, pero para agregar a la respuesta de Jeff, pero si no te importó qué columnas tenían la de Nan y solo querías verificar en general, solo agrega una segunda .sum () para obtener un solo valor.
result = df.isnull().sum().sum()
result > 0
una Serie solo necesitaría una .sum () y un Panel () necesitaría tres
En R puedo ver rápidamente un recuento de datos faltantes con el comando de summary
, pero el método de DataFrame de pandas
equivalente, describe
no informa estos valores.
Supongo que puedo hacer algo como
len(mydata.index) - mydata.count()
para calcular el número de valores faltantes para cada columna, pero me pregunto si hay un mejor idioma (o si mi enfoque es correcto).
Como una pequeña adición, para obtener el porcentaje faltante en la columna DataFrame, la combinación de las respuestas de @Jeff y @ userS anteriores le permite:
df.isnull().sum()/len(df)*100
Este no es un resumen completo, pero le dará una idea rápida de sus datos a nivel de columna
def getPctMissing(series):
num = series.isnull().sum()
den = series.count()
return 100*(num/den)
Tanto la describe
como la info
informan el recuento de valores no perdidos.
In [1]: df = DataFrame(np.random.randn(10,2))
In [2]: df.iloc[3:6,0] = np.nan
In [3]: df
Out[3]:
0 1
0 -0.560342 1.862640
1 -1.237742 0.596384
2 0.603539 -1.561594
3 NaN 3.018954
4 NaN -0.046759
5 NaN 0.480158
6 0.113200 -0.911159
7 0.990895 0.612990
8 0.668534 -0.701769
9 -0.607247 -0.489427
[10 rows x 2 columns]
In [4]: df.describe()
Out[4]:
0 1
count 7.000000 10.000000
mean -0.004166 0.286042
std 0.818586 1.363422
min -1.237742 -1.561594
25% -0.583795 -0.648684
50% 0.113200 0.216699
75% 0.636036 0.608839
max 0.990895 3.018954
[8 rows x 2 columns]
In [5]: df.info()
<class ''pandas.core.frame.DataFrame''>
Int64Index: 10 entries, 0 to 9
Data columns (total 2 columns):
0 7 non-null float64
1 10 non-null float64
dtypes: float64(2)
Para obtener un recuento de desaparecidos, su solución es correcta.
In [20]: len(df.index)-df.count()
Out[20]:
0 3
1 0
dtype: int64
Podrías hacer esto también
In [23]: df.isnull().sum()
Out[23]:
0 3
1 0
dtype: int64