Uniformità

Pulizia dei dati in Python

Adel Nehme

VP of AI Curriculum, DataCamp

In questo capitolo

 

 

 

 

 

 

Capitolo 3 - Problemi di dati avanzati

Pulizia dei dati in Python

Vincoli di intervallo dei dati

range_examples

Pulizia dei dati in Python

Uniformità

Colonna Unità
Temperatura 32°C è anche 89.6°F
Peso 70 Kg è anche 11 st.
Data 26-11-2019 è anche 26, novembre, 2019
Denaro 100$ è anche 10763.90¥
Pulizia dei dati in Python

Un esempio

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
Pulizia dei dati in Python

Un esempio

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   <--
Pulizia dei dati in Python

Un esempio

# Importa matplotlib
import matplotlib.pyplot as plt

# Crea uno scatter plot plt.scatter(x = 'Date', y = 'Temperature', data = temperatures)
# Aggiungi titolo, etichette x e y plt.title('Temperature in Celsius marzo 2019 - NYC') plt.xlabel('Date') plt.ylabel('Temperatura in Celsius')
# Mostra il grafico plt.show()
Pulizia dei dati in Python

Pulizia dei dati in Python

Pulizia dei dati in Python

Trattare i dati di 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
# Verifica che la conversione sia corretta
assert temperatures['Temperature'].max() < 40
Pulizia dei dati in Python

Trattare i dati di 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
Pulizia dei dati in Python

Trattare i dati di data

birthdays.head()

Una tabella che mostra l'output del dataset birthdays: una riga ha una data in formato mese/giorno/anno; un'altra è scritta per esteso; un'ultima riga ha chiaramente un errore, ripetendo due volte il giorno.

Pulizia dei dati in Python

Formattazione datetime

datetime è utile per rappresentare le date

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

pandas.to_datetime()

  • Riconosce automaticamente la maggior parte dei formati
  • A volte fallisce con formati errati o non riconoscibili
Pulizia dei dati in Python

Trattare i dati di data

# Converte in datetime - ma non funzionerà!
birthdays['Birthday'] = pd.to_datetime(birthdays['Birthday'])
ValueError: month must be in 1..12
# Funzionerà!
birthdays['Birthday'] = pd.to_datetime(birthdays['Birthday'],
                                       # Restituisci NA per le righe in cui la conversione fallisce
                                       errors = 'coerce')
Pulizia dei dati in Python

Trattare i dati di 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
Pulizia dei dati in Python

Trattare i dati di 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
Pulizia dei dati in Python

Trattare date ambigue

 

È 2019-03-08 agosto o marzo?

   

  • Converti in NA e tratta di conseguenza
  • Deduci il formato dalla fonte dei dati
  • Deduci il formato dai dati precedenti e successivi nel DataFrame
Pulizia dei dati in Python

Passons à la pratique !

Pulizia dei dati in Python

Preparing Video For Download...