Pandas: de Zero a Herói
Um artigo completo que você pode ler enquanto assiste à sua TV diurna favorita, mas bom o suficiente para ensinar tudo o que você precisa saber para realmente fazer o trabalho.
Começando
Pandas é uma biblioteca de análise e processamento de dados em Python. O Pandas é amplamente usado para Ciência de Dados e Aprendizado de Máquina. Ele é desenvolvido em cima de outro pacote Python chamado NumPy, que é usado para computação científica. Se você não sabe muito sobre o NumPy, talvez queira dar uma olhada rapidamente lendo meu artigo de 5 minutos antes de continuar com o Pandas. Isso não é obrigatório, mas eu recomendo.
Para começar, primeiro certifique-se de ter Python, NumPy e Pandas em seu sistema. Como obtê-lo depende do seu sistema e do IDE de sua preferência, mas eu recomendo o Anaconda. Com a instalação básica do Anaconda, você pode simplesmente ir ao terminal e executar “conda install numpy” e depois “conda install pandas” e voila!
Agora, vamos criar um arquivo example.py para começar a trabalhar.
Nota: Se criássemos um projeto em vez de um único arquivo de exemplo para trabalhar, teríamos que simplesmente criar um diretório e um arquivo __init__.py dentro dele.
Você deve adicionar as seguintes linhas ao topo do arquivo para poder trabalhar com Pandas dentro do arquivo.
importar numpy como np
importar pandas como pd
Nota: Geralmente importamos NumPy como np e Pandas como pd para que não tenhamos que digitar numpy & pandas toda vez que chamamos uma função das bibliotecas. Lembre-se de que, embora possam ser alterados, np e pd são a convenção geral.
Depois disso, você pode executar o código dentro do arquivo de exemplo simplesmente acessando o terminal e executando o comando:
python exemplo.py
Series
Semelhante a como qualquer linguagem de programação possui matrizes, da mesma forma que o NumPy possui matrizes, obtemos séries em Pandas. A principal diferença entre séries e matrizes/arrays comuns é que os itens dentro da série podem ter um número de índice ou chaves para acessar esse valor. Pense nisso como uma lista de pares chave-valor, como dados JSON.
Curiosidade: o Pandas costuma ser expresso como “Excel for Data Science” devido ao fato de economizar valor — pares de chaves, exibi-los visualmente e realizar cálculos neles de maneira semelhante ao MS Excel.
Você pode criar uma série Pandas a partir de um dicionário Python:
meuDicionário = { “João” : 35, “Jane” : 40}
pd.Series(myDictionary) // retorna John 35, Jane 40
Se você adicionasse um array em vez de um dicionário, os itens dentro da série teriam números inteiros como chaves:
meuArray = [ 35, 40]
pd.Series(myArray) // retorna 0 35, 1 40
Você pode adicionar duas matrizes e criar uma série delas como:
meuArray1 = [ 35, 40]
meuArray2 = [ “João”, “Jane”]
pd.Series(data= myArray1, index=myArray2) // retorna John 35, Jane 40
Se houver duas séries diferentes com as mesmas chaves, você pode realizar operações matemáticas sobre elas como:
series1 = pd.Series({ “John” : 35, “Jane” : 40})
series2 =pd.Series({ “John” : 100, “Jane” : 50})
seriesSum = series1 + series2 // retorna John 135, Jane 90
Nota: Ao executar uma operação matemática em séries com chaves diferentes, as chaves correspondentes terão o resultado da operação como seu valor, mas as chaves não combinadas terão um valor de NaN, pois não haverá resultado para essas chaves.
Quadros de Dados
Os quadros de dados podem ser considerados como uma série, mas para matrizes. Basicamente, uma matriz onde os índices são chaves e tudo é um par chave-valor é chamada de quadro de dados.
Você pode criar um quadro de dados de qualquer array ou matriz como:
minhaMatriz = [ [10, 20, 30], [ 100, 200, 300] ]
dataFrame = pd.DataFrame(minhaMatriz)
Você pode atribuir chaves de colunas e linhas como:
minhaMatriz = [ [ 1, 2, 3],[10, 20, 30], [ 100, 200, 300] ]
linhas = [ “John”, “Jane”, “Sarah” ]
colunas = [ “Tênis”, “Basquete”, “Pingpong”]
dataFrame = pd.DataFrame(myMatrix, index = linhas, colunas = colunas)
Você pode chamar uma determinada coluna do quadro de dados como:
dataFrame[“Tênis”]
Se você chamasse uma linha com a chave mostrada acima, no entanto, isso geraria um erro. Você pode chamar uma linha com a chave como:
dataFrame.loc[“João” ]
O fato de existirem chaves para chamar colunas e linhas não significa que não existam índices. Assim como nas matrizes, os índices ainda existem. Você pode, por exemplo, chamar a primeira linha como:
dataFrame.iloc[1] // retorna a linha Jane com os valores 2, 20, 200
Você pode adicionar uma nova coluna ao quadro de dados como:
dataFrame[“Futebol”] = [1000, 2000, 3000]
Vice-versa, você pode excluir uma coluna ou linha do quadro de dados como:
dataFrame.drop( “Football”, axis=1, inPlace=True) // para excluir uma coluna você deve definir o eixo como 1
dataFrame.drop( “John”, axis=0, inPlace=True) // para excluir uma linha você deve definir o eixo como 0
Nota: O Pandas não quer que você altere por engano uma coluna inteira ou uma linha. Talvez você esteja tentando criar outro quadro de dados e definir o quadro de dados antigo com uma coluna ausente, em vez de realmente alterar o antigo? Portanto, para garantir que você esteja realmente alterando o próprio quadro de dados, colocamos o parâmetro inPlace=True dentro das funções.
Você pode chamar um valor de célula como:
dataFrame.loc[“João”, “Tênis”]
Você pode eliminar dentro dos quadros de dados como:
dataFrame[ dataFrame[“Tênis”] > 5]
// irá deletar as linhas onde o valor da coluna Tennis for menor que 5, portanto, irá deletar a linha John
Para alterar os índices em um quadro de dados, primeiro você deve adicionar a nova matriz de índice como uma coluna ao quadro de dados antigo. Então, você pode capturá-lo pelo nome da coluna e atribuir seus valores como os novos índices como:
dataFrame.set_indexes(“Nova Coluna de Índice”, inPlace=True)
Um quadro de dados de vários índices se parece com isso no Excel:
Onde há dois índices para linhas, Frutas e Legumes E o nome do produto. Também podemos criar vários índices como este via Pandas. Para fazer isso você deve:
- Defina duas listas de índices externos e índices internos e, em seguida, combine esses dois em uma lista de tupla uzing e métodos zip.
- Em seguida, use o método MultiIndex.from_tuples() para transformar a tupla em um índice múltiplo.
- Em seguida, crie uma lista de colunas.
- Depois disso, crie uma lista dos dados como uma matriz e transforme-a em uma matriz usando o método np.array().
- Por fim, use a função DataFrame() do Pandas para criar o quadro de dados com vários índices.
outerIndexes = [“Vegetais”, “Vegetais”, “Frutas”, “Frutas”]
innerIndexes = [“Tomates”, “Pepinos”, “Laranjas”, “Mirtilos”]
CombineIndexes = list( zip(outerIndexes, innerIndexes) )
CombinedIndexes = pd.MultiIndex.from_tuples(combinedIndexes)
listAmountPrice =[ [ 2 USD, 5 lbs], [ 1 USD, 3 lbs], [ 2 USD, 3 lbs], [ 3 USD, 2 lbs] ]
numpySeriesAmountPrice = np.array( listAmountPrice )
minhasColunas = [ “Preço”, “Valor” ]
multiIndexDataFrame = pd.DataFrame( numpySeriesAmountPrice, index = combinadoIndexes, colunas = myColumns)
E então, você pode chamar o valor e o preço dos Blueberries como:
multiIndexDataFrame.loc[ “Frutas” ].loc[ “Mirtilos” ]
Você também pode dar alguns nomes às colunas de índices múltiplos, assim:
multiIndexDataFrame.index.names = [ “Corredor”, “Nome do produto” ]
Operações
- Para retornar um quadro de dados do quadro de dados original com as linhas que contêm valores NaN excluídos:
- Para retornar um quadro de dados do quadro de dados original com as colunas que contêm valores NaN excluídos:
- Para retornar um quadro de dados do quadro de dados original com as linhas que contêm mais de dois valores NaN excluídos:
- Para retornar um quadro de dados do quadro de dados original com as células que contêm um valor NaN alterado para um determinado valor, digamos, o inteiro 20:
- Para executar operações e coletar dados sobre um quadro de dados com base em uma coluna, você deve agrupar o quadro de dados em relação a essa coluna usando groupby. Em seguida, você pode executar operações para contar os dados contidos, obter a média dos valores, etc.
group.mean() // obtém a média dos salários dentro da tabela
group.count() // calcula quantos funcionários recebem um determinado salário para cada salário
group.describe() // traz alguns resultados de análises estatísticas como a média, os valores máximo e mínimo, etc. para esse quadro de dados relativo à coluna "Salário" agrupada
- Se você tiver dois ou mais quadros de dados com as mesmas colunas, poderá reuni-los (um abaixo do outro) assim:
- Da mesma forma, se você tiver dois ou mais quadros de dados com as mesmas linhas, poderá reuni-los (um abaixo do outro) assim:
- No entanto, se você estiver procurando obter dois ou mais quadros de dados com colunas diferentes, use o método de mesclagem abaixo. Mas lembre-se, para poder fazer isso, todos os quadros de dados que você mesclar devem ter pelo menos uma coluna em comum.
- Você pode trazer apenas os valores exclusivos dentro de uma coluna em um banco de dados como:
- Você pode calcular quantos valores exclusivos existem em uma coluna em um quadro de dados como:
- Você pode definir uma função e aplicá-la a cada valor em um quadro de dados com a função .apply(). Para explicar melhor em um exemplo:
return price * 1.33 // função que adiciona %33 de imposto ao preço original
priceDataFrame[ “Price” ].apply( priceWithTax ) // retorna uma série com os preços atualizados
Excel com Pandas
Embora tenhamos trabalhado com quadros de dados e séries acima, os dados da vida real provavelmente serão entregues a você na forma de um arquivo do Excel.
Para poder trabalhar com um arquivo do Excel, certifique-se de salvá-lo exatamente no mesmo diretório onde está o arquivo python (o arquivo python no qual você executará as funções e operações do Pandas). Em seguida, você pode importar seu arquivo do Excel como:
myDataFrame = pd.read_excel( “myExcelFile.xlsx” )
Os arquivos do Excel serão importados como tipo DataFrame por padrão, então você está pronto para ir!
Conclusão
Existem muitas outras funções predefinidas e estruturas fáceis de usar dentro do Pandas que você pode precisar, dependendo da tarefa, mas até aqui deve ser suficiente para ajudá-lo a realizar o trabalho. Se você está procurando uma carreira inteira nisso ou se está interessado em aprender mais, pode continuar a partir de cursos ou pesquisas de nível avançado ao se deparar com a necessidade de algo mais (algo mais inteligente!) Enquanto trabalha em uma tarefa. A Pandas tem solução para quase tudo!





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)