3 básicas funções em Pandas para tornar a vida mais fácil

Um guia prático com exemplos trabalhados

Pandas tem como foco principal análise e manipulação de dados predominantes no ecossistema de ciência de dados. Fornece muitas funções e métodos versáteis para realizar uma análise eficiente de dados.

Neste artigo, abordaremos 3 funções pandas que agilizarão e simplificarão o processo de análise de dados.

1. Convert_dtypes

É obrigatório ter um tipo de dados específico para a aplicação de algumas funções. Por exemplo, não podemos fazer nenhuma operação matemática em uma variável com tipo de dados de objeto. Em alguns casos, o tipo de dados de “ strings”é preferido aos tipos de dados “object” para melhorar determinadas operações.

Pandas oferece muitas opções para lidar com conversões de tipo de dados. A função convert_dtypes converte colunas para o melhor tipo de dados possível. É claramente mais prático converter cada coluna separadamente.

Vamos criar um DataFrame de amostra que contenha colunas com tipo de dados do objeto.

import numpy as np
import pandas as pd
name = pd.Series(['John','Jane','Emily','Robert','Ashley'])
height = pd.Series([1.80, 1.79, 1.76, 1.81, 1.75], dtype='object')
weight = pd.Series([83, 63, 66, 74, 64], dtype='object')
enroll = pd.Series([True, True, False, True, False], dtype='object')
team = pd.Series(['A','A','B','C','B'])
df = pd.DataFrame({
'name':name,
'height':height,
'weight':weight,
'enroll':enroll,
'team':team
})
df

O tipo de dados para todas as colunas é object que não é a escolha ideal para manipulação.

df.dtypes
name object
height object
weight object
enroll object
team object
dtype: object

Podemos usar a função convert_dtypes como abaixo:

df_new = df.convert_dtypes()df_new.dtypes
name string
height float64
weight Int64
enroll boolean
team string
dtype: object

Os tipos de dados são convertidos para a melhor opção possível.

Uma característica útil da função convert_dtypes é que podemos converter os valores booleanos em 1 e 0. É mais apropriado para análise de dados.

Só precisamos definir o convert_boolean como falso.

df_new = df.convert_dtypes(convert_boolean=False)

2. Pipe

Considere o seguinte DataFrame:

Queremos fazer três operações como etapas comuns de pré-processamento:

  • Converter altura de medidor para polegada
  • Linhas de queda que têm pelo menos um valor faltando
  • Altere as colunas de string para categoria, se for o caso

Nota: Se o número de categorias for muito pequeno comparado aos valores totais de números, é melhor usar o tipo de dados categóricos em vez de objeto ou string. Isso economiza uma grande quantidade de memória dependendo do tamanho dos dados.

Agora definiremos uma função para cada operação.

def m_to_inc(dataf, column_name):
dataf[column_name] = dataf[column_name] / 0.0254
return dataf
def drop_missing(dataf):
dataf.dropna(axis=0, how='any', inplace=True)
return dataf
def to_category(dataf):
cols = dataf.select_dtypes(include='string').columns
for col in cols:
ratio = len(dataf[col].value_counts()) / len(dataf)
if ratio < 0.05:
dataf[col] = dataf[col].astype('category')
return dataf

Você pode questionar a definição de funções, afinal, não parece simplificar o fluxo de trabalho. Você está certo para uma tarefa em particular, mas precisamos pensar de forma mais geral.

Considere que você está fazendo as mesmas operações muitas vezes. Nesse caso, a criação de um pipe facilita o processo e também gera código mais limpo.

Aqui temos um pipe em Pandas que combina as três operações que definimos:

df_processed = (df.
pipe(m_to_inc, 'height').
pipe(drop_missing).
pipe(to_category))

Parece limpo e organizado. Podemos adicionar quantos passos quisermos.

O único critério é que as funções no pipe devem tomar um DataFrame como argumento e retornar um DataFrame.

Nota: Uma coisa importante a mencionar é que a função do tubo modifica o dataframe original. Devemos evitar alterar o conjunto de dados original, se possível. Para superar esse problema, podemos usar uma cópia do dataframe original no pipe.

3. Plot

A vantagem de criar plots com Pandas é que podemos rapidamente gerar tramas informativas. A sintaxe também é bastante simples em comparação com as bibliotecas de visualização de dados.

Considere o DataFrame a seguir que contém dados sobre uma campanha de marketing.

Podemos facilmente criar um histograma para ver a distribuição da coluna do valor gasto.

marketing.AmountSpent.plot(
kind ='hist',
title ='Amount Spent',
figsize = (8,5))

Também podemos criar um gráfico de dispersão para visualizar a relação entre o salário e as colunas gastas.

marketing.plot(
x ='Salary',
y ='AmountSpent',
kind ='scatter',
title ='Salary vs Amount Spent',
figsize = (8,5))

Existem muitas outras plotagens que podemos facilmente gerar aplicando a função de plot em dataframe ou séries em pandas. Pandas é uma biblioteca suficiente para cobrir a maioria das visualizações de dados necessárias em um processo típico de análise de dados.

No entanto, se você precisa de visualizações mais avançadas ou interativas, pandas não seria a escolha ideal.

Conclusão

Há, é claro, muito mais funções e operações que o Pandas fornece, o que a torna uma das bibliotecas mais usadas para análise de dados.

Obrigado.

Composing a repository of books (i bought), authors (i follow) & blogs (direct ones) for my own understanding.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store