用 Python 用该列的平均值减去数据框中的每一列

Posted

技术标签:

【中文标题】用 Python 用该列的平均值减去数据框中的每一列【英文标题】:Subtract every column in dataframe with the mean of that column with Python 【发布时间】:2016-05-12 04:43:05 【问题描述】:

我正在寻找一种方法来查找 python 数据框中每一列的平均值,并用该列的平均值减去该列。

假设我有:

df = pd.DataFrame('a': [1.5, 2.5], 'b': [0.25, 2.75], 'c': [1.25, 0.75])

我想找到每列的平均值,这将返回 (2,1.5,1) 并分别从列 abc 中减去值。

这会给,((-0.5,0.5),(-1.25, 1.5), (0.25,-0.25))

谁能帮我做这件事?

谢谢

【问题讨论】:

意思是返回 (2,1.5,1) 而不是 (2,1.5,2) @The6thSense Mybad..计算错误! 【参考方案1】:

试试这个:

>>> df
     a     b     c
0  1.5  0.25  1.25
1  2.5  2.75  0.75
>>> df.columns
Index([u'a', u'b', u'c'], dtype='object')
>>> for x in df.columns:
...     df[x] = df[x] - df[x].mean()
... 
>>> df
     a     b     c
0 -0.5 -1.25  0.25
1  0.5  1.25 -0.25

Python 方式:

>>> df - df.mean()
     a     b     c
0 -0.5 -1.25  0.25
1  0.5  1.25 -0.25

【讨论】:

在您的for loop 中,您正在执行与df - df.mean() 相同的操作,但df - df.mean() 会更快,并且您的方法具有更大的灵活性。 DataFrame.apply() 函数可以替换循环。【参考方案2】:

您可以简单地使用mean function of pandas

代码:

import pandas as pd
df = pd.DataFrame('a': [1.5, 2.5], 'b': [0.25, 2.75], 'c': [1.25, 0.75])

print "The data frame"
print df
print "The mean value"
print df.mean()
print "The value after subraction of mean"
print df -df.mean()

输出:

The data frame

    a     b     c
0  1.5  0.25  1.25
1  2.5  2.75  0.75

The mean value

a    2.0
b    1.5
c    1.0
dtype: float64

The value after subraction of mean

    a     b     c
0 -0.5 -1.25  0.25
1  0.5  1.25 -0.25

【讨论】:

以上是关于用 Python 用该列的平均值减去数据框中的每一列的主要内容,如果未能解决你的问题,请参考以下文章

从由数组组成的数据框中取列的平均值

R scale() intergrate

将函数应用于数据框中的每一列,观察每一列现有的数据类型

请问如何获得GridView选中行的每一列的信息?

试图弄清楚如何使用列表返回数据框中每一列的平均值

用python设计函数 输入一个2维列表 用该函数计算每一列的和并返回一个列表