1

1408 行のデータを持つ Python データフレームがあります。私の目標は、ある週の特定の曜日に関連付けられた最大数と最小数を、前の最大/最小が発生した同じ曜日の次の週の数と比較することです。基本的に、私はクインタイル (1 週間の営業日は 5 日なので) ランク 1 と 5 を見て、それらが週ごとにどのように変化するかを確認したいと考えています。各曜日に関連付けられた数値の cdf を作成します。

  1. データを消去するには、合計で 18 週間を削除する必要があります。つまり、休日に関連付けられたデータフレーム内の毎週と、休日が発生した後の翌週全体です。

  2. この後、ファイル内のすべての日付について、月曜日から金曜日までのすべてのデータにラベルを付ける列をデータフレームに挿入する必要があると思います (6 年間のデータがあります)。MF というラベルを付ける理由は、曜日に関連付けられた各数値を昇順に並べ替えることができるようにするためです。そして、曜日をクエリします。

1. または 2. またはその両方に関する方法論的な提案をいただければ幸いです。

ありがとうございました!

4

1 に答える 1

0

#2は、結果のGroupbyオブジェクトdf.groupby()との組み合わせで取り組むのが最善のようです。apply()おそらく、例を挙げて説明するのが最善の方法です。

与えられたデータフレーム:

In [53]: df
Out[53]: 
            Value
2012-08-01     61
2012-08-02     52
2012-08-03     89
2012-08-06     44
2012-08-07     35
2012-08-08     98
2012-08-09     64
2012-08-10     48
2012-08-13    100
2012-08-14     95
2012-08-15     14
2012-08-16     55
2012-08-17     58
2012-08-20     11
2012-08-21     28
2012-08-22     95
2012-08-23     18
2012-08-24     81
2012-08-27     27
2012-08-28     81
2012-08-29     28
2012-08-30     16
2012-08-31     50

In [54]: def rankdays(df):
  .....:    if len(df) != 5:
  .....:        return pandas.Series()
  .....:    return pandas.Series(df.Value.rank(), index=df.index.weekday)
  .....: 

In [52]: df.groupby(lambda x: x.week).apply(rankdays).unstack()
Out[52]: 
    0  1  2  3  4
32  2  1  5  4  3
33  5  4  1  2  3
34  1  3  5  2  4
35  2  5  3  1  4
于 2012-09-03T21:46:57.380 に答える