Úprava importů: parsování dat

Streamlined Data Ingestion with pandas

Amany Mahfouz

Instructor

Data a časy

  • Data a časy mají vlastní datový typ a interní reprezentaci
  • Hodnoty datetime lze převést na řetězcové reprezentace
  • Společná sada kódů pro popis formátování řetězců datetime
Streamlined Data Ingestion with pandas

pandas a Datetimes

  • Sloupce datetime jsou ve výchozím nastavení načteny jako objekty (řetězce)
  • Sloupce s datetimes specifikujte argumentem parse_dates (ne dtype!)
  • parse_dates přijímá:
    • seznam názvů nebo čísel sloupců k parsování
    • seznam obsahující seznamy sloupců ke sloučení a parsování
    • slovník, kde klíče jsou nové názvy sloupců a hodnoty jsou seznamy sloupců ke společnému parsování
Streamlined Data Ingestion with pandas

pandas a Datetimes

Tabulka se sloupci dat a časů v různých formátech

Streamlined Data Ingestion with pandas

pandas a Datetimes

Tabulka s daty a časy, zvýrazněné sloupce ve standardním formátu

Streamlined Data Ingestion with pandas

pandas a Datetimes

Tabulka s daty a časy, zvýrazněný sloupec pouze s datem a sloupec pouze s časem

Streamlined Data Ingestion with pandas

pandas a Datetimes

Tabulka s daty a časy, zvýrazněný sloupec s neobvyklým formátem datetime

Streamlined Data Ingestion with pandas

Parsování 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)
Streamlined Data Ingestion with pandas

Parsování 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
Streamlined Data Ingestion with pandas

Parsování 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]
Streamlined Data Ingestion with pandas

Parsování 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]
Streamlined Data Ingestion with pandas

Nestandardní data

  • parse_dates nefunguje s nestandardními formáty datetime
  • Pokud parse_dates nefunguje, použijte po načtení dat pd.to_datetime()
  • Argumenty to_datetime():
    • DataFrame a sloupec k převodu
    • format: řetězcová reprezentace formátu datetime
Streamlined Data Ingestion with pandas

Formátování datetime

  • Formátování řetězců datetime se popisuje pomocí kódů a znaků
  • Úplný seznam naleznete na strftime.org
Streamlined Data Ingestion with pandas

Formátování datetime

Kód Význam Příklad
%Y Rok (4 číslice) 1999
%m Měsíc (s nulou) 03
%d Den (s nulou) 01
%H Hodina (24hod.) 21
%M Minuta (s nulou) 09
%S Sekunda (s nulou) 05
Streamlined Data Ingestion with pandas

Parsování nestandardních dat

Tabulka s daty a časy, zvýrazněný sloupec s neobvyklým formátem datetime

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

survey_df["Part2EndTime"] = pd.to_datetime(survey_df["Part2EndTime"], format=format_string)
Streamlined Data Ingestion with pandas

Parsování nestandardních 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]
Streamlined Data Ingestion with pandas

Lass uns üben!

Streamlined Data Ingestion with pandas

Preparing Video For Download...