【问题标题】:How to calculate basic statistics for every 20 data points in a dataframe using python?如何使用python计算数据框中每20个数据点的基本统计数据?
【发布时间】:2020-11-30 23:41:52
【问题描述】:

enter image description here

我有一个与图片类似的数据框,我有 400 多个数据点。有没有什么简单的方法可以使用python计算每10个数据点的基本统计?

谢谢。

【问题讨论】:

  • 您可以使用循环,每次迭代都对包含 10 个元素的块执行计算。
  • 或者,您可以添加另一列 group_id,并为其分配一个数字(前 10 个项目为 1,接下来的 10 个项目为 2,等等),然后使用函数 groupbyagg 对每个组执行计算。

标签: python list dataframe statistics


【解决方案1】:

使用计数器计算迭代中访问的行数。当是 10 时,执行您想要的操作:(您可以将访问的行存储在列表之类的某个位置)

import pandas as pd
df = pd.DataFrame(columns=['a', 'b', 'c'])
count = 0
for i, row in df.iterrows():
    if count == 10:
        ## do basic statistics 
        count = 0
    else:
        ## store the desire value for calculation
        count += 1

【讨论】:

  • 谢谢!我可以再问一个问题,如何查看每个基本统计计算的期望值?
  • 如果你的意思是数据框中的单元格值,你可以在迭代中使用 row['column_name']。
【解决方案2】:

使用熊猫滚动功能 df.rolling(window=10).sum() 或任何方法

【讨论】:

    【解决方案3】:

    在此处查看答案:Non-overlapping rolling windows in pandas dataframes

    您可以使用pandas.rolling,或按索引分组:

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame(np.random.normal(size=(40,1)),
                columns = ['A'])
    
    df.groupby(df.index//10).apply(lambda x: np.mean(x))
    
    

    输出

    【讨论】:

      猜你喜欢
      • 2018-10-26
      • 2021-05-05
      • 1970-01-01
      • 2019-07-02
      • 2013-10-12
      • 2017-07-16
      • 2021-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多