各日付に対して列Quantileを作成したいとします。一意の値ごとのQuantileを計算します。Sales value。 「カテゴリ」は常に、それぞれの特定の日付の売上の同じ数字に対応します。Quantile関数を使用してpandas quantileで新しい列を作成する
私は日付で索引付けされたデータフレームを持っています。多くの日付と同じ日付の複数があります。 1日のDFのサブセットの例:
Category Sales Ratio 1 Ratio 2
11/19/2016 Bar 300 0.46 0.96
11/19/2016 Bar 300 0.56 0.78
11/19/2016 Bar 300 0.43 0.96
11/19/2016 Bar 300 0.47 0.94
11/19/2016 Casino 550 0.92 0.12
11/19/2016 Casino 550 0.43 0.74
11/19/2016 Casino 550 0.98 0.65
11/19/2016 Casino 550 0.76 0.67
11/19/2016 Casino 550 0.79 0.80
11/19/2016 Casino 550 0.90 0.91
11/19/2016 Casino 550 0.89 0.31
11/19/2016 Café 700 0.69 0.99
11/19/2016 Café 700 0.07 0.18
11/19/2016 Café 700 0.75 0.59
11/19/2016 Café 700 0.07 0.64
11/19/2016 Café 700 0.14 0.42
11/19/2016 Café 700 0.30 0.67
11/19/2016 Pub 250 0.64 0.09
11/19/2016 Pub 250 0.93 0.37
11/19/2016 Pub 250 0.69 0.42
私は日付ごとのユニークなセールスの0.5分位数を計算分位と呼ばれる新しい列を追加するコードをしたいです。注目すべき重要な点は、特定の日付のカテゴリでは、Salesは常に同じです(日付が変わると物事が変わります)。
解決策の例:df ['Quantile'] = df.Sales.groupby(df.index).transform(ラムダx:x.quantile(q = 0.5、軸= 0、補間= '中点') )
しかし、これは(それが働いていても)十分ではありません。この例では(この1つの日付の場合)、新しい列df ['Quantile']では、すべての値が不完全な日付で同じになります。
この日付では、計算では分位数に300,550,700、および250が使用されます。
したがって、最終的なDFは次のようになります。
Category Sales Ratio 1 Ratio 2 Quantile
11/19/2016 Bar 300 0.46 0.96 425
11/19/2016 Bar 300 0.56 0.78 425
11/19/2016 Bar 300 0.43 0.96 425
11/19/2016 Bar 300 0.47 0.94 425
11/19/2016 Casino 550 0.92 0.12 425
11/19/2016 Casino 550 0.43 0.74 425
11/19/2016 Casino 550 0.98 0.65 425
11/19/2016 Casino 550 0.76 0.67 425
11/19/2016 Casino 550 0.79 0.80 425
11/19/2016 Casino 550 0.90 0.91 425
11/19/2016 Casino 550 0.89 0.31 425
11/19/2016 Café 700 0.69 0.99 425
11/19/2016 Café 700 0.07 0.18 425
11/19/2016 Café 700 0.75 0.59 425
11/19/2016 Café 700 0.07 0.64 425
11/19/2016 Café 700 0.14 0.42 425
11/19/2016 Café 700 0.30 0.67 425
11/19/2016 Pub 250 0.64 0.09 425
11/19/2016 Pub 250 0.93 0.37 425
11/19/2016 Pub 250 0.69 0.42 425
私は、各カテゴリの唯一の要素を見ずに、特定の日付のすべての販売の分位を行うことだった場合、私は550のようなものになるだろう(これは欲しくない)。
重要なことは、コードをシンプルで合理的に(日付がかなり大きいので)したいと思います。補間もまた中間点でなければならない。
のみ、特定の日付のカテゴリの重複を削除するには、引数を追加する方法はありますか?同じ販売価値を持つカテゴリがある可能性がありますか?つまり、日付ごとに各カテゴリーごとに1つの売上値のみを量子化しますか? – MysterioProgrammer91
要件に合わせてサンプルを変更できますか? df1 = df [df.duplicated(サブセット= ['Category'、 'Sales'])&(df.index.isin(['11-19-2016'、 '11-20 -2016 ']))] 'を実行し、quantileを適用しますか? – jezrael
素晴らしい感謝 – MysterioProgrammer91