0
価格と時間のあるパンダには時系列があります。私は1ヶ月の時間間隔で日付をグループ化し、毎月の価格の10-75%分位を計算し、これらの値を使用して元のデータフレームをフィルタリングします(したがって、10%と75%の間の価格だけが残るようにします)。 )。パンダ:クォンタイルを使用してグループ内のデータの下位10%と上位25%をフィルタリングする最良の方法
データフレームは次のようになります。
df =pd.DataFrame({'date':['01-01-16','02-05-16','01-06-16','01-03-16','01-04-16'],'price':[10,3,4,3,4]})
df['date'] = pd.to_datetime(df.date)
df.index = df.date
date price
date
2016-01-01 2016-01-01 10
2016-01-06 2016-01-06 3
2016-01-03 2016-01-03 11
2016-01-04 2016-01-04 9
2016-02-05 2016-02-05 4
2016-02-12 2016-02-12 3
2016-02-15 2016-02-15 6
そして、それぞれの月の分位は次のようなものになります。
dg = df.groupby(pd.TimeGrouper('1M')).quantile([0.1,0.75])
price
date
2016-01-31 0.10 4.80
0.75 10.25
2016-02-29 0.10 3.20
0.75 5.00
はフィルタリングの後、私が見えるように、私の最後のデータフレームをしたいと思います:
を date price
date
2016-01-01 2016-01-01 10
2016-01-04 2016-01-04 9
2016-02-05 2016-02-05 4
私はおそらく、これを行う簡単な方法は私が何をしているのかと推測しています思慮深く考えてください - どんな助けでも大歓迎です。
うわー、あなたは素晴らしいです。ありがとうございました!私の配列dtypeは 'bool'ではなく' int64'であったので、私は 'df.loc [df.resample( '1M')['price']を追加したので変更しなければなりませんでしたtransform(in_qrange、q = [0.1、 0.75])astype(ブール)] 'それは魅力のように働いた! – qbzenker
うまくいきました! :) – ayhan