【问题标题】:Code optimalisation for groupby in pythonpython中groupby的代码优化
【发布时间】:2021-10-22 14:06:34
【问题描述】:

我正在寻找优化一些 python 代码,但我不确定如何解决这个问题,因为我主要使用 python 来分析数据并且硬编码技能有限,所以欢迎任何输入。

我的数据如下所示:

X   Y           Stock           Number
A   10-20       id1             5
A   30-40       id2             7
A   0-10        id3             18
B   30-40       id4             3
B   10-20       id5             9
C   10-20       id6             11
C   0-10        id7             9

我使用 groupby 来分析这个实例中的数据:

# Groupby
=df.groupby(['x', 'y']).agg({'stock':'count','number':'mean'}).reset_index().persist()
groupby.columns=['x', 'y', 'total_stocks', 'mean_number']
# Calculate proportions
groupby['stock_sum'] = df.groupby('y')['total_stocks'].transform('sum')
groupby['proportion'] = groupby['total_stocks'] / groupby['stock_sum']

现在,我在数据集中还有几个变量,例如“X”(我们称它们为 U、V、W、...),我想重复这个 groupby-element。我知道循环和函数的基础知识,我想我可以制作一个 ['X','U','V','W'] 的列表,然后使用一个函数来执行 groupby,但我努力想象我应该如何将列表(并循环其中的项目)合并到函数中。

【问题讨论】:

    标签: python pandas performance


    【解决方案1】:

    希望我能正确理解您的问题。我构建了一个简单的示例,将 X 替换为您想要的变量。这个基本前提可以应用于向循环添加更多变量。

    var_list = ['X', 'U', 'V', 'W'] # list of variables
    for item in var_list:
      df.groupby([item,'y']).agg({'stock':'count','number':'mean'}).reset_index().persist()
      groupby.columns=[item, 'y', 'total_stocks', 'mean_number']
      # Calculate proportions
      groupby['stock_sum'] = df.groupby('y')['total_stocks'].transform('sum')
      groupby['proportion'] = groupby['total_stocks'] / groupby['stock_sum']
    

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 2017-09-03
    • 1970-01-01
    • 2017-11-02
    • 2014-06-24
    • 2011-11-02
    • 1970-01-01
    相关资源
    最近更新 更多