Modifier les importations : analyser des dates

Ingestion de données rationalisée avec pandas

Amany Mahfouz

Instructor

Données de date et d'heure

  • Les dates et heures ont leur propre type et représentation interne
  • Les valeurs datetime peuvent être converties en chaînes
  • Ensemble commun de codes pour formater les chaînes datetime
Ingestion de données rationalisée avec pandas

pandas et les datetime

  • Par défaut, les colonnes datetime sont chargées comme objets (chaînes)
  • Indiquez que des colonnes sont des datetime avec l'argument parse_dates (pas dtype !)
  • parse_dates accepte :
    • une liste de noms ou numéros de colonnes à analyser
    • une liste contenant des listes de colonnes à combiner et analyser
    • un dictionnaire où les clés sont les nouveaux noms de colonnes et les valeurs des listes de colonnes à analyser ensemble
Ingestion de données rationalisée avec pandas

pandas et les datetime

Feuille de calcul avec colonnes de date et d'heure de formats variés

Ingestion de données rationalisée avec pandas

pandas et les datetime

Feuille de calcul avec colonnes de date et d'heure au format standard mises en évidence

Ingestion de données rationalisée avec pandas

pandas et les datetime

Feuille de calcul avec une colonne seulement date et une seulement heure mises en évidence

Ingestion de données rationalisée avec pandas

pandas et les datetime

Feuille de calcul avec une colonne au format datetime inhabituel mise en évidence

Ingestion de données rationalisée avec pandas

Analyse des dates

# Lister les colonnes de dates à analyser
date_cols = ["Part1StartTime", "Part1EndTime"]

# Charger le fichier en analysant les colonnes datetime standard survey_df = pd.read_excel("fcc_survey.xlsx", parse_dates=date_cols)
Ingestion de données rationalisée avec pandas

Analyse des dates

# Vérifier les types des colonnes d'horodatage
print(survey_df[["Part1StartTime", 
                 "Part1EndTime", 
                 "Part2StartDate", 
                 "Part2StartTime", 
                 "Part2EndTime"]].dtypes)
Part1StartTime    datetime64[ns]
Part1EndTime      datetime64[ns]
Part2StartDate            object
Part2StartTime            object
Part2EndTime              object
dtype: object
Ingestion de données rationalisée avec pandas

Analyse des dates

# Lister les colonnes de dates à analyser
date_cols = ["Part1StartTime", 
             "Part1EndTime",

[["Part2StartDate", "Part2StartTime"]]]
# Charger le fichier en analysant les colonnes datetime standard et séparées survey_df = pd.read_excel("fcc_survey.xlsx", parse_dates=date_cols)
print(survey_df.head(3))
  Part2StartDate_Part2StartTime   Age       ...    SchoolMajor  StudentDebtOwe
0           2016-03-29 21:24:57  28.0       ...            NaN           20000
1           2016-03-29 21:27:14  22.0       ...            NaN             NaN
2           2016-03-29 21:27:13  19.0       ...            NaN             NaN

[3 rows x 98 columns]
Ingestion de données rationalisée avec pandas

Analyse des dates

# Lister les colonnes de dates à analyser
date_cols = {"Part1Start": "Part1StartTime", 
             "Part1End": "Part1EndTime",
             "Part2Start": ["Part2StartDate", 
                             "Part2StartTime"]}


# Charger le fichier en analysant les colonnes datetime standard et séparées survey_df = pd.read_excel("fcc_survey.xlsx", parse_dates=date_cols) print(survey_df.Part2Start.head(3))
0   2016-03-29 21:24:57
1   2016-03-29 21:27:14
2   2016-03-29 21:27:13
Name: Part2Start, dtype: datetime64[ns]
Ingestion de données rationalisée avec pandas

Dates non standard

  • parse_dates ne fonctionne pas avec des formats datetime non standard
  • Utilisez pd.to_datetime() après le chargement si parse_dates ne convient pas
  • Arguments de to_datetime() :
    • DataFrame et colonne à convertir
    • format : chaîne qui décrit le format datetime
Ingestion de données rationalisée avec pandas

Formatage des datetime

  • Décrivez le formatage des chaînes datetime avec des codes et des caractères
  • Consultez strftime.org pour la liste complète
Ingestion de données rationalisée avec pandas

Formatage des datetime

Code Signification Exemple
%Y Année (4 chiffres) 1999
%m Mois (avec zéro) 03
%d Jour (avec zéro) 01
%H Heure (24 h) 21
%M Minute (avec zéro) 09
%S Seconde (avec zéro) 05
Ingestion de données rationalisée avec pandas

Analyser des dates non standard

Feuille de calcul avec une colonne au format datetime inhabituel mise en évidence

format_string = "%m%d%Y %H:%M:%S"

survey_df["Part2EndTime"] = pd.to_datetime(survey_df["Part2EndTime"], format=format_string)
Ingestion de données rationalisée avec pandas

Analyser des dates non standard

print(survey_df.Part2EndTime.head())
0   2016-03-29 21:27:25
1   2016-03-29 21:29:10
2   2016-03-29 21:28:21
3   2016-03-29 21:30:51
4   2016-03-29 21:31:54
Name: Part2EndTime, dtype: datetime64[ns]
Ingestion de données rationalisée avec pandas

Passons à la pratique !

Ingestion de données rationalisée avec pandas

Preparing Video For Download...