HOWTO · Pandas
Como obter a contagem de linhas de um Pandas DataFrame
Aprenda a contar as linhas de um Pandas DataFrame com `shape`, `len()` e o índice, distinguir linhas de colunas e contar as linhas que atendem a uma condição.
Nesta página
Para obter o número de linhas de um Pandas DataFrame, use df.shape[0] ou len(df). O atributo shape retorna as duas dimensões: o primeiro valor é a quantidade de linhas, e o segundo, a quantidade de colunas. Para contar apenas as linhas que atendem a uma condição, some uma máscara booleana.
Usando DataFrame.shape para obter a quantidade de linhas e colunas
DataFrame.shape é um atributo que retorna uma tupla na ordem (rows, columns). Selecione o índice 0 para obter a quantidade de linhas e o índice 1 para obter a quantidade de colunas. Isso é útil quando você precisa consultar as duas dimensões ou obter a quantidade de linhas sem contar os valores de uma coluna específica.
O exemplo a seguir cria um DataFrame pequeno e imprime as duas dimensões:
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 obter apenas a quantidade de linhas, use df.shape[0]. Evite usar df.shape[1] para essa tarefa: essa expressão retorna a quantidade de colunas. Se uma tabela tiver três linhas e três colunas, os dois valores serão iguais, o que pode causar confusão.
Usando len() ou o índice para obter a quantidade de linhas
A função nativa do Python len() retorna a quantidade de linhas quando recebe um DataFrame: len(df). É uma opção concisa quando você precisa apenas da quantidade de linhas. len(df.index) retorna o mesmo valor ao medir o índice das linhas do DataFrame, enquanto len(df.axes[0]) obtém o comprimento do eixo das linhas. Para contar as colunas, len(df.axes[1]) corresponde a df.shape[1].
Essas formas contam as linhas independentemente dos rótulos do índice; elas não contam os valores não ausentes de uma coluna específica. Para contar as linhas sem valores ausentes, filtre primeiro os dados com df.dropna() e depois use len(df.dropna()). Por padrão, dropna() remove as linhas que contêm um valor ausente em qualquer coluna; passe subset=["Age"] para considerar apenas uma coluna específica.
Não é necessário chamar .len() em um DataFrame: len() é uma função do Python, então escreva len(df) em vez de df.len() ou .len(df.index). Na expressão de contagem, use o mesmo DataFrame cuja quantidade de linhas você quer medir, como um DataFrame filtrado.
Contando linhas que atendem a uma condição
Crie uma máscara booleana a partir de uma comparação com uma coluna e, em seguida, chame .sum() nessa máscara. Em uma Series booleana, cada True contribui com um e cada False com zero; assim, a soma retorna a quantidade de linhas que atendem à condição. Essa abordagem vetorizada é direta para uma comparação e pode ser estendida para várias condições.
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 fazer várias comparações, coloque cada uma entre parênteses e combine-as com & para AND ou | para OR. Por exemplo, (df["Age"] > 28) & (df["Age"] < 35) conta as linhas cuja idade está dentro dos dois limites; some a máscara resultante para obter a quantidade. Não use and ou or do Python entre Series completas do Pandas.
Para contar linhas distintas, remova as duplicatas antes da contagem: len(df.drop_duplicates()). Essa operação responde a uma pergunta diferente da contagem de todas as linhas, pois registros repetidos contam apenas uma vez após drop_duplicates(). Escolha a expressão de acordo com o que precisa contar: todas as linhas, as que correspondem a um filtro ou os registros distintos.