【问题标题】:how to calculate percentile of each 15 rows in python如何在python中计算每15行的百分位数
【发布时间】:2020-12-01 07:57:15
【问题描述】:

我的数据框中有 810 行关于车速的行,我试图计算每 15 行的第 85 个百分位速度。这是我到目前为止所做的:

count = 0
stat1 = []
for i, row in df.iterrows():
    if count == 10:
        stat1 = df.dbl_v.quantile(0.85)
        count = 0
    else:
        count += 1

如何存储和查看第 85 个百分位的速度?应该有 54 的 85% 的速度。

谢谢

【问题讨论】:

  • 试试df.groupby(df.index // 15)['dbl_v'].quantile(0.85)
  • 感谢您的帮助!
  • 成功了吗?如果是,我会做出适当的回答
  • 如果我添加更多的百分位数来计算,是否可以将其保存到新的数据框中?
  • 是的,它有效,我可以清楚地看到所有所需的第 85 个百分位速度

标签: python pandas function loops for-loop


【解决方案1】:

我们可以使用除以 15 的剩余部分每 15 行创建一个组

grouper = df.groupby(df.index // 15)

要通过将.quantile 应用于多个列来创建新的DF,我们可以这样做:

df_new = grouper.agg(
               quantile85 = ('dbl_v', lambda x: x.quantile(0.85))
              ,quantile20 = ('other_column', lambda x: x.quantile(0.20))
              ,mean_dbl_v = ('dbl_v', 'mean')
              ,sum_col3 = ('name_column3', 'sum')
               #and so on...
           )

【讨论】:

  • 谢谢!除了百分位数,我还想计算每 15 行的平均值、中位数和其他百分位数。 for循环函数会变成怎样?
  • 我添加了更多聚合示例,请参阅更新:-)
  • 谢谢,你帮了我很多忙!基本上,我不需要循环函数来迭代它们。我需要的只是 groupby 和聚合函数。谢谢!
  • @urtaeyang 如果我的回答对你有帮助,请accept it :-)
猜你喜欢
  • 2017-05-17
  • 2013-08-31
  • 2019-03-27
  • 2016-04-12
  • 2016-07-12
  • 2015-03-09
  • 2011-01-23
  • 2019-05-10
  • 2021-05-05
相关资源
最近更新 更多