首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算pandas中未过滤的value_counts和过滤值

计算pandas中未过滤的value_counts和过滤值
EN

Stack Overflow用户
提问于 2020-05-30 01:11:51
回答 1查看 50关注 0票数 1

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

代码语言:javascript
运行
AI代码解释
复制
       Pastry      Flavor      Qty
0     Cupcake      Cheese      3
1   Cakeslice   Chocolate      2
2        Tart       Honey      2
3   Croissant   Raspberry      1

我得到了每个糕点的特定口味的价值计数

代码语言:javascript
运行
AI代码解释
复制
df[df['Flavor'] == 'Cheese']['Pastry'].value_counts()
代码语言:javascript
运行
AI代码解释
复制
Cupcake    4
Tart       4
Cakeslice  3
Turnover   3
Creampie   2
Danish     2
Bear Claw  2

然后,为了得到该味道数量的百分位数,我可以这样做

代码语言:javascript
运行
AI代码解释
复制
df[df['Flavor'] == 'Cheese']['Pastry'].value_counts().describe(percentiles=[.75, .85, .95]) 

我会得到像这样的东西(来自完整的数据帧)

代码语言:javascript
运行
AI代码解释
复制
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(纸杯蛋糕和馅饼)等。

我想要做的是通过计算味道列中不是'Cheese‘的所有其他值来减少第95个百分位数,但是value_counts()只计算那些'Cheese’的值,因为我过滤了数据帧。我如何计算非Cheese行,以便我的百分位数将下降,并表示整个数据帧中Cheese总数的分布?

这是一个输出示例:

代码语言:javascript
运行
AI代码解释
复制
Cupcake    4
Tart       4
Cakeslice  3
Turnover   3
Creampie   2
Danish     2
Bear Claw  2
Swiss Roll 1
Baklava    0
Cannoli    0

在非奶酪口味的糕点中包含0作为数量,我可以从那里获得百分位数,它们将被减少,因为现在有0值稀释它们。

EN

回答 1

Stack Overflow用户

发布于 2020-05-30 19:28:59

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

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

代码语言:javascript
运行
AI代码解释
复制
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])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62096666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档