【发布时间】:2020-05-30 01:11:51
【问题描述】:
假设我有一个糕点数据框
Pastry Flavor Qty
0 Cupcake Cheese 3
1 Cakeslice Chocolate 2
2 Tart Honey 2
3 Croissant Raspberry 1
我得到每个糕点特定风味的价值计数
df[df['Flavor'] == 'Cheese']['Pastry'].value_counts()
Cupcake 4
Tart 4
Cakeslice 3
Turnover 3
Creampie 2
Danish 2
Bear Claw 2
然后为了得到那个味道数量的百分位数,我可以这样做
df[df['Flavor'] == 'Cheese']['Pastry'].value_counts().describe(percentiles=[.75, .85, .95])
我会得到这样的东西(来自完整的数据框)
count 35.00000
mean 1.485714
std 0.853072
min 1.000000
50% 1.000000
75% 2.000000
85% 2.000000
95% 3.300000
max 4.000000
其中奶酪口味的不同糕点总数为 35,因此奶酪总数量分布在这 35 个糕点中。数量的平均值为 1.48,最大数量为 4(纸杯蛋糕和蛋挞)等。
我想要做的是通过计算风味列中所有其他不是“奶酪”的值来降低第 95 个百分位,但是 value_counts() 只计算那些是“奶酪”的值,因为我过滤了数据框。如何计算非 Cheese 行,以便我的百分位数下降并代表整个数据框中 Cheese 总数的分布?
这是一个示例输出:
Cupcake 4
Tart 4
Cakeslice 3
Turnover 3
Creampie 2
Danish 2
Bear Claw 2
Swiss Roll 1
Baklava 0
Cannoli 0
非奶酪风味糕点的数量为 0,从那里我可以得到百分位数,它们将被减少,因为现在有 0 值稀释它们。
【问题讨论】:
-
您在寻找 df.Qty.describe(percentiles=[.95])
-
@Chris 原始数据框上没有数量列,这是用于说明目的的示例数据框。我通过运行 df[df['Flavor] == 'Cheese'].value_counts() 获得原始数据帧的数量,它返回每个糕点的“奶酪”行数,但我想基本上包括所有不是奶酪为 0,以便我可以稀释百分位数。
-
@Salchipapas 输入帧你已经有分片如果你可以分享预期输出的样本会很容易理解,也看看这是否可以带你到某个方向stackoverflow.com/questions/62034736/…