HOWTO · Pandas
Cómo obtener el recuento de filas de un Pandas DataFrame
Aprende a contar las filas de un DataFrame de Pandas con `shape`, `len()` o el índice, a distinguir las filas de las columnas y a contar las filas que cumplen una condición.
En esta página
Para obtener el número de filas de un Pandas DataFrame, usa df.shape[0] o len(df). El atributo shape devuelve ambas dimensiones: el primer valor es el número de filas y el segundo, el de columnas. Para contar solo las filas que cumplen una condición, suma una máscara booleana.
Usar DataFrame.shape para obtener el número de filas y columnas
DataFrame.shape es un atributo que devuelve una tupla en el orden (rows, columns). Selecciona el índice 0 para obtener el número de filas y el índice 1 para obtener el número de columnas. Esto resulta útil cuando necesitas consultar ambas dimensiones o quieres obtener directamente el número de filas sin contar los valores de una columna concreta.
El siguiente ejemplo crea un DataFrame pequeño e imprime ambas dimensiones:
import pandas as pd
data = {
"Name": ["Alice", "Bob", "Charlie"],
"Age": [25, 30, 35],
"City": ["New York", "Los Angeles", "Chicago"],
}
df = pd.DataFrame(data)
print("Rows:", df.shape[0])
print("Columns:", df.shape[1])
Para obtener únicamente el número de filas, la expresión pertinente es df.shape[0]. No uses df.shape[1] para esta tarea: devuelve el número de columnas, así que en una tabla con tres filas y tres columnas ambos recuentos parecerían iguales.
Usar len() o el índice para obtener el número de filas
La función integrada len() de Python devuelve el número de filas cuando se aplica a un DataFrame: len(df). Es una opción concisa si solo necesitas el recuento de filas. len(df.index) devuelve el mismo recuento al medir el índice de filas del DataFrame, mientras que len(df.axes[0]) obtiene la longitud del eje de filas. Para contar columnas, len(df.axes[1]) equivale a df.shape[1].
Estas expresiones cuentan las filas independientemente de las etiquetas del índice; no cuentan los valores no ausentes de una columna seleccionada. Para contar las filas que no contienen valores ausentes, filtra primero los datos con df.dropna() y luego usa len(df.dropna()). De forma predeterminada, dropna() elimina las filas que contienen un valor ausente en cualquier columna; pasa subset=["Age"] para tener en cuenta solo una columna concreta.
No es necesario llamar a .len() en un DataFrame: len() es una función de Python, así que escribe len(df) en lugar de df.len() o .len(df.index). Usa en la expresión de recuento el mismo DataFrame que quieras medir, por ejemplo, un DataFrame filtrado.
Contar las filas que cumplen una condición
Crea una máscara booleana a partir de una comparación de columna y luego llama a .sum() sobre esa máscara. En una Serie booleana, cada True aporta uno y cada False aporta cero, por lo que la suma indica cuántas filas cumplen la condición. Este enfoque vectorizado es directo para una comparación y puede ampliarse a varias condiciones.
import pandas as pd
df = pd.DataFrame({"Name": ["Alice", "Bob", "Charlie"], "Age": [25, 30, 35]})
is_over_28 = df["Age"] > 28
matching_rows = is_over_28.sum()
print(matching_rows)
Para combinar varias comparaciones, pon cada una entre paréntesis y únelas con & para AND o con | para OR. Por ejemplo, (df["Age"] > 28) & (df["Age"] < 35) cuenta las filas cuya edad está dentro de ambos límites; suma la máscara resultante para obtener el recuento. No uses and ni or de Python entre Series completas de Pandas.
Para contar filas distintas, elimina los duplicados antes de contar: len(df.drop_duplicates()). Esto responde a una pregunta distinta de contar todas las filas, ya que después de drop_duplicates() cada registro repetido solo cuenta una vez. Elige la expresión según necesites contar todas las filas, las que cumplen un filtro o los registros distintos.