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:

Pandas DataFrameName

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]