indexがdatetime型にしてDataFrameを作成する
まずは、下記のように、indexがdatetime型にしてDataFrameを作成します。
参考:pandas.read_csv()のindex_colの指定とparse_dates=Trueで、インデックスの列をdatetime型に変換
DataFrame = pd.read_csv('in.txt',
names=('Date', 'Value'),
index_col='Date',
parse_dates=True)
DataFrame[DataFrame.index.year == 年(数字) の形式で、特定の年の行を抽出します
DataFrame[DataFrame.index.year == 年(数字) の形式で、特定の年の行を抽出します。
yearには、数字で年を指定できます。
例えば、1991年の行を抽出してprint出力する場合には、下記のように書きます。
print(DataFrame[DataFrame.index.year == 1991])
指定した年の行の総和を求める
sum()で総和を求めることができます。
例えば、1992年の行の総和を求める場合は下記のように書くことができます。
print(DataFrame[DataFrame.index.year == 1992].sum())
指定した年の行の平均を求める
mean()で総和を求めることができます。
例えば、1993年の行の平均を求める場合は下記のように書くことができます。
print(DataFrame[DataFrame.index.year == 1993].mean())
指定した年の行の最大値を求める
max()で最大値を求めることができます。
例えば、1994年の行の最大値を求める場合は下記のように書くことができます。
print(DataFrame[DataFrame.index.year == 1994].max())
指定した年の行の最小値を求める
min()で総和を求めることができます。
例えば、1995年の行の最小値を求める場合は下記のように書くことができます。
print(DataFrame[DataFrame.index.year == 1995].min())
サンプルコード
例えば、下記のin.txtがあるとします。
$ cat in.txt 19910101,0 19910102,1 19920203,2 19920204,3 19920305,4 19930306,5 19930407,6 19930408,7 19940509,8 19940510,9 19940510,10 19950610,11 19950610,12 19950610,13
下記がサンプルコードになります。
$ cat sample.py
#!/usr/bin/env python3
# coding: UTF-8
import pandas as pd
DataFrame = pd.read_csv('in.txt',
names=('Date', 'Value'),
index_col='Date',
parse_dates=True)
print("DataFrameの中身を出力")
print (DataFrame)
print("1991年の行を抽出して出力")
print(DataFrame[DataFrame.index.year == 1991])
print("1992年の総和を出力")
print(DataFrame[DataFrame.index.year == 1992].sum())
print("1993年の平均を出力")
print(DataFrame[DataFrame.index.year == 1993].mean())
print("1994年の最大値を出力")
print(DataFrame[DataFrame.index.year == 1994].max())
print("1995年の最小値を出力")
print(DataFrame[DataFrame.index.year == 1995].min())
下記が実行結果になります。
$ ./sample.py
DataFrameの中身を出力
Value
Date
1991-01-01 0
1991-01-02 1
1992-02-03 2
1992-02-04 3
1992-03-05 4
1993-03-06 5
1993-04-07 6
1993-04-08 7
1994-05-09 8
1994-05-10 9
1994-05-10 10
1995-06-10 11
1995-06-10 12
1995-06-10 13
1991年の行を抽出して出力
Value
Date
1991-01-01 0
1991-01-02 1
1992年の総和を出力
Value 9
dtype: int64
1993年の平均を出力
Value 6.0
dtype: float64
1994年の最大値を出力
Value 10
dtype: int64
1995年の最小値を出力
Value 11
dtype: int64
