インポートの調整:日付の解析

pandasで効率よくデータを取り込む

Amany Mahfouz

Instructor

日付と時刻データ

  • 日付と時刻は独自のデータ型と内部表現を持つ
  • 日時は文字列表現に変換できる
  • 文字列表現の形式を示す共通のコードがある
pandasで効率よくデータを取り込む

pandas と日時

  • Datetime 列は既定で object(文字列)として読み込まれる
  • 列が日時であることは parse_dates 引数で指定する(dtype ではない)
  • parse_dates は次を受け付ける:
    • 解析する列名または列番号のリスト
    • 結合して解析する列のリストを含むリスト
    • 新しい列名をキー、結合して解析する列のリストを値とする辞書
pandasで効率よくデータを取り込む

pandas と日時

さまざまな形式の日時列を含むスプレッドシート

pandasで効率よくデータを取り込む

pandas と日時

標準形式の列を強調した日付と時刻データのスプレッドシート

pandasで効率よくデータを取り込む

pandas と日時

日付のみと時刻のみの列を強調した日付と時刻データのスプレッドシート

pandasで効率よくデータを取り込む

pandas と日時

日付と時刻データのスプレッドシート。非標準の日時形式の列を強調表示

pandasで効率よくデータを取り込む

日付の解析

# 解析する日付列を指定
date_cols = ["Part1StartTime", "Part1EndTime"]

# 標準的な日時列を解析して読み込む survey_df = pd.read_excel("fcc_survey.xlsx", parse_dates=date_cols)
pandasで効率よくデータを取り込む

日付の解析

# タイムスタンプ列のデータ型を確認
print(survey_df[["Part1StartTime", 
                 "Part1EndTime", 
                 "Part2StartDate", 
                 "Part2StartTime", 
                 "Part2EndTime"]].dtypes)
Part1StartTime    datetime64[ns]
Part1EndTime      datetime64[ns]
Part2StartDate            object
Part2StartTime            object
Part2EndTime              object
dtype: object
pandasで効率よくデータを取り込む

日付の解析

# 解析する日付列を指定
date_cols = ["Part1StartTime", 
             "Part1EndTime",

[["Part2StartDate", "Part2StartTime"]]]
# 標準および分割された日時列を解析して読み込む 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]
pandasで効率よくデータを取り込む

日付の解析

# 解析する日付列を指定
date_cols = {"Part1Start": "Part1StartTime", 
             "Part1End": "Part1EndTime",
             "Part2Start": ["Part2StartDate", 
                             "Part2StartTime"]}


# 標準および分割された日時列を解析して読み込む 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]
pandasで効率よくデータを取り込む

非標準の日付

  • parse_dates は非標準の日時形式には対応しない
  • その場合は読み込み後に pd.to_datetime() を使う
  • to_datetime() の主な引数:
    • 変換するデータフレームと列
    • format: 日時形式の文字列
pandasで効率よくデータを取り込む

日時の書式指定

  • コードと文字で日時の文字列表現を記述する
  • 一覧は strftime.org を参照
pandasで効率よくデータを取り込む

日時の書式指定

Code 意味
%Y 年(4桁) 1999
%m 月(ゼロ埋め) 03
%d 日(ゼロ埋め) 01
%H 時(24時間) 21
%M 分(ゼロ埋め) 09
%S 秒(ゼロ埋め) 05
pandasで効率よくデータを取り込む

非標準日付の解析

日付と時刻データのスプレッドシート。非標準の日時形式の列を強調表示

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

survey_df["Part2EndTime"] = pd.to_datetime(survey_df["Part2EndTime"], format=format_string)
pandasで効率よくデータを取り込む

非標準日付の解析

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]
pandasで効率よくデータを取り込む

Passons à la pratique !

pandasで効率よくデータを取り込む

Preparing Video For Download...