Modyfikowanie importów: parsowanie dat

Sprawne importowanie danych z pandas

Amany Mahfouz

Instructor

Dane daty i czasu

  • Daty i godziny mają własny typ danych i wewnętrzną reprezentację
  • Wartości datetime można przekształcać w reprezentacje tekstowe
  • Wspólny zestaw kodów do opisu formatowania ciągów datetime
Sprawne importowanie danych z pandas

pandas i typy datetime

  • Kolumny datetime są domyślnie wczytywane jako obiekty (ciągi tekstowe)
  • Użyj argumentu parse_dates (nie dtype!), aby wskazać kolumny z datami
  • parse_dates może przyjmować:
    • listę nazw lub numerów kolumn do sparsowania
    • listę list kolumn do połączenia i sparsowania
    • słownik, gdzie klucze to nowe nazwy kolumn, a wartości to listy kolumn do wspólnego parsowania
Sprawne importowanie danych z pandas

pandas i typy datetime

Arkusz kalkulacyjny z kolumnami daty i czasu w różnych formatach

Sprawne importowanie danych z pandas

pandas i typy datetime

Arkusz kalkulacyjny z danymi daty i czasu z wyróżnionymi kolumnami w standardowym formacie

Sprawne importowanie danych z pandas

pandas i typy datetime

Arkusz kalkulacyjny z danymi daty i czasu, z wyróżnioną kolumną tylko z datą i kolumną tylko z godziną

Sprawne importowanie danych z pandas

pandas i typy datetime

Arkusz kalkulacyjny z danymi daty i czasu, z wyróżnioną kolumną w niestandardowym formacie datetime

Sprawne importowanie danych z pandas

Parsowanie dat

# 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)
Sprawne importowanie danych z pandas

Parsowanie dat

# 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
Sprawne importowanie danych z pandas

Parsowanie dat

# 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]
Sprawne importowanie danych z pandas

Parsowanie dat

# 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]
Sprawne importowanie danych z pandas

Niestandardowe daty

  • parse_dates nie działa z niestandardowymi formatami datetime
  • Użyj pd.to_datetime() po wczytaniu danych, jeśli parse_dates nie zadziała
  • Argumenty to_datetime():
    • DataFrame i kolumna do konwersji
    • format: ciąg tekstowy opisujący format datetime
Sprawne importowanie danych z pandas

Formatowanie datetime

  • Formatowanie ciągów datetime opisuje się za pomocą kodów i znaków
  • Pełna lista dostępna na strftime.org
Sprawne importowanie danych z pandas

Formatowanie datetime

Kod Znaczenie Przykład
%Y Rok (4-cyfrowy) 1999
%m Miesiąc (z zerem) 03
%d Dzień (z zerem) 01
%H Godzina (24-godzinna) 21
%M Minuta (z zerem) 09
%S Sekunda (z zerem) 05
Sprawne importowanie danych z pandas

Parsowanie niestandardowych dat

Arkusz kalkulacyjny z danymi daty i czasu, z wyróżnioną kolumną w niestandardowym formacie datetime

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

survey_df["Part2EndTime"] = pd.to_datetime(survey_df["Part2EndTime"], format=format_string)
Sprawne importowanie danych z pandas

Parsowanie niestandardowych dat

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]
Sprawne importowanie danych z pandas

Czas na ćwiczenia!

Sprawne importowanie danych z pandas

Preparing Video For Download...