Uniformidade

Limpeza de dados em Python

Adel Nehme

VP of AI Curriculum, DataCamp

Neste capítulo

 

 

 

 

 

 

Capítulo 3 - Problemas avançados de dados

Limpeza de dados em Python

Restrições de faixa de dados

range_examples

Limpeza de dados em Python

Uniformidade

Coluna Unidade
Temperatura 32°C também é 89.6°F
Peso 70 Kg também é 11 st.
Data 26-11-2019 também é 26, November, 2019
Dinheiro 100$ também é 10763.90¥
Limpeza de dados em Python

Um exemplo

temperatures = pd.read_csv('temperature.csv')
temperatures.head()
       Date  Temperature
0  03.03.19         14.0
1  04.03.19         15.0
2  05.03.19         18.0
3  06.03.19         16.0
4  07.03.19         62.6
Limpeza de dados em Python

Um exemplo

temperatures = pd.read_csv('temperature.csv')
temperatures.head()
       Date  Temperature
0  03.03.19         14.0
1  04.03.19         15.0
2  05.03.19         18.0
3  06.03.19         16.0
4  07.03.19         62.6   <--
Limpeza de dados em Python

Um exemplo

# Importar matplotlib
import matplotlib.pyplot as plt

# Criar gráfico de dispersão plt.scatter(x = 'Date', y = 'Temperature', data = temperatures)
# Criar título, xlabel e ylabel plt.title('Temperatura em Celsius março de 2019 - NYC') plt.xlabel('Datas') plt.ylabel('Temperatura em Celsius')
# Mostrar gráfico plt.show()
Limpeza de dados em Python

Limpeza de dados em Python

Limpeza de dados em Python

Tratando dados de temperatura

$$C = (F - 32) \times \frac{5}{9}$$

 

temp_fah = temperatures.loc[temperatures['Temperature'] > 40, 'Temperature']

temp_cels = (temp_fah - 32) * (5/9)
temperatures.loc[temperatures['Temperature'] > 40, 'Temperature'] = temp_cels
# Verificar se a conversão está correta
assert temperatures['Temperature'].max() < 40
Limpeza de dados em Python

Tratando dados de data

birthdays.head()
          Birthday First name Last name
0         27/27/19      Rowan     Nunez
1         03-29-19      Brynn      Yang
2  March 3rd, 2019     Sophia    Reilly
3         24-03-19     Deacon    Prince
4         06-03-19   Griffith      Neal
Limpeza de dados em Python

Tratando dados de data

birthdays.head()

Uma tabela mostrando a saída do conjunto birthdays — uma linha tem data no formato mês, dia, ano; outra está por extenso; a última tem um erro claro — repetindo o dia duas vezes.

Limpeza de dados em Python

Formatação de datetime

datetime é útil para representar datas

Data Formato datetime
25-12-2019 %d-%m-%Y
December 25th 2019 %c
12-25-2019 %m-%d-%Y
... ...

pandas.to_datetime()

  • Reconhece a maioria dos formatos automaticamente
  • Às vezes falha com formatos errados ou desconhecidos
Limpeza de dados em Python

Tratando dados de data

# Converte para datetime — mas não vai funcionar!
birthdays['Birthday'] = pd.to_datetime(birthdays['Birthday'])
ValueError: month must be in 1..12
# Vai funcionar!
birthdays['Birthday'] = pd.to_datetime(birthdays['Birthday'],
                                       # Retorna NA para linhas onde a conversão falhar
                                       errors = 'coerce')
Limpeza de dados em Python

Tratando dados de data

birthdays.head()
    Birthday First name Last name
0        NaT      Rowan     Nunez
1 2019-03-29      Brynn      Yang
2 2019-03-03     Sophia    Reilly
3 2019-03-24     Deacon    Prince
4 2019-06-03   Griffith      Neal
Limpeza de dados em Python

Tratando dados de data

birthdays['Birthday'] = birthdays['Birthday'].dt.strftime("%d-%m-%Y")
birthdays.head()
     Birthday First name Last name
0         NaT      Rowan     Nunez
1  29-03-2019      Brynn      Yang
2  03-03-2019     Sophia    Reilly
3  24-03-2019     Deacon    Prince
4  03-06-2019   Griffith      Neal
Limpeza de dados em Python

Tratando datas ambíguas

 

Está 2019-03-08 em agosto ou março?

   

  • Converter para NA e tratar depois
  • Inferir o formato pela origem dos dados
  • Inferir pelo contexto das linhas anteriores/seguintes no DataFrame
Limpeza de dados em Python

Vamos praticar!

Limpeza de dados em Python

Preparing Video For Download...