Python Tutorial de Pandas: DataFrame, Intervalo de Datas e Uso

⚡ Resumo Inteligente

Pandas é um software de código aberto. Python Biblioteca para manipulação de dados tabulares. Ela fornece as estruturas Series e DataFrame, intervalos de datas, funções auxiliares de inspeção e as operações de fatiar, remover, concatenar, classificar e renomear, demonstradas ao longo deste passo a passo.

  • 🔘 Construído com base no NumPy: O Pandas requer o NumPy, que fornece os arrays por trás de cada Series e DataFrame.
  • ☑️ Duas estruturas: Series armazena uma dimensão rotulada; DataFrame armazena linhas e colunas de tipos mistos.
  • Intervalos de datas: A função `pd.date_range()` cria um índice a partir de uma data inicial, uma contagem de períodos e uma frequência.
  • 🧪 Inspecione primeiro: As funções head(), tail() e describe() revelam a forma, a dispersão e os percentis antes de qualquer análise.
  • 🛠️ Corte com precisão: Os nomes entre colchetes selecionam colunas, loc seleciona por rótulo e iloc seleciona por posição.
  • ⚠️ Nota de versão: O alias de frequência M foi descontinuado a partir do Pandas 2.2; as versões atuais esperam receber ME.

Python Tutorial de Pandas: DataFrame, Intervalo de Datas e Uso do Pandas

O que é Pandas em Python?

Pandas é uma biblioteca de código aberto que permite realizar manipulação e análise de dados em Python, abrangendo tabelas numéricas e séries temporais. Oferece uma maneira fácil de criar, manipular e organizar dados, e é construído sobre NumPyPortanto, o NumPy precisa estar presente para que o Pandas funcione.

Por que usar Pandas?

Cientistas de dados usam Pandas em Python pelas seguintes vantagens:

  • Lida facilmente com dados ausentes
  • Utiliza Series para dados unidimensionais e DataFrame para dados multidimensionais.
  • Ele fornece uma maneira eficiente de dividir os dados
  • Ele fornece uma maneira flexível de mesclar, concatenar ou remodelar os dados
  • Inclui um poderoso conjunto de ferramentas para séries temporais.

Resumindo, o Pandas fornece estruturas de dados poderosas e fáceis de usar, além dos meios para operar nelas rapidamente, razão pela qual ele é a base da maioria dos projetos. Python análise de dados <span class="word" data-word="work." style="--word-index: 2; translate: none; rotate: none; scale: none; transform: translate(0px, 0px); opacity: 1;">work.</span>

Como instalar o Pandas

O Pandas é distribuído com o Anaconda e com a maioria dos serviços de notebooks gerenciados, portanto, geralmente já está instalado. Se a importação falhar, um dos comandos abaixo o adiciona. O ambiente criado em Como instalar o TensorFlow Também contém pandas.

  • pip: pip install pandas
  • Anaconda: conda install -c anaconda pandas
  • Dentro de um Jupyter Portátil célula:
import sys
!conda install --yes --prefix {sys.prefix} pandas

O que é um DataFrame do Pandas?

Um DataFrame do Pandas é uma estrutura de dados bidimensional rotulada, cujas colunas podem conter diferentes tipos de dados. É a maneira padrão de armazenar dados em formato tabular: as linhas contêm as observações e as colunas nomeiam as informações. Por exemplo, preço Pode ser o nome de uma coluna e 2, 3, 4 podem ser os valores dos preços.

Os data frames são bem conhecidos por estatísticos e outros profissionais da área de dados. A imagem abaixo mostra esse formato — um índice de linhas rotulado na lateral e colunas nomeadas na parte superior.

Layout de um DataFrame do Pandas com um índice de linhas rotulado e colunas nomeadas.

O que é uma série?

Uma Série é uma estrutura de dados unidimensional. Ela pode armazenar qualquer tipo de dado, como inteiro, ponto flutuante ou string, e é útil quando você deseja realizar um cálculo ou retornar uma matriz unidimensional. Uma Série, por definição, não pode ter múltiplas colunas; para esse caso, utilize a estrutura DataFrame.

O construtor da classe Series do Pandas aceita os seguintes parâmetros:

  • Data: Pode ser uma lista, um dicionário ou um valor escalar.
pd.Series([1., 2., 3.])
0    1.0
1    2.0
2    3.0
dtype: float64

Você pode adicionar um índice com indexEla nomeia as linhas e seu comprimento deve ser igual ao tamanho da coluna.

pd.Series([1., 2., 3.], index=['a', 'b', 'c'])

Abaixo, você cria uma Série Pandas com um valor ausente na terceira linha. Valores ausentes em Python são mostrados como NaN e np.nan O NumPy cria um artificialmente.

pd.Series([1,2,np.nan])

saída

0    1.0
1    2.0
2    NaN
dtype: float64

