Kung Fu Pandas - parte 1

Quem já trabalhou, quem trabalha ou quem vai trabalhar um dia vai precisar usar o pandas. Então, nessa sequência de posts começando por esse vamos explorar essa poderosa biblioteca do Python que é amiga dos cientistas de dados. Consequentemente, falar sobre numpy e matplotlib serão consequências já que estão sempre trabalhando juntos.

Instalando o pandas

Vou assumir que você já tem alguma distribuição de Python instalada, caso não tenha recomendo usar o pyenv. Com ele é possível instalar todas as distribuições de Python. Eu já escrevi outro artigo aqui sobre como organizar o seu ambiente Python, você pode conferir aqui. O pacote no PyPA é o pandas e pode ser instalado com o pip:

pip install pandas

Tipos de dados

Pandas dtypePython typeNumPy typeUso
objectstrstring_, unicode_Texto
int64intint_, int8, int16, int32, int64, uint8, uint16, uint32, uint64Números inteiros
float64floatfloat_, float16, float32, float64Números de ponto flutuante
boolboolbool_Verdadeiro ou Falso
datetime64NAdatetime64[ns]Data e tempo
timedelta[ns]NANADiferença entre datas
categoryNANALista finita de textos

Estruturas de dados

Series

Series é tipo de dado de apenas um dimensão que podem conter diversos tipos de ojetos associados a um index. Uma Series pode ser criada assim:

s = pd.Series(data, index=index)

Series é uma estrutura básica que será usada pela estrutura principal do pandas que veremos a seguir.

Exemplo de criação de variáveis do tipo Series:

In [1]: import numpy as np
In [2]: import pandas as pd

In [3]: s = pd.Series(np.random.randn(5), index=['a', 'b', 'c', 'd', 'e'])

In [4]: s
Out[4]: 
a    0.4691
b   -0.2829
c   -1.5091
d   -1.1356
e    1.2121
dtype: float64

In [5]: s.index
Out[5]: Index(['a', 'b', 'c', 'd', 'e'], dtype='object')

In [6]: pd.Series(np.random.randn(5))
Out[6]: 
0   -0.1732
1    0.1192
2   -1.0442
3   -0.8618
4   -2.1046
dtype: float64

DataFrame

DataFrame são basicamente matrizes e será sua principal estrutura de dados quando for trabalhar com ciência de dados.

Exemplo de criação de variáveis do tipo DataFrame:

In [1]: import pandas as pd

In [2]: d = {'col1': [1, 2], 'col2': [3, 4]}

In [3]: df = pd.DataFrame(data=d)

In [4]: df
Out[4]: 
   col1  col2
0     1     3
1     2     4

Obtendo informações do seu DataFrame com mais detalhes:

In [7]: df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2 entries, 0 to 1
Data columns (total 2 columns):
col1    2 non-null int64
col2    2 non-null int64
dtypes: int64(2)
memory usage: 112.0 bytes

Existem diversas formas de criar um DataFrame, por exemplo, carregado um arquivo CSV ou o resultado de uma consulta SQL. Você pode conferir todas as formas de entrada e saída de dados do pandas aqui.

Assim como vemos no ensino médio que é possível realizar diversas operações com matrizes com o pandas isso não é diferente e existem diversas manipulações que podem ser feitas, veja aqui.

Visualização dos dados

Outro recurso muito importante ao se trabalhar com ciência de dados são as visualizações de dados, o pandas em um conjunto de funções para auxiliar nesse problema, veja aqui. Essas visualizações por baixo dos panos usam o matplotlib que é uma antiga biblioteca do Python para criação de gráficos muito usada antes no meio acadêmico. Porém, dificilmente seus projetos de ciência de dados os relatórios finais serão com essas funções. Existem diversas outras bibliotecas de visualização de dados mais elaboradas, por exemplo, seaborn e bokeh mas não vamos abordar essas bibliotecas nessa sequência de artigos agora.

Considerações finais

Nessa primeira parte a ideia foi só mostrar o que é o pandas e conceitos básicos sobre ele. Nas próximas partes vamos explorar a utilização dele e dicas. Se você tiver interesse de aprender mais logo recomendo a trilha de Data Science com Python da DataCamp.

O pandas não é a única biblioteca do Python para esse tipo de manipulações de dados, outra concorrente é o Dask.

Author image
Vitória - ES, Brasil Website
Formado em Engenharia de Computação na UFES e trabalhando com desenvolvimento de software para o mercado desde 2012. Hoje estou focado na área de ciência de dados e negócios.