Estoy tratando de obtener el número de filas de dataframe df con Pandas, y aquí está mi código.
Método 1:
total_rows = df.count
print total_rows +1
Método 2:
total_rows = df['First_columnn_label'].count
print total_rows +1
Ambos fragmentos de código me dan este error:
TypeError: tipos de operando no admitidos para +: 'instancemethod' e 'int'
¿Qué estoy haciendo mal?
df.count()
solo devolverá el recuento de filas que no sean NA / NaN para cada columna. En sudf.shape[0]
lugar, debe usar , que siempre le indicará correctamente el número de filas.Respuestas:
Puede usar la
.shape
propiedad o simplementelen(DataFrame.index)
. Sin embargo, hay diferencias notables de rendimiento (len(DataFrame.index)
es el más rápido):EDITAR: como señaló @Dan Allen en los comentarios
len(df.index)
ydf[0].count()
no son intercambiables, ya quecount
excluyeNaN
s,fuente
shape
en el trabajo interactivo, en lugar de len (df): al probar diferentes filtros, a menudo necesito saber cuántos elementos quedan. Con forma, puedo ver eso simplemente agregando .shape después de mi filtrado. Con len () la edición de la línea de comandos se vuelve mucho más engorrosa, yendo y viniendo.df.empty
es la mejor opción.df.shape[0]
más rápido quelen(df)
olen(df.columns)
? Dado que 1 ns (nanosegundos) = 1000 µs (microsegundos), por lo tanto 1.17µs = 1170ns, lo que significa que es aproximadamente 3 veces más lento que 381nsSupongamos
df
que su marco de datos es entonces:O, más sucintamente,
fuente
Uso
len(df)
. Esto funciona a partir de pandas 0.11 o tal vez incluso antes.__len__()
actualmente está documentado (0.12) conReturns length of index
. Información de tiempo, configurada de la misma manera que en la respuesta de la raíz:Debido a una llamada de función adicional, es un poco más lento que llamar
len(df.index)
directamente, pero esto no debería desempeñar ningún papel en la mayoría de los casos de uso.fuente
Esta tabla resume las diferentes situaciones en las que desea contar algo en un DataFrame (o Serie, para completar), junto con los métodos recomendados.
Ejemplos de código mínimo
A continuación, muestro ejemplos de cada uno de los métodos descritos en la tabla anterior. Primero, la configuración -
Recuento de filas de una trama de datos:
len(df)
,df.shape[0]
olen(df.index)
Parece una tontería comparar el rendimiento de las operaciones de tiempo constante, especialmente cuando la diferencia está en el nivel de "en serio, no te preocupes por eso". Pero esto parece ser una tendencia con otras respuestas, así que estoy haciendo lo mismo para completar.
De los 3 métodos anteriores,
len(df.index)
(como se menciona en otras respuestas) es el más rápido.Número de columnas de una trama de datos:
df.shape[1]
,len(df.columns)
Análogo a
len(df.index)
,len(df.columns)
es el más rápido de los dos métodos (pero requiere más caracteres para escribir).Número de filas de una Serie:
len(s)
,s.size
,len(s.index)
s.size
ylen(s.index)
son casi iguales en términos de velocidad. Pero lo recomiendolen(df)
.Recuento de filas no nulas:
DataFrame.count
ySeries.count
Los métodos descritos aquí solo cuentan valores no nulos (lo que significa que se ignoran los NaN).
Las llamadas
DataFrame.count
devolverán recuentos que no sean NaN para cada columna:Para la serie, use
Series.count
con un efecto similar:Recuento de filas en grupo:
GroupBy.size
Para
DataFrames
, useDataFrameGroupBy.size
para contar el número de filas por grupo.Del mismo modo, para
Series
, lo utilizaráSeriesGroupBy.size
.En ambos casos,
Series
se devuelve a. Esto también tiene sentidoDataFrames
ya que todos los grupos comparten el mismo recuento de filas.Recuento de filas no nulas en grupo:
GroupBy.count
Similar a lo anterior, pero use
GroupBy.count
, noGroupBy.size
. Tenga en cuenta quesize
siempre devuelve aSeries
, mientras quecount
devuelve unSeries
if en una columna específica, o bien aDataFrame
.Los siguientes métodos devuelven lo mismo:
Mientras tanto, para
count
, tenemos... invocó todo el objeto GroupBy, v / s,
Llamado en una columna específica.
fuente
TL; DR
utilizar
len(df)
len()
es tu amigo, se puede usar para contar filas comolen(df)
.Alternativamente, puede acceder a todas las filas
df.index
y a todas las columnasdf.columns
, y como puede usarlen(anyList)
para obtener el recuento de la lista, uselen(df.index)
para obtener el número de filas ylen(df.columns)
para el recuento de columnas.O bien, puede utilizar
df.shape
que devuelve el número de filas y columnas en conjunto, si desea acceder al número de filas sólo usodf.shape[0]
y por el número de columnas Use Only:df.shape[1]
.fuente
Además de las respuestas anteriores, el uso puede usarse
df.axes
para obtener la tupla con índices de fila y columna y luego usar lalen()
función:fuente
... basándose en la respuesta de Jan-Philip Gehrcke.
La razón por la cual
len(df)
olen(df.index)
es más rápido quedf.shape[0]
. Mira el código df.shape es un@property
que ejecuta un método DataFrame que llamalen
dos veces.Y debajo del capó de len (df)
len(df.index)
será un poco más rápido quelen(df)
ya que tiene una llamada de función menos, pero esto siempre es más rápido quedf.shape[0]
fuente
Llego a los pandas desde el
R
fondo, y veo que los pandas son más complicados cuando se trata de seleccionar una fila o columna. Tuve que lidiar con eso por un tiempo, luego encontré algunas formas de lidiar con esto:obteniendo el número de columnas:
obteniendo el número de filas:
fuente
df.shape
. Devuelve el número de filas y columnas respectivamente.En caso de que desee obtener el recuento de filas en medio de una operación encadenada, puede usar:
Ejemplo:
Esto puede ser útil si no desea poner una declaración larga dentro de una
len()
función.Podrías usar
__len__()
en su lugar, pero se__len__()
ve un poco raro.fuente
count = len(df.reset_index())
quecount = df.reset_index().pipe(len)
. El primero es solo una búsqueda de atributos sin la llamada a la función.Oye, puedes usar hacer esto también:
Digamos que
df
es su marco de datos. Luegodf.shape
le da la forma de su marco de datos, es decir(row,col)
Por lo tanto, asigne el siguiente comando para obtener el requerido
fuente
Para el marco de datos df, un recuento de filas con formato de coma impreso utilizado al explorar datos:
Ejemplo:
fuente
Un método alternativo para averiguar la cantidad de filas en un marco de datos que creo que es la variante más legible es
pandas.Index.size
.Tenga en cuenta que, como comenté en la respuesta aceptada:
fuente
No estoy seguro de si esto funcionaría (los datos PODRÍAN omitirse), pero esto puede funcionar:
y luego usando esto, puede encontrar el número de filas ejecutando el fragmento de código y mirando el número de fila que se le dio.
fuente
Cualquiera de estos puede hacer (
df
es el nombre del DataFrame):Método 1: uso de la
len
función:len(df)
dará el número de filas en un DataFrame llamadodf
.Método 2: usando la
count
función:df[col].count()
contará el número de filas en una columna dadacol
.df.count()
dará el número de filas para todas las columnas.fuente