Tengo datos, en los que quiero encontrar el número NaN
, de modo que si es inferior a algún umbral, eliminaré estas columnas. Miré, pero no pude encontrar ninguna función para esto. lo hay value_counts
, pero sería lento para mí, porque la mayoría de los valores son distintos y NaN
solo quiero contarlos .
464
df
, puedes usarlodf.isnull().sum().sum()
.sum(axis=0)
que es el comportamiento predeterminado. Y para conseguir rowsums,.sum(axis=1)
.df.isnull().values.sum()
df['column_name'].isna().sum()
También funciona si alguien se pregunta.Puede restar la longitud total del recuento de valores que no son nan:
Debe cronometrarlo en sus datos. Para las series pequeñas, se aceleró 3 veces en comparación con la
isnull
solución.fuente
isnull
ya es dos veces más rápido.Supongamos que
df
es un DataFrame de pandas.Entonces,
Esto le dará una cantidad de valores de NaN en cada columna.
Si lo necesita, valores NaN en cada fila,
fuente
Según la respuesta más votada, podemos definir fácilmente una función que nos proporciona un marco de datos para obtener una vista previa de los valores faltantes y el% de valores faltantes en cada columna:
fuente
Desde pandas 0.14.1 mi sugerencia aquí para tener un argumento de palabra clave en el método value_counts se ha implementado:
fuente
si solo está contando valores nan en una columna de pandas aquí es una forma rápida
fuente
si está utilizando Jupyter Notebook, ¿qué tal ...?
o
o, ¿hay algún NaN en los datos, en caso afirmativo, dónde?
fuente
Lo siguiente imprimirá todas las columnas Nan en orden descendente.
o
A continuación se imprimirán las primeras 15 columnas de Nan en orden descendente.
fuente
Puede usar la siguiente función, que le dará salida en Dataframe
Simplemente copie y pegue la siguiente función y llámela pasando el marco de datos de sus pandas
Salida
Si desea mantenerlo simple, puede usar la siguiente función para obtener valores faltantes en%
fuente
Para contar ceros:
Para contar NaN:
o
fuente
Utilice a continuación para el recuento de columnas en particular
fuente
Puede usar el método value_counts e imprimir valores de np.nan
fuente
s.value_counts(dropna = False)
Esto hará el truco.
fuente
Aquí está el código para contar
Null
valores en columna:fuente
Hay un buen artículo de Dzone de julio de 2017 que detalla varias formas de resumir los valores de NaN. Compruébalo aquí .
El artículo que he citado proporciona un valor adicional al: (1) Mostrar una forma de contar y mostrar los recuentos de NaN para cada columna para que uno pueda decidir fácilmente si descartar o no esas columnas y (2) Demostrar una forma de seleccionar esas filas en específicos que tienen NaN para que puedan descartarse o imputarse selectivamente.
Aquí hay un ejemplo rápido para demostrar la utilidad del enfoque: con solo unas pocas columnas, tal vez su utilidad no sea obvia, pero descubrí que es útil para marcos de datos más grandes.
fuente
Otra opción simple que aún no se sugiere, para contar los NaN, sería agregar la forma para devolver el número de filas con NaN.
fuente
df.isnull (). sum () dará la suma de valores perdidos en columna.
Si desea conocer la suma de los valores faltantes en una columna en particular, el siguiente código funcionará df.column.isnull (). Sum ()
fuente
basado en la respuesta dada y algunas mejoras, este es mi enfoque
fuente
df.apply(lambda x: x.value_counts(dropna=False)[np.nan]/x.size*100)
En caso de que necesite obtener los recuentos no NA (no Ninguno) y NA (Ninguno) en los diferentes grupos extraídos por groupby:
Esto devuelve los recuentos de no NA, NA y el número total de entradas por grupo.
fuente
Usé la solución propuesta por @sushmit en mi código.
Una posible variación del mismo también puede ser
La ventaja de esto es que devuelve el resultado para cada una de las columnas en el df en adelante.
fuente
Da como salida:
fuente
Suponga que desea obtener el número de valores faltantes (NaN) en una columna (serie) conocida como precio en un marco de datos llamado revisiones
Para obtener los valores faltantes, con n_missing_prices como variable, simplemente haga
sum es el método clave aquí, estaba tratando de usar count antes de darme cuenta de que sum es el método correcto para usar en este contexto
fuente
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.count.html#pandas.Series.count
Número devuelto de observaciones no NA / nulas en la serie
fuente
Para su tarea, puede usar pandas.DataFrame.dropna ( https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.dropna.html ):
Con el parámetro de umbral, puede declarar el recuento máximo de los valores de NaN para todas las columnas en DataFrame.
Salidas de código:
fuente