gpt4 book ai didi

python - 如何从频率数据中找到分位数?

转载 作者:行者123 更新时间:2023-11-28 22:21:57 28 4
gpt4 key购买 nike

假设我有一个客户购买商品的数据表:

Customer|Price|Quantity Sold  
a | 200 | 3.3
b | 120 | 4.1
c | 040 | 12.0
d | 030 | 16.76

这应该是数据表的粗略表示,其中包含针对相同产品销售的客户、价格和数量。

我想知道如何计算此信息的平均购买价格。

我对方法论有点困惑,因为我知道在 pandas 中获取分位数很容易,因为 data[row].quantile(x)

但由于每一行实际上代表了不止一个观察结果,所以我不确定如何得到分位数。

edit:最重要的是,主要问题是销售数量并不谨慎。是连续变量。 (我们就像谈论米、公斤等,所以创建更多行不是一种选择。)

最佳答案

对于一组离散值,通过排序并取中心值来找到中位数。但是,由于您有 Quantity 的连续值,您似乎真的在寻找概率分布的中位数,其中 Price 的分布与 给出的相对频率>数量。通过对数据进行排序并获取累积的 Quantity,我们可以用图形表示您的问题:

Cumulative distribution

从该图中可以看出中值为 40(X 中点处的 y 值)。这应该是预料之中的,因为以两个最低价格出售的数量非常大。中位数可以从您的数据框中计算如下:

df = df.sort_values('Price')
cumul = df['Quantity Sold'].cumsum()
# Get the row index where the cumulative quantity reaches half the total.
total = df['Quantity Sold'].sum()
index = sum(cumul < 0.5 * total)
# Get the price at that index
result = df['Price'].iloc[index]

相同数据的任何其他分位数都可以使用总数的不同比率来计算。

关于python - 如何从频率数据中找到分位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47947391/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com