Pandas DataFrame Python: Construir e Filtrar Linhas
Crie um pandas DataFrame em Python com pd.DataFrame(data), usando um dicionário de listas de comprimento igual para colunas e valores. Use um DataFrame quando os registros precisarem de linhas e colunas rotuladas, seleção de colunas ou filtragem vetorizada. Uma máscara booleana filtra dados tabulares sem escrever um laço Python. O resultado mantém os rótulos de índice originais a menos que você os redefina explicitamente.
Exemplo Python Pandas DataFrame Para Filtrar Linhas
Saída:
A saída aparecerá aqui...
Saída:
product units
Keyboard 12
Monitor 15
Como Este Exemplo Funciona
import pandas as pddá ao pacote seu alias convencionalpd.- O construtor pandas DataFrame transforma cada chave de dicionário em um rótulo de coluna. Como ambas as listas contêm três valores, o pandas cria três linhas e atribui um
RangeIndexpadrão com0,1e2. sales["units"] >= 10produz uma Series booleana alinhada com esse índice. Passar a máscara de volta parasales[...]mantém apenas as linhas cujo valor éTrue.to_string(index=False)oculta o índice na tabela impressa; não remove nem renumera os rótulos armazenados.
Provar o que a Execução do DataFrame Realmente Fez
Execute o programa duas vezes na mesma página, abrindo o Run Details após cada conclusão. Isso transforma o painel em um experimento de dependências em vez de confundir a duração da execução a frio com um benchmark do DataFrame.
| Observação | Runtime a frio | Runtime quente na mesma página |
|---|---|---|
| Requests | 0 | 0 |
| Pacotes recém-disponíveis | pandas 1.5.3, numpy 1.26.1, python-dateutil 2.8.2, six 1.16.0, pytz 2023.3 | 0 |
| O que mudou | pandas e suas dependências ficaram disponíveis | o runtime já os tinha |
O web.run detecta import pandas e carrega os pacotes compatíveis antes de o Python do usuário iniciar. O Run Details reporta a diferença entre os pacotes disponíveis antes e depois dessa execução; uma lista de Packages vazia na execução quente significa “nada carregado de novo”, não “pandas não foi usado.”
A duração total da primeira execução inclui o bootstrap do pacote e a execução do Python. Compare-a com a execução quente antes de culpar pd.DataFrame(...); os tempos variam por máquina e estado de cache, então use a lista de Packages para identificar o trabalho de bootstrap.
Ambas as execuções reportam zero requisições de usuário porque o dicionário e a filtragem permanecem locais. A execução a frio ainda baixa arquivos de pacote como atividade de runtime. Portanto, “sem requisições de usuário” prova que o trecho não fez requisições externas, não que o navegador transferiu zero bytes.
A Armadilha do Índice Filtrado: loc Não É iloc
Filtrar preserva os rótulos. Aqui ready.index.tolist() é [0, 2], embora index=False faça a saída parecer uma tabela nova de duas linhas. O código que trata a segunda linha exibida como o rótulo 1 falha:
Incorreto:
second_product = ready.loc[1, "product"] # KeyError: 1
Correto para a segunda linha por posição:
second_product = ready.iloc[1]["product"]
Correto quando o código posterior precisa de rótulos sequenciais:
ready = ready.reset_index(drop=True)
second_product = ready.loc[1, "product"]
Use .loc para rótulos de índice e .iloc para posições com base zero. Redefina o índice apenas quando os novos rótulos forem parte do resultado pretendido; caso contrário, preservar os rótulos de origem ajuda a rastrear as linhas filtradas de volta aos dados originais.
Erros de Comprimento no Construtor DataFrame
Um dicionário de listas deve descrever uma tabela retangular. O pandas lança ValueError: All arrays must be of the same length em vez de adivinhar como preencher uma coluna curta.
Incorreto:
pd.DataFrame({"product": ["Keyboard", "Mouse"], "units": [12]})
Correto:
pd.DataFrame({"product": ["Keyboard", "Mouse"], "units": [12, None]})
Adicione um valor ausente explícito apenas quando ele representar os dados honestamente; caso contrário, corrija os registros de origem antes de construir a tabela.
Quando um DataFrame É o Contêiner Certo
| Escolha | Quando se encaixa |
|---|---|
| DataFrame | Várias colunas rotuladas precisam de indexação booleana, operações de coluna ou análise tabular |
| Series | Uma dimensão rotulada é suficiente |
| Lista de dicionários | Uma pequena coleção de registros precisa de iteração mas não de operações de coluna |
| Array NumPy | Dados numéricos homogêneos precisam de operações matriciais sem rótulos de linha ou coluna |
Um DataFrame justifica seu custo em pacote e memória quando rótulos e operações vetorizadas simplificam transformações reais. Use uma lista de dicionários quando os registros são pequenos e precisam apenas de iteração Python comum.