规范化DataFrame中的值

时间:2015-12-02 02:19:59

标签: python python-3.x pandas dataframe ipython-notebook

我需要的是通过以下过程将下面的评级列标准化:

  1. 按用户字段ID分组。
  2. 查找每个用户的平均评分。
  3. 找到每个用户的评论提示并减去用户的平均评分。
  4. 我有这个数据框:

                    user       rating
     review_id
             a      1          5
             b      2          3
             c      1          3
             d      1          4
             e      3          4
             f      2          2
    ...
    

    然后我计算每个用户的平均值:

     >>>data.groupby('user').rating.mean()
    
     user
     1       4
     2       2.5
     3       4
    

    我需要最终结果:

                    user       rating
     review_id
             a      1          1
             b      2          0.5
             c      1          -1
             d      1          0
             e      3          0
             f      2          -0.5
    ...
    

    数据帧如何有效地提供此类功能?

1 个答案:

答案 0 :(得分:1)

您可以使用groupby().transform()执行此操作,请参阅http://pandas.pydata.org/pandas-docs/stable/groupby.html#transformation

在这种情况下,按'user'分组,然后为每个组减去该组的平均值(您提供给transform的函数应用于每个组,但结果保留原始索引):

In [7]: data.groupby('user').transform(lambda x: x - x.mean())
Out[7]:
           rating
review_id
a             1.0
b             0.5
c            -1.0
d             0.0
e             0.0
f            -0.5