Modificarea importurilor: parsarea datelor

Ingestie eficientă a datelor cu pandas

Amany Mahfouz

Instructor

Date și ore

  • Datele și orele au propriul tip de date și reprezentare internă
  • Valorile datetime pot fi convertite în reprezentări șir de caractere
  • Există un set comun de coduri pentru formatarea șirurilor datetime
Ingestie eficientă a datelor cu pandas

pandas și Datetime

  • Coloanele datetime sunt încărcate implicit ca obiecte (șiruri)
  • Specificați că o coloană conține datetime cu argumentul parse_dates (nu dtype!)
  • parse_dates poate accepta:
    • o listă de nume sau numere de coloane de parsat
    • o listă de liste de coloane de combinat și parsat
    • un dicționar în care cheile sunt nume noi de coloane, iar valorile sunt liste de coloane de parsat împreună
Ingestie eficientă a datelor cu pandas

pandas și Datetime

Foaie de calcul cu coloane de date și ore în formate diferite

Ingestie eficientă a datelor cu pandas

pandas și Datetime

Foaie de calcul cu date și ore, evidențiind coloanele în format standard

Ingestie eficientă a datelor cu pandas

pandas și Datetime

Foaie de calcul cu date și ore, evidențiind o coloană doar cu date și una doar cu ore

Ingestie eficientă a datelor cu pandas

pandas și Datetime

Foaie de calcul cu date și ore, evidențiind o coloană cu un format neobișnuit de datetime

Ingestie eficientă a datelor cu pandas

Parsarea datelor

# 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)
Ingestie eficientă a datelor cu pandas

Parsarea datelor

# 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
Ingestie eficientă a datelor cu pandas

Parsarea datelor

# 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]
Ingestie eficientă a datelor cu pandas

Parsarea datelor

# 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]
Ingestie eficientă a datelor cu pandas

Date nestandard

  • parse_dates nu funcționează cu formate datetime nestandard
  • Utilizați pd.to_datetime() după încărcarea datelor dacă parse_dates nu funcționează
  • Argumente ale to_datetime():
    • DataFrame-ul și coloana de convertit
    • format: reprezentarea șir a formatului datetime
Ingestie eficientă a datelor cu pandas

Formatarea Datetime

  • Descrieți formatarea șirurilor datetime cu coduri și caractere
  • Consultați strftime.org pentru lista completă
Ingestie eficientă a datelor cu pandas

Formatarea Datetime

Cod Semnificație Exemplu
%Y An (4 cifre) 1999
%m Lună (cu zero inițial) 03
%d Zi (cu zero inițial) 01
%H Oră (format 24h) 21
%M Minut (cu zero inițial) 09
%S Secundă (cu zero inițial) 05
Ingestie eficientă a datelor cu pandas

Parsarea datelor nestandard

Foaie de calcul cu date și ore, evidențiind o coloană cu un format neobișnuit de datetime

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

survey_df["Part2EndTime"] = pd.to_datetime(survey_df["Part2EndTime"], format=format_string)
Ingestie eficientă a datelor cu pandas

Parsarea datelor nestandard

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]
Ingestie eficientă a datelor cu pandas

Să exersăm!

Ingestie eficientă a datelor cu pandas

Preparing Video For Download...