Python Tutorial Pandas: DataFrame, intervalo de datas, uso de Pandas
O que são pandas Python?
Pandas é uma biblioteca de código aberto que permite realizar manipulação e análise de dados em Python. Pandas Python biblioteca oferece manipulação de dados e operações de dados para tabelas numéricas e séries temporais. Pandas fornece uma maneira fácil de criar, manipular e controlar os dados. Ele é construído em cima do NumPy, o que significa que ele precisa do NumPy para operar.
Por que usar Pandas?
Cientistas de dados usam Pandas em Python pelas seguintes vantagens:
- Lida facilmente com dados ausentes
- Ele usa Série para estrutura de dados unidimensional e DataFrame para estrutura de dados multidimensional
- Ele fornece uma maneira eficiente de dividir os dados
- Ele fornece uma maneira flexível de mesclar, concatenar ou remodelar os dados
- Inclui uma poderosa ferramenta de série temporal para trabalhar
Resumindo, Pandas é uma biblioteca útil em análise de dados. Ele pode ser usado para realizar manipulação e análise de dados. Pandas fornece estruturas de dados poderosas e fáceis de usar, bem como meios para executar operações rapidamente nessas estruturas.
Como instalar Pandas?
Agora neste Python Tutorial do Pandas, aprenderemos como instalar o Pandas em Python.
Para instalar a biblioteca Pandas, consulte nosso tutorial Como instalar o TensorFlow. O Pandas é instalado por padrão. No caso remoto, pandas não instalados-
Você pode instalar o Pandas usando:
- Anaconda: conda install -c anaconda pandas
- In Jupyter Caderno :
import sys !conda install --yes --prefix {sys.prefix} pandas
O que é um DataFrame do Pandas?
Pandas DataFrameName é uma matriz bidimensional com estrutura de dados rotulada e diferentes tipos de colunas. Um DataFrame é uma forma padrão de armazenar dados em formato tabular, com linhas para armazenar as informações e colunas para nomear as informações. Por exemplo, o preço pode ser o nome de uma coluna e 2,3,4 podem ser os valores do preço.
O Data Frame é bem conhecido por estatísticos e outros profissionais de dados.
Abaixo uma imagem de um data frame do Pandas:
O que é uma série?
Uma série é uma estrutura de dados unidimensional. Ele pode ter qualquer estrutura de dados como inteiro, flutuante e string. É útil quando você deseja realizar cálculos ou retornar uma matriz unidimensional. Uma série, por definição, não pode ter múltiplas colunas. Para o último caso, use a estrutura do quadro de dados.
Python A série Pandas tem os seguintes parâmetros:
- Dados: pode ser uma lista, dicionário ou valor escalar
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
Você pode adicionar o índice com index. Ajuda nomear as linhas. O 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 para as terceiras linhas. Observe que os valores ausentes em Python são anotados como “NaN”. Você pode usar numpy para criar valor ausente: np.nan artificialmente
pd.Series([1,2,np.nan])
saída
0 1.0 1 2.0 2 NaN dtype: float64
Criar DataFrame do Pandas
Agora neste tutorial do Pandas DataFrame, aprenderemos como criar Python Quadro de dados do Pandas:
Você pode converter um array numpy em um quadro de dados do pandas com pd.Data frame(). O oposto também é possível. Para converter um quadro de dados do pandas em um array, você pode usar np.array()
## 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]]
Você também pode usar um dicionário para criar um dataframe do Pandas.
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]} pd.DataFrame(data=dic)
Idade | Nome | |
---|---|---|
0 | 30 | banheiro |
1 | 40 | Smith |
Dados de alcance dos Pandas
Pandas tem uma API conveniente para criar um intervalo de datas. Vamos aprender com Python Exemplos de pandas:
pd.data_range(data,período,frequência):
- 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')
Inspecionando Dados
Você pode verificar o início ou o final do conjunto de dados com head() ou tail() precedido pelo nome do quadro de dados do panda, conforme mostrado no 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) Então você cria um quadro de dados usando pandas.
Use datas_m como índice para o quadro de dados. Isso significa que cada linha receberá um “nome” ou um índice, correspondente a uma data.
Finalmente, você dá um nome às 4 colunas com as colunas de argumento
# Create data with date df = pd.DataFrame(random, index=dates_m, columns=list('ABCD'))
Passo 3) Usando a função head
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 |
Etapa 4) Usando a função tail
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 |
Etapa 5) Uma prática excelente para obter uma ideia sobre os dados é usar description(). Ele fornece as contagens, média, padrão, mínimo, máximo e percentil 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 |
minutos | -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 último ponto deste Python O tutorial do Pandas é sobre como fatiar um quadro de dados do pandas.
Você pode usar o nome da coluna para extrair dados em uma coluna específica, conforme mostrado no 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 usar duas vezes o colchete, [[..,..]]
O primeiro par de colchetes significa que você deseja selecionar colunas, os segundos pares de colchetes informam quais colunas você deseja 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 dividir as linhas com:
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 |
A função loc é usada para selecionar colunas por nomes. Como de costume, os valores antes da vírgula representam as linhas e depois referem-se à coluna. Você precisa usar 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 no Pandas. Você pode usar iloc[]. Este método usa o índice em vez do nome das colunas. O código abaixo retorna o mesmo quadro de dados acima
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 eliminar colunas usando pd.drop()
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 DataFrame no Pandas. Você pode usar pd.concat()
Primeiro de tudo, você precisa criar dois DataFrames. Até aí tudo bem, você já está familiarizado com a criação de dataframes
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])
Finalmente, você concatena os dois DataFrame
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 |
Drop_duplicados
Se um conjunto de dados pode conter uso de informações duplicadas, `drop_duplicates` é fácil de excluir linhas duplicadas. Você pode ver que `df_concat` tem uma observação duplicada, `Smith` aparece duas vezes na coluna `name.`
df_concat.drop_duplicates('name')
Idade | nome | |
---|---|---|
0 | 25 | banheiro |
1 | 30 | Smith |
2 | 50 | Paul |
3 | 26 | Adam |
Classificar valores
Você pode classificar o valor com sort_values
df_concat.sort_values('Age')
Idade | nome | |
---|---|---|
4 | 11 | Smith |
0 | 25 | banheiro |
3 | 26 | Adam |
1 | 30 | Smith |
2 | 50 | Paul |
Renomear: mudança de índice
Você pode usar renomear para renomear uma coluna no Pandas. O primeiro valor é o nome da coluna atual e o segundo valor é o nome da nova coluna.
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 |
Resumo
Abaixo está um resumo do método mais útil para ciência de dados com Pandas
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] |