困っている人
- Pandasで日付を変換する方法を知りたい
- Datetimeモジュールの使い方を知りたい
- 日付変換の具体的な操作方法を教えてほしい
Pandasで日付を変換する方法が分かる
- Datetimeモジュールの使い方が分かる
- 日付変換の具体的な操作が分かる
Pythonで日付を変換する方法について
Pythonによる大文字と小文字の変換は、データ分析の前処理によく使われるテクニックです。
実際のビジネスの現場では、Excel等に手入力したデータを使うこともあり、書式がバラバラだと集計に失敗することになります。データ分析は、まずデータの書式が統一されているかを事前に確認する必要があります。
[st-mybox title=”” fontawesome=”” color=”#757575″ bordercolor=”#7ca1b7″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”2″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]
- 2020/4/1
- 2020-4-1
- 20200401
- 2020年4月1日
- 43922(シリアル値)
[/st-mybox]
今回は、Pandasのデータフレームにおける、日付を変換する方法を解説していきます。データ分析の前処理に欠かせないテクニックなので、ぜひ参考にしてください。
Pythonの日付変換モジュール・関数について
今回紹介する日付変換のモジュール・関数の一覧です。
No. | 基本形 | 説明 |
1 | pd.to_datetime | 日付データをDatetime型へ変換 |
2 | dt.strftime(‘%Y/%m/%d’) | 日付データを指定の書式文字列へ変換 |
Pythonの日付変換に使用するサンプルデータ
この記事では以下の3種類のサンプルデータを使います。よろしければ、ダウンロードしてご利用ください。
[st-mybox title=”” fontawesome=”” color=”#757575″ bordercolor=”#7ca1b7″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”2″ titleweight=”bold” fontsize=”” myclass=”st-mybox-class” margin=”25px 0 25px 0″]
[/st-mybox]
また、GoogleColabへのサンプルデータ(Excelファイル)の読み込み方法については、以下の記事を参考にしてください。
[st-card id=180 label=”” name=”” bgcolor=”” color=”” fontawesome=”” readmore=”on”]
Pythonによる日付の変換(シリアル値→Datetime型)
具体例として日付データ(2020/4/1〜2020/4/8)を使って、”シリアル値”から”Datetime型”への変換方法を説明します。まずはExcelファイルを読み込んでください。
Excelファイル(date_1)の読み込み
Pandasを使ってExcelファイルを読み込みます。日付の列には”シリアル値”が出力されています。シリアル値とは、Excelで日時を計算するための数値のことです。
import pandas as pd
df_1=pd.read_excel('date_1.xlsx')
df_1
1.pandasをインポート
2.変数(df_1)にExcelファイルから読み込んだデータフレームを代入
3.変数(df_1)を出力
Pythonによる日付の変換(シリアル値→Datetime型)
シリアル値からDatetime型に変換する方法は以下のとおりです。「日付_1」に変換後の日付が表示されています。
df_1['日付_1'] = pd.to_timedelta(df_1['日付'],unit='D')+pd.to_datetime("1899/12/30")
df_1
1.変数(df_1[‘日付_1’])に、シリアル値からDatetime型に変換した日付を代入
2.変数(df_1)を出力
「pd.to_datetime(“1899/12/30”)」の部分は、Excelが1900 年 1 月 1 日から計算する設定のため、このような記述をしています。
Pythonによる日付の変換(文字列型→Datetime型)
次に、”文字列型”から”Datetime型”に変換する方法を説明します。まずはExcelファイルを読み込んでください。
Excelファイル(date_2)の読み込み
Pandasを使ってExcelファイルを読み込みます。下記のとおり、日付の列には”文字列型”の日付が出力されています。
df_2 = pd.read_excel('date_2.xlsx')
df_2
1.変数(df_2)にExcelファイルから読み込んだデータフレームを代入
2.変数(df_2)を出力
Pythonによる日付の変換(文字列型→Datetime型)
文字列型からDatetime型に変換する方法は以下のとおりです。「日付_1」に変換後の日付が表示されています。
df_2['日付_1'] = pd.to_datetime(df_2['日付'], format='%Y年%m月%d日')
df_2
1.変数(df_2[‘日付_1’])に、文字列型からDatetime型に変換した日付を代入
2.変数(df_2)を出力
日付・時間フォーマットの指定について
日付・時間フォーマットには様々な種類があるので、必要に応じて使い分けてください。詳しくは、Pythonのドキュメントをご確認ください。
フォーマット | 意味 |
%Y | 年(4桁) |
%m | 月(2桁) |
%d | 日(2桁) |
%H | 時間(24時間) |
%M | 分 |
%S | 秒 |
Pythonによる日付の変換(数値型→Datetime型)
次に、”数値型”から”Datetime型”に変換する方法を説明します。まずはExcelファイルを読み込んでください。
Excelファイル(date_3)の読み込み
Pandasを使ってExcelファイルを読み込みます。下記のとおり、日付の列には”数値型”の日付が出力されています。
df_3 = pd.read_excel('date_3.xlsx')
df_3
1.変数(df_3)にExcelファイルから読み込んだデータフレームを代入
2.変数(df_3)を出力
Pythonによる日付の変換(数値型→Datetime型)
数値型からDatetime型に変換する方法は以下のとおりです。「日付_1」に変換後の日付&時間が表示されています。
df_3['日付_1'] = pd.to_datetime(df_3['日付'],format='%Y%m%d%H%M%S')
df_3
1.変数(df_3[‘日付_1’])に、数値型からDatetime型に変換した日付を代入
2.変数(df_3)を出力
Pythonによる日付の変換(Datetime型→文字列型)
”Datetime型”から”文字列型”に変換する方法は以下のとおりです。「年月日」に変換後の日付が表示されています。フォーマットを年月日(%Y%m%d)で指定していないため、時間データは省略されています。
df_3['年月日'] = df_3['日付_1'].dt.strftime('%Y/%m/%d')
df_3
1.変数(df_3[‘年月日’])に、Datetime型から文字列型に変換した日付を代入
2.変数(df_3[‘年月日’])を出力
Pythonによる日付の変換|年月日(/)→年月日(漢字)
年月日(/)から年月日(漢字)に変換する方法は以下のとおりです。「年月日(漢字)」に変換後の日付が表示されています。
df_3['年月日(漢字)'] = df_3['日付_1'].dt.strftime('%Y年%m月%d日')
df_3
1.変数(df_3[‘年月日(漢字)’])に、年月日(/)から年月日(漢字)に変換した日付を代入
2.変数(df_3)を出力
Pythonによる日付の変換|年月日(漢字)→年月(漢字)
年月日(漢字)から年月(漢字)に変換する方法は以下のとおりです。「年月(漢字)」に変換後の日付が表示されています。
df_3['年月(漢字)'] = df_3['日付_1'].dt.strftime('%Y年%m月')
df_3
1.変数(df_3[‘年月日(漢字)’])に、年月日(漢字)から年月日(年月)に変換した日付を代入
2.変数(df_3)を出力
Pythonによる日付の変換まとめ
Pythonによる日付の変換方法について解説しました。
データ分析を行う前には、使用するデータの書式が統一されているかを事前に確認する必要があります。バラバラのデータで分析してしまうと、間違った結果を出すことになるからです。
今回ご紹介した「pd.to_datetime」と「dt.strftime(‘%Y/%m/%d’)」は、Pythonの日付変換でよく使用するので参考にしてください。
最後まで読んでいただき、ありがとうございます。