计数未过滤值\u与过滤后的值一起计数

2024-09-27 00:23:10 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个糕点的数据框架

       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()只计算“奶酪”的值,因为我过滤了数据帧。我如何计算非奶酪行,使我的百分位数下降,并代表奶酪总量在整个数据帧中的分布

这是一个示例输出:

Cupcake    4
Tart       4
Cakeslice  3
Turnover   3
Creampie   2
Danish     2
Bear Claw  2
Swiss Roll 1
Baklava    0
Cannoli    0

如果非奶酪风味糕点包含0作为数量,从那里我可以得到百分位数,它们将减少,因为现在有0个值稀释它们


Tags: 数据df数量value风味tartcountsflavor
1条回答
网友
1楼 · 发布于 2024-09-27 00:23:10

我决定走很长的路去尝试解决这个问题,我的结果给了我与this问题相同的答案

这里有很长的路要走,以防有人好奇

pastries = {}

for p in df['Pastry'].unique():
  pastries[p] = df[(df['Flavor'] == 'Cheese') & (df['Pastry'] == p)]['Pastry'].count()

newdf = pd.DataFrame.from_dict(pastries.items())

newdf.describe(percentiles=[.75, .85, .95])

相关问题 更多 >

    热门问题