Criar DataFrame do Pandas

Você pode converter um array NumPy em um DataFrame com pd.DataFrame()O oposto também é possível: para converter um DataFrame de volta em um array, use np.array(), ou df.to_numpy(), conforme recomendado na documentação atual do Pandas.

## Numpy to pandas
import numpy as np
h = [[1,2],[3,4]] 
df_h = pd.DataFrame(h)
print('Data Frame:', df_h)

## Pandas to numpy
df_h_n = np.array(df_h)
print('Numpy array:', df_h_n)
Data Frame:    0  1
0  1  2
1  3  4
Numpy array: [[1 2]
 [3 4]]

Um dicionário funciona tão bem como entrada para pd.DataFrame().

dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)
Idade Nome
0 30 banheiro
1 40 Smith

Dados de alcance dos Pandas

O Pandas possui uma API prática para criar um intervalo de datas, que se torna o índice de uma série temporal. A chamada tem o seguinte formato:

pd.date_range(start, periods, freq):

  • O primeiro parâmetro é a data de início
  • O segundo parâmetro é o número de períodos (opcional se a data de término for especificada)
  • O último parâmetro é a frequência: dia D, mês M e ano Y
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)

saída

Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months
dates_m = pd.date_range('20300101', periods=6, freq='M')
print('Month:', dates_m)

saída

Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')

Nota de versão: o mês apelido M O uso acima está obsoleto desde o Pandas 2.2 e foi removido no Pandas 3.0. Nas versões atuais, passe freq='ME' para o final do mês; o índice resultante é idêntico.

Inspecionando Dados

Você pode verificar o início ou o fim de um conjunto de dados com head() or tail() A chamada foi feita no DataFrame, como mostra o exemplo do Pandas abaixo.

Passo 1) Crie uma sequência aleatória com NumPy. A sequência tem 4 colunas e 6 linhas.

random = np.random.randn(6,4)

Passo 2) Em seguida, você cria um DataFrame usando o Pandas.

Uso dates_m como índice, de modo que cada linha receba um nome correspondente a uma data, e nomeie as 4 colunas com o columns argumento.

# Create data with date
df = pd.DataFrame(random,
                  index=dates_m,
                  columns=list('ABCD'))

Porque np.random.randn() Se não for plantada semente, seus resultados serão diferentes dos impressos aqui. Ligue. np.random.seed(0) Primeiro, se você quiser reproduzir um conjunto fixo.

Passo 3) Utilizando a função de cabeça

df.head(3)
A B C D
2030-01-31 1.139433 1.318510 -0.181334 1.615822
2030-02-28 -0.081995 -0.063582 0.857751 -0.527374
2030-03-31 -0.519179 0.080984 -1.454334 1.314947

Passo 4) Usando a função de cauda

df.tail(3)
A B C D
2030-04-30 -0.685448 -0.011736 0.622172 0.104993
2030-05-31 -0.935888 -0.731787 -0.558729 0.768774
2030-06-30 1.096981 0.949180 -0.196901 -0.471556

Passo 5) Uma excelente maneira de obter uma pista sobre os dados é describe()A função reporta a contagem, média, desvio padrão, mínimo, máximo e percentis do conjunto de dados.

df.describe()
A B C D
contar 6.000000 6.000000 6.000000 6.000000
significar 0.002317 0.256928 -0.151896 0.467601
std 0.908145 0.746939 0.834664 0.908910
min -0.935888 -0.731787 -1.454334 -0.527374
25% -0.643880 -0.050621 -0.468272 -0.327419
50% -0.300587 0.034624 -0.189118 0.436883
75% 0.802237 0.732131 0.421296 1.178404
max 1.139433 1.318510 0.857751 1.615822

Fatiar dados

O fatiamento extrai um subconjunto de linhas ou colunas de um DataFrame. Você pode usar o nome da coluna para fatiar.tracem uma coluna, como mostra o exemplo do Pandas abaixo.

## Slice
### Using name
df['A']

2030-01-31   -0.168655
2030-02-28    0.689585
2030-03-31    0.767534
2030-04-30    0.557299
2030-05-31   -1.547836
2030-06-30    0.511551
Freq: M, Name: A, dtype: float64

Para selecionar várias colunas, você precisa de colchetes duplos. [[..,..]]O primeiro par indica que você deseja selecionar colunas; o segundo par indica quais colunas retornar.

df[['A', 'B']]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Você pode selecionar as linhas usando dois pontos. O código abaixo retorna as três primeiras linhas.

### using a slice for row
df[0:3]
A B C D
2030-01-31 -0.168655 0.587590 0.572301 -0.031827
2030-02-28 0.689585 0.998266 1.164690 0.475975
2030-03-31 0.767534 -0.940617 0.227255 -0.341532

