ノンプログラマーのためのPython学習サイト

Pandas|日付を変換する方法

eye_catch_Pandas

困っている人

  • Pandasで日付を変換する方法を知りたい
  • Datetimeモジュールの使い方を知りたい
  • 日付変換の具体的な操作方法を教えてほしい
この記事で解決できること

Pandasで日付を変換する方法が分かる

  1. Datetimeモジュールの使い方が分かる
  2. 日付変換の具体的な操作が分かる

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″]

  • 日付データ_1(’date_1‘)
  • 日付データ_2(’date_2‘)
  • 日付データ_3(’date_3‘)

[/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の日付変換でよく使用するので参考にしてください。

最後まで読んでいただき、ありがとうございます。