86829


# やりたいこと

以下のデータの`count`を、1週間単位（日曜日始まり）で集計した値を算出したいです。

[code]

    In [1]: df=pandas.DataFrame({"count":[1,2,3], 
    "date": pandas.date_range('2022-03-13', periods=3, freq='D')})
    
    In [2]: df
    Out[2]: 
       count       date
    0      1 2022-03-12
    1      2 2022-03-13
    2      3 2022-03-14
    
    
[/code]

`label`引数, `closed`引数を指定しないと、日曜日終わりの1週間単位で集計されます。

[code]

    In [3]: df.resample(rule="W", on="date").sum()
    Out[3]: 
                count
    date             
    2022-03-13      3
    2022-03-20      3
    
[/code]

`index`には開始日が表示されていた方が直観的で分かりやすかったので、以下のように`label`引数, `closed`引数を指定しました。

[code]

    In [3]: df.resample(rule="W", on="date",label="left",closed="left").sum()
    Out[3]: 
                count
    date             
    2022-03-06      1
    2022-03-13      5
    
[/code]

# 質問

[pandas.DataFrame.resample](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.resample.html)関数の`label`引数,
`closed`引数の説明は以下の通りです。

> Which bin edge label to label bucket with. The default is ‘left’ for all
> frequency offsets except for ‘M’, ‘A’, ‘Q’, ‘BM’, ‘BA’, ‘BQ’, and ‘W’ which
> all have a default of ‘right’.

> Which side of bin interval is closed. The default is ‘left’ for all
> frequency offsets except for ‘M’, ‘A’, ‘Q’, ‘BM’, ‘BA’, ‘BQ’, and ‘W’ which
> all have a default of ‘right’.

なぜ`‘M’, ‘A’, ‘Q’, ‘BM’, ‘BA’, ‘BQ’, and ‘W’`のときだけ、デフォルトは`right`なのでしょうか？  
デフォルトは`left`の方が分かりやすいように感じました。  
また、`‘M’, ‘A’, ‘Q’, ‘BM’, ‘BA’, ‘BQ’, and ‘W’`はどのような分類なのでしょうか？「日」よりも大きい単位でしょうか？

# 開発環境

  * Python 3.10.2
  * pandas 1.4.1


CC BY-SA 4.0
2022-03-14T01:51:34.763
86821
2022-03-18T05:41:37.620
19524
question
python pandas
pandas.DataFrame.resample関数の`label`引数, `closed`引数のデフォルト値は、なぜ特定の条件だけ`right`なのでしょうか？


`‘M’, ‘A’, ‘Q’, ‘BM’, ‘BA’, ‘BQ’, and ‘W’`というのはある一定期間の終点（月末、週末など）を意味しているからです。

言い換えれば、『indexには終了日が表示されていた方が良い』という考えに基づいているからです。


CC BY-SA 4.0
2022-03-14T08:30:09.727
86829
2022-03-18T05:41:37.620
2022-03-18T05:41:37.620
37167
37167
86821
answer