Imports aanpassen: datums parsen

Gestroomlijnde data-inname met pandas

Amany Mahfouz

Instructor

Data: datum en tijd

  • Datums/tijden hebben een eigen datatype en interne representatie
  • Datetimes kun je omzetten naar tekenreeksen
  • Er is een set codes voor datetime-opmaak in tekst
Gestroomlijnde data-inname met pandas

pandas en datetimes

  • Datetime-kolommen worden standaard als object (string) ingelezen
  • Geef met parse_dates aan dat kolommen datetimes zijn (niet met dtype!)
  • parse_dates accepteert:
    • een lijst met kolomnamen of -nummers om te parsen
    • een lijst met lijsten van kolommen om te combineren en te parsen
    • een dictionary met nieuwe kolomnamen als keys en lijsten met kolommen om samen te parsen als values
Gestroomlijnde data-inname met pandas

pandas en datetimes

Spreadsheet met datum- en tijdkolommen met verschillende formaten

Gestroomlijnde data-inname met pandas

pandas en datetimes

Spreadsheet met datum- en tijdgegevens met kolommen in standaardformaat gemarkeerd

Gestroomlijnde data-inname met pandas

pandas en datetimes

Spreadsheet met datum- en tijdgegevens, met een alleen-datumkolom en een alleen-tijdkolom gemarkeerd

Gestroomlijnde data-inname met pandas

pandas en datetimes

Spreadsheet met datum- en tijdgegevens, met een kolom met een ongebruikelijk datetime-formaat gemarkeerd

Gestroomlijnde data-inname met pandas

Datums parsen

# List columns of dates to parse
date_cols = ["Part1StartTime", "Part1EndTime"]

# Load file, parsing standard datetime columns survey_df = pd.read_excel("fcc_survey.xlsx", parse_dates=date_cols)
Gestroomlijnde data-inname met pandas

Datums parsen

# Check data types of timestamp columns
print(survey_df[["Part1StartTime", 
                 "Part1EndTime", 
                 "Part2StartDate", 
                 "Part2StartTime", 
                 "Part2EndTime"]].dtypes)
Part1StartTime    datetime64[ns]
Part1EndTime      datetime64[ns]
Part2StartDate            object
Part2StartTime            object
Part2EndTime              object
dtype: object
Gestroomlijnde data-inname met pandas

Datums parsen

# List columns of dates to parse
date_cols = ["Part1StartTime", 
             "Part1EndTime",

[["Part2StartDate", "Part2StartTime"]]]
# Load file, parsing standard and split datetime columns 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]
Gestroomlijnde data-inname met pandas

Datums parsen

# List columns of dates to parse
date_cols = {"Part1Start": "Part1StartTime", 
             "Part1End": "Part1EndTime",
             "Part2Start": ["Part2StartDate", 
                             "Part2StartTime"]}


# Load file, parsing standard and split datetime columns 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]
Gestroomlijnde data-inname met pandas

Niet-standaard datums

  • parse_dates werkt niet met niet-standaard datetime-formaten
  • Gebruik na het inladen pd.to_datetime() als parse_dates niet werkt
  • Argumenten voor to_datetime():
    • DataFrame en kolom om te converteren
    • format: stringvoorstelling van het datetime-formaat
Gestroomlijnde data-inname met pandas

Datetime-opmaak

  • Beschrijf datetime-opmaak met codes en tekens
  • Zie strftime.org voor de volledige lijst
Gestroomlijnde data-inname met pandas

Datetime-opmaak

Code Betekenis Voorbeeld
%Y Jaar (4 cijfers) 1999
%m Maand (met nul opgevuld) 03
%d Dag (met nul opgevuld) 01
%H Uur (24-uursklok) 21
%M Minuut (met nul opgevuld) 09
%S Seconde (met nul opgevuld) 05
Gestroomlijnde data-inname met pandas

Niet-standaard datums parsen

Spreadsheet met datum- en tijdgegevens, met een kolom met een ongebruikelijk datetime-formaat gemarkeerd

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

survey_df["Part2EndTime"] = pd.to_datetime(survey_df["Part2EndTime"], format=format_string)
Gestroomlijnde data-inname met pandas

Niet-standaard datums parsen

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]
Gestroomlijnde data-inname met pandas

Laten we oefenen!

Gestroomlijnde data-inname met pandas

Preparing Video For Download...