スポンサーリンク

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

スポンサーリンク