python - tablas - ¿Cómo obtengo el número de filas de un marco de datos de Pandas?
seleccionar columnas de un dataframe pandas (12)
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: tipo (s) de operando no admitidos para +: ''instancemethod'' e ''int''
¿Qué estoy haciendo mal?
De acuerdo con la respuesta dada por @root la mejor manera (la más rápida) de verificar la longitud de df es llamar a:
df.shape[0]
... basándose en la respuesta de Jan-Philip Gehrcke.
La razón por la que len(df)
o len(df.index)
es más rápida que df.shape[0]
. Mira el código. df.shape es una @property
que ejecuta un método DataFrame llamando a len
dos veces.
df.shape??
Type: property
String form: <property object at 0x1127b33c0>
Source:
# df.shape.fget
@property
def shape(self):
"""
Return a tuple representing the dimensionality of the DataFrame.
"""
return len(self.index), len(self.columns)
Y debajo del capó de len (df).
df.__len__??
Signature: df.__len__()
Source:
def __len__(self):
"""Returns length of info axis, but here we use the index """
return len(self.index)
File: ~/miniconda2/lib/python2.7/site-packages/pandas/core/frame.py
Type: instancemethod
len(df.index)
será un poco más rápido que len(df)
ya que tiene una llamada de función menos, pero esto siempre es más rápido que df.shape[0]
Aparte de las respuestas anteriores, el uso puede usar df.axes
para obtener la tupla con índices de fila y columna y luego usar la función len()
:
total_rows=len(df.axes[0])
total_cols=len(df.axes[1])
En caso de que desee obtener el recuento de filas en medio de una operación encadenada, puede utilizar:
df.pipe(len)
Ejemplo:
row_count = (
pd.DataFrame(np.random.rand(3,4))
.reset_index()
.pipe(len)
)
Esto puede ser útil si no desea poner una declaración larga dentro de una función len ().
Podría usar __len __ () en su lugar, pero __len __ () parece un poco raro.
Llego a los pandas desde el fondo R
, y veo que los pandas son más complicados cuando se trata de seleccionar una fila o columna. Tuve que luchar con él por un tiempo, luego encontré algunas maneras de lidiar con:
obteniendo el número de columnas:
len(df.columns)
## Here:
#df is your data.frame
#df.columns return a string, it contains column''s titles of the df.
#Then, "len()" gets the length of it.
obteniendo el número de filas:
len(df.index) #It''s similar.
Para el marco de datos df, un recuento de filas con formato de coma impreso que se utiliza al explorar datos:
def nrow(df):
print("{:,}".format(df.shape[0]))
Ejemplo:
nrow(my_df)
12,456,789
Para obtener filas, use
df.index
y para columnas, usar
df.columns
Siempre puede usar len(anyList)
para obtener el recuento de la lista, por lo tanto, puede usar len(df.index)
para obtener el número de filas, o más corto pruebe con len(df)
para el número de filas.
Alternativamente, puede usar df.shape[0] and df.shape[1]
para obtener el número de filas y columnas, respectivamente.
Puede usar la propiedad .shape
o simplemente len(DataFrame.index)
. Sin embargo, hay diferencias de rendimiento notables ( len(DataFrame.index)
es el más rápido):
In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: df = pd.DataFrame(np.arange(12).reshape(4,3))
In [4]: df
Out[4]:
0 1 2
0 0 1 2
1 3 4 5
2 6 7 8
3 9 10 11
In [5]: df.shape
Out[5]: (4, 3)
In [6]: timeit df.shape
2.77 µs ± 644 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
In [7]: timeit df[0].count()
348 µs ± 1.31 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [8]: len(df.index)
Out[8]: 4
In [9]: timeit len(df.index)
990 ns ± 4.97 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
EDITAR: Como @Dan Allen señaló en los comentarios, len(df.index)
y df[0].count()
no son intercambiables, ya que el count
excluye los NaN
s,
Recuento de filas (use cualquiera de):
df.shape[0]
len(df)
Supongamos que df
es su marco de datos entonces:
count_row = df.shape[0] # gives number of row count
count_col = df.shape[1] # gives number of col count
Utilice len(df)
. Esto funciona a partir de pandas 0.11 o incluso antes.
__len__()
está documentado (0.12) con la Returns length of index
. Información de tiempo, configurada de la misma manera que en la respuesta de la raíz:
In [7]: timeit len(df.index)
1000000 loops, best of 3: 248 ns per loop
In [8]: timeit len(df)
1000000 loops, best of 3: 573 ns per loop
Debido a una llamada de función adicional, es un poco más lento que llamar directamente a len(df.index)
, pero esto no debería desempeñar ningún papel en la mayoría de los casos de uso.
fácilmente una línea
your_data _frame.shape
te dará un número simple de filas y columnas
df.shape
devuelve la forma del marco de datos en forma de una tupla (número de filas, número de columnas).
Simplemente puede acceder al no. de filas o no. de cols con df.shape[0]
o df.shape[1]
, respectivamente, que es lo mismo que acceder a los valores de la tupla.