Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで日付シリーズから年間通算日(day of year)を取得して出力する方法

はじめに

pandasを使ったデータ分析では、日付データから「その年の何日目にあたるか」を求めたい場面がよくあります。この記事では、日付シリーズ(Series)から年間通算日(day of year)を簡単に取得して出力するPythonプログラムを紹介します。

解決のアプローチ

この問題を解決するには、以下の手順に従います。

  • 日付のSeriesを定義します。

  • pd.date_range() を使って、開始日 '2020-01-10' から5日分の日付範囲を生成します。

  • Series.dt.dayofyear プロパティを使って、各日付の年間通算日を取得します。

日付範囲の作成

まず、開始日 '2020-01-10' を基準に5つの連続した日付を持つdate_rangeを定義します。コードは以下のとおりです。

pd.date_range('2020-01-10', periods=5)

実装例

それでは、理解を深めるために完全な実装例を見てみましょう。

import pandas as pd

# 開始日 '2020-01-10' から5日分の日付範囲を生成
date = pd.date_range('2020-01-10', periods=5)

# 日付範囲からSeriesを作成
data = pd.Series(date)

# 年間通算日を出力
print(data.dt.dayofyear)

出力結果

0    10
1 11
2 12
3 13
4 14

解説

dt.dayofyear は、各日付がその年の1月1日から数えて何日目にあたるかを整数値で返すプロパティです。今回の例では、開始日が1月10日なので最初の値は「10」となり、以降は11、12、13、14と1日ずつ増加していきます。

うるう年の場合も自動的に考慮されるため、2月29日以降の日付でも正確な年間通算日を取得できます。時系列データの前処理や特徴量エンジニアリングにおいて、季節性を表す特徴量を作成したい場合などに非常に便利な機能です。

  1. Pythonで数Nの桁数を数えるプログラムの書き方

    ある数Nが与えられたとき、その数に含まれる桁の総数を求めることを考えましょう。例えば以下のようなケースです。入力例1:N = 891452出力:6解説: 与えられた数891452は6桁の数字で構成されているため、この場合は「6」を返します。入力例2:N = 0074515出力:5解説: 先頭の0を除いた有効な桁数が5桁であるため、出力は「5」となります。この問題を解くためのアプローチこの問題は、次の手順で解決できます。数値nを入力として受け取ります。関数countDigits(n)が入力nを受け取り、桁数をカウントして返します。数値の各桁に対してループ処理を行い、カウンター変数を1ずつ増加させ

  2. Pythonで日付から「年の何日目か」を求める方法

    「YYYY-MM-DD」形式の日付が与えられたとき、その日がその年の何日目にあたるかを返すプログラムを考えてみましょう。たとえば、日付が「2019-02-10」であれば、これはその年の41日目に相当します。 解決のための手順 この問題は、以下のステップで解くことができます。 各月の日数を格納した配列Dを用意します。例:[0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] 日付文字列を年・月・日のリストに変換します。 うるう年の場合は、2月の日数を29日に変更します。 1月から(対象の月 − 1)までの累積日数を合計し、そこに「日」の数を加えて