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.weekday_name == '曜日'の形式で、特定の曜日の行を抽出します
DataFrame[DataFrame.index.weekday_name == '曜日'の形式で、特定の曜日の行を抽出します。
weekday_nameには、英語の文字列で曜日を指定できます。
例えば、日曜日の行を抽出してprint出力する場合には、下記のように書きます。
print(DataFrame[DataFrame.index.weekday_name == 'Sunday'])
指定した曜日の行の総和を求める
sum()で総和を求めることができます。
例えば、月曜日の行の総和を求める場合は下記のように書くことができます。
print(DataFrame[DataFrame.index.weekday_name == 'Monday'].sum())
指定した曜日の行の平均を求める
mean()で総和を求めることができます。
例えば、火曜日の行の平均を求める場合は下記のように書くことができます。
print(DataFrame[DataFrame.index.weekday_name == 'Tuesday'].mean())
指定した曜日の行の最大値を求める
max()で最大値を求めることができます。
例えば、水曜日の行の最大値を求める場合は下記のように書くことができます。
print(DataFrame[DataFrame.index.weekday_name == 'Wednesday'].max())
指定した曜日の行の最小値を求める
min()で総和を求めることができます。
例えば、木曜日の行の最小値を求める場合は下記のように書くことができます。
print(DataFrame[DataFrame.index.weekday_name == 'Thursday'].min())
サンプルコード
例えば、下記のin.txtがあるとします。
$ cat in.txt 20180101,0 20180102,1 20180103,2 20180104,3 20180105,4 20180106,5 20180107,6 20180108,7 20180109,8 20180110,9 20180111,10 20180112,11 20180113,12 20180114,13 20180115,14 20180116,15 20180117,16 20180118,17 20180119,18 20180120,19 20180121,20 20180122,21
下記がサンプルコードになります。
$ 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("日曜日の行を抽出して出力")
print(DataFrame[DataFrame.index.weekday_name == 'Sunday'])
print("月曜日の総和を出力")
print(DataFrame[DataFrame.index.weekday_name == 'Monday'].sum())
print("火曜日の平均を出力")
print(DataFrame[DataFrame.index.weekday_name == 'Tuesday'].mean())
print("水曜日の最大値を出力")
print(DataFrame[DataFrame.index.weekday_name == 'Wednesday'].max())
print("木曜日の最小値を出力")
print(DataFrame[DataFrame.index.weekday_name == 'Thursday'].min())
下記が実行結果になります。
$ ./sample.py
DataFrameの中身を出力
Value
Date
2018-01-01 0
2018-01-02 1
2018-01-03 2
2018-01-04 3
2018-01-05 4
2018-01-06 5
2018-01-07 6
2018-01-08 7
2018-01-09 8
2018-01-10 9
2018-01-11 10
2018-01-12 11
2018-01-13 12
2018-01-14 13
2018-01-15 14
2018-01-16 15
2018-01-17 16
2018-01-18 17
2018-01-19 18
2018-01-20 19
2018-01-21 20
2018-01-22 21
日曜日の行を抽出して出力
Value
Date
2018-01-07 6
2018-01-14 13
2018-01-21 20
月曜日の総和を出力
Value 42
dtype: int64
火曜日の平均を出力
Value 8.0
dtype: float64
水曜日の最大値を出力
Value 16
dtype: int64
木曜日の最小値を出力
Value 3
dtype: int64
