我有一个包含两列值和计数的数据框。例如,具有(value,count)=(2,1000)的行,这意味着值2出现1000。我想计算最小值、最大值、中位数和百分位数,这样当数据没有“分组”时,结果就和df.describe()一样了谢谢你的好意什么也找不到
mftmpeh81#
一般的方法是恢复原始数据,然后计算统计数据:
# aggregated data df = pd.DataFrame({'value': [1, 2, 3], 'count': [5, 1, 4]}) # replicate rows and compute statistics out = df.loc[df.index.repeat(df['count']), 'value'].describe()
字符串当然,你可以做得更好,这取决于你想要计算的确切统计数据:min/max将保持不变; mean和std可以使用numpy.average/statsmodels.stats.weightstats.DescrStatsW及其weight参数等来计算。您必须亲自查看需要计算的内容,并决定是否可以在不进行解聚合的情况下进行计算。输出量:
min
max
mean
std
numpy.average
statsmodels.stats.weightstats.DescrStatsW
weight
count 10.000000 mean 1.900000 std 0.994429 min 1.000000 25% 1.000000 50% 1.500000 75% 3.000000 max 3.000000 Name: value, dtype: float64
型
1条答案
按热度按时间mftmpeh81#
一般的方法是恢复原始数据,然后计算统计数据:
字符串
当然,你可以做得更好,这取决于你想要计算的确切统计数据:
min
/max
将保持不变;mean
和std
可以使用numpy.average
/statsmodels.stats.weightstats.DescrStatsW
及其weight
参数等来计算。您必须亲自查看需要计算的内容,并决定是否可以在不进行解聚合的情况下进行计算。输出量:
型