Entrar no universo de data science vem se tornando cada vez fácil. Isto pois há uma crescente implementação neste mercado de bibliotecas e linguagens de alto-nível, como o Pandas e o Python, para que a manipulação de um alto número de dados não se torne uma tarefa complicada.
Tabela de Conteúdos
1. Introdução
Como um programador web venho dedicando meu tempo ao estudo de tecnologias relacionadas a front-end. No entanto, percebi que uma das linguagens que me introduziram à programação estava empoeirada na minha estante, o Python. Havia um bom tempo desde que eu sequer toquei nela novamente, e isso me incomodou.
Foi conhecendo o data science, através de um programa de estudos que utilizava o Python e o Pandas, que eu decidi desempoeirar a coitada e abraçar uma nova jornada na minha vida. Este artigo contêm o meu aprendizado até o momento sobre a biblioteca.
2. Entendendo a Biblioteca Pandas
O Pandas foi uma biblioteca originalmente criada para fins internos à uma empresa, mas que com o tempo, foi se tornando parte da comunidade open-source, e hoje possui a contribuição de muitos desenvolvedores ao redor do mundo para sua evolução.
Seu principal objetivo é trabalhar com informações, sejam tabuladas ou em sequência (em tabela ou em lista). Além de apresentar poderosas ferramentas e integrações com outras bibliotecas que compõem o universo do data science no Python.
Seus dois tipos de estruturas mais comuns são o DataFrame
e a Series
, que apesar de possuirem a função em comum de armazenar dados, são manuseados de formas diferentes, e um depende do outro para coexistirem.
3. Estruturas de Dados
3.1. DataFrames
Sendo uma estrutura tabulada, o DataFrame
armazena os dados de forma parecida com o Excel ou CSV, atribuindo à uma matriz de duas dimensões linhas e colunas, que quando em conjunto, apontam para uma única célula de informação.
Coluna | Coluna | Coluna | Coluna | |
---|---|---|---|---|
Linha | Célula | Célula | Célula | Célula |
Linha | Célula | Célula | Célula | Célula |
Linha | Célula | Célula | Célula | Célula |
Sua criação pode ser realizada através de listas, dicionários, arrays do Numpy, ou outro DataFrame. Para a leitura de arquivos, o Pandas possui funções auxiliares que possuem o nome seguindo o formato read_T()
, sendo T
o tipo do arquivo, como por exemplo csv (read_csv()
); html (read_html()
); excel (read_excel()
); etc.
Utilizarei abaixo dois exemplos que aprendi durante meus estudos, um dataset sobre carros: (1) escrito manualmente como lista; (2) lido de um arquivo CSV:
import pandas as pd
# Definição dos dados
dados = [
{'Nome': 'Jetta Variant', 'Motor': 'Motor 4.0 Turbo', 'Ano': 2003, 'Quilometragem': 44410.0, 'Zero_km': False, 'Valor': 88078.64},
{'Nome': 'Passat', 'Motor': 'Motor Diesel', 'Ano': 1991, 'Quilometragem': 5712.0, 'Zero_km': False, 'Valor': 106161.94},
{'Nome': 'Crossfox', 'Motor': 'Motor Diesel V8', 'Ano': 1990, 'Quilometragem': 37123.0, 'Zero_km': False, 'Valor': 72832.16}
]
dataframe = pd.DataFrame(dados)
dataframe
import pandas as pd
# Leitura do arquivo CSV
carros = pd.read_csv('db.csv', sep=';', index_col='Nome')
carros
Como é possivel ver, ambos os casos trazem as mesmas colunas, porém com quantidades diferentes de linhas. Por conter muitas linhas no arquivo, o display da tabela encurta a quantidade para apenas 10, que é o padrão.
3.2. Series
As Series
são sequencias de dados e possuem uma estrutura similar a uma lista no Python. Elas podem ser criadas a partir de uma lista, um dicionário, ou array do Numpy.
carros = ['Jetta Variant', 'Passat', 'Crossfox']
pd.Series(carros)
Índice | Valor |
---|---|
0 | Jetta Variant |
1 | Passat |
2 | Crossfox |
dtype: object |
4. Querying
Uma das ferramentas poderosas de um DataFrame
é sua habilidade de executar queries (pesquisas) em cima dos dados. O retorno de uma query pode tanto ser uma cópia do DataFrame
que possui apenas os valores requeridos, ou uma Series
de índice ou booleana.
As queries podem ser realizadas tanto dentro de colchetes ([]
) após o nome do DataFrame
, quando usando o método query()
.
# Usando colchetes
dataframe[dataframe.ColumnName == "VALOR"]
dataframe[dataframe['ColumnName'] == "Valor"]
# Usando query()
dataframe.query('ColumnName == "Valor"')
A razão de utilizar uma ou outra é meramente sintática, isto pois o query por colchetes possui uma estrutura não muito convencional no Python e pode ser considerada complicada. Já o query()
utiliza a sintáxe própria do Python para realizar as buscas, então é uma alternativa mais amigável:
df[(df.IsActive == True) & (df.Name.str.startswith("Nicholas"))]
df.query('IsActive == True and Name.str.startswith("Nicholas")')
5. Conclusão
O Pandas é uma biblioteca muito poderosa e que abrange diversas ferramentas úteis para manipulação de dados. Sua integração direta com o Numpy permite aos cientistas de dados realizarem suas operações muito mais facilmente.
Como podem ver, estou ainda no começo e pretendo continuar estudando mais sobre essa área para agregar aos meus projetos. Dados são importantes hoje em dia, e é util aprender a manusea-los quando necessário.
Top comments (4)
Não tem como, python e pandas são lindos e devem ser protegidos a todo custo, chega da um gosto a mais de estuda-los <3
Exatamente, os dois fazem um par muito bonito, além de serem mt fáceis de usar 😂
Parabéns pelo conteúdo, quero ver mais da sua evolução nesse tipo de conteúdo 😁!
Muito obrigado pelo incentivo Clinton!