Vincoli di appartenenza

Pulizia dei dati in Python

Adel Nehme

Content Developer @DataCamp

 

 

 

 

 

 

 

Capitolo 2 - Problemi con testi e dati categorici

Pulizia dei dati in Python

Categorie e vincoli di appartenenza

Insieme finito di categorie predefinite

Tipo di dato Valori di esempio Rappresentazione numerica
Stato civile unmarried, married 0,1
Fascia di reddito familiare 0-20K, 20-40K, ... 0,1, ..
Stato del prestito default,payed,no_loan 0,1,2

 

Lo stato civile può solo essere unmarried _o_ married

Pulizia dei dati in Python

Perché possiamo avere questi problemi?

problemi_categorici

Pulizia dei dati in Python

Come trattiamo questi problemi?

    categorie

Pulizia dei dati in Python

Un esempio

# Leggi i dati dello studio e stampali
study_data = pd.read_csv('study.csv')
study_data
      name   birthday blood_type
1     Beth 2019-10-20         B-
2 Ignatius 2020-07-08         A-
3     Paul 2019-08-12         O+
4    Helen 2019-03-17         O-
5 Jennifer 2019-12-17         Z+
6  Kennedy 2020-04-27         A+
7    Keith 2019-04-19        AB+
# Tipi di sangue validi
categories
  blood_type
1         O-
2         O+
3         A-
4         A+
5         B+
6         B-
7        AB+
8        AB-
Pulizia dei dati in Python

Un esempio

# Leggi i dati dello studio e stampali
study_data = pd.read_csv('study.csv')
study_data
      name   birthday blood_type
1     Beth 2019-10-20         B-
2 Ignatius 2020-07-08         A-
3     Paul 2019-08-12         O+
4    Helen 2019-03-17         O-
5 Jennifer 2019-12-17         Z+  <--
6  Kennedy 2020-04-27         A+
7    Keith 2019-04-19        AB+
# Tipi di sangue validi
categories
  blood_type
1         O-
2         O+
3         A-
4         A+
5         B+
6         B-
7        AB+
8        AB-
Pulizia dei dati in Python

Nota sui join

Pulizia dei dati in Python

Left anti join sui gruppi sanguigni

Pulizia dei dati in Python

Inner join sui gruppi sanguigni

Pulizia dei dati in Python

Trovare categorie incoerenti

inconsistent_categories = set(study_data['blood_type']).difference(categories['blood_type'])
print(inconsistent_categories)
{'Z+'}
# Ottieni e stampa le righe con categorie incoerenti
inconsistent_rows = study_data['blood_type'].isin(inconsistent_categories)

study_data[inconsistent_rows]
      name   birthday blood_type
5 Jennifer 2019-12-17         Z+
Pulizia dei dati in Python

Rimuovere le categorie incoerenti

inconsistent_categories = set(study_data['blood_type']).difference(categories['blood_type'])
inconsistent_rows = study_data['blood_type'].isin(inconsistent_categories)
inconsistent_data = study_data[inconsistent_rows]

# Rimuovi le categorie incoerenti e tieni solo i dati coerenti consistent_data = study_data[~inconsistent_rows]
      name   birthday blood_type
1     Beth 2019-10-20         B-
2 Ignatius 2020-07-08         A-
3     Paul 2019-08-12         O+
4    Helen 2019-03-17         O-
...    ...      ...          ...
Pulizia dei dati in Python

Esercitiamoci!

Pulizia dei dati in Python

Preparing Video For Download...