O loc O acessador seleciona colunas por nome. Como de costume, o valor antes da vírgula representa as linhas e o valor depois dela, as colunas, sendo necessários colchetes para selecionar mais de uma coluna.

## Multi col
df.loc[:,['A','B']]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Existe outro método para selecionar várias linhas e colunas. iloc[] Utiliza posições inteiras em vez de nomes de colunas, portanto o código abaixo retorna o mesmo DataFrame que o anterior.

df.iloc[:, :2]
A B
2030-01-31 -0.168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0.940617
2030-04-30 0.557299 0.507350
2030-05-31 -1.547836 1.276558
2030-06-30 0.511551 1.572085

Soltar uma coluna

Você pode remover colunas com df.drop(), passando os nomes no columns argumento.

df.drop(columns=['A', 'C'])
B D
2030-01-31 0.587590 -0.031827
2030-02-28 0.998266 0.475975
2030-03-31 -0.940617 -0.341532
2030-04-30 0.507350 -0.296035
2030-05-31 1.276558 0.523017
2030-06-30 1.572085 -0.594772

Concatenação

Você pode concatenar dois DataFrames com pd.concat()Primeiro, crie os dois quadros.

import numpy as np
df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'],
                     'Age': ['25', '30', '50']},
                    index=[0, 1, 2])
df2 = pd.DataFrame({'name': ['Adam', 'Smith' ],
                     'Age': ['26', '11']},
                    index=[3, 4])  

Em seguida, concatene-os.

df_concat = pd.concat([df1,df2]) 
df_concat
Idade nome
0 25 banheiro
1 30 Smith
2 50 Paul
3 26 Adam
4 11 Smith

Soltar duplicatas

Quando um conjunto de dados contém informações duplicadas, drop_duplicates() É uma maneira fácil de excluir as linhas repetidas. df_concat Contém uma observação duplicada: Smith aparece duas vezes no name coluna.

df_concat.drop_duplicates('name')
Idade nome
0 25 banheiro
1 30 Smith
2 50 Paul
3 26 Adam

Ordenar valores

Você pode classificar um quadro com sort_values(). Observe que Age O conteúdo foi criado como texto aqui, portanto as linhas são classificadas em ordem de string.

df_concat.sort_values('Age')
Idade nome
4 11 Smith
0 25 banheiro
3 26 Adam
1 30 Smith
2 50 Paul

Renomear Colunas

Uso rename() Para renomear uma coluna no Pandas, use o seguinte código: Em cada par, o primeiro valor é o nome atual da coluna e o segundo é o novo nome.

df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Idade_ppl Sobrenome
0 25 banheiro
1 30 Smith
2 50 Paul
3 26 Adam
4 11 Smith

Guia de Referência Rápida de Métodos do Pandas

Esta tabela mapeia cada tarefa comum ao método Pandas que a executa.

Tarefa Forma
importar dados leitura_csv
criar série Série
Criar quadro de dados Quadro de dados
Criar intervalo de datas date_range
cabeça de retorno cabeça
cauda de retorno cauda
Descrever descreve
fatiar usando o nome nome de dados['nome da coluna']
Fatiar usando linhas nome_dados[0:5]

Perguntas Frequentes

Ligar pd.read_csv() com um caminho ou URLAdicione nomes para rotular as colunas, selecione um delimitador diferente e usecols para manter apenas as colunas necessárias.

A função `isnull()` sinaliza os valores nulos, a função `dropna()` remove as linhas ou colunas afetadas e a função `fillna()` substitui os valores por uma constante ou uma estatística, como a média da coluna. Os valores ausentes são exibidos como NaN.

A função groupby() divide as linhas em grupos por uma coluna chave, aplica uma agregação como contagem, soma ou média a cada grupo e, em seguida, combina os resultados em um novo quadro.

Construa uma máscara booleana e passe-a entre colchetes, por exemplo, `df[df.Age == 30]`. Combine máscaras com os operadores `&` e `|`, e enrole-as.ping Cada comparação entre parênteses.

pd.merge() compara linhas em uma coluna chave da mesma forma que um SQL join faz isso, com how definido para inner, left, right ou outer. concat() empilha frames em vez de combinar chaves.

`df.to_csv('out.csv', index=False)` cria um arquivo de colunas (`.csv`) e `df.to_excel('out.xlsx')` cria uma planilha. (Remover)ping O índice evita uma primeira coluna sem nome na próxima leitura.

Os assistentes de IA criam um perfil de um novo frame, sugerem as chamadas de descrição, agrupamento e plotagem que valem a pena executar e sinalizam colunas com tipos de dados incomuns ou muitos valores nulos. Confirme cada sugestão com base nos dados brutos.

Sim. Travas deslizantes portáteis Copiloto do GitHub completa um comentário simples em código Pandas funcional em um Jupyter célula. RevVerifique os tipos de dados e a contagem de linhas antes de confiar no resultado.

Resuma esta postagem com: