从数据中去除均值

时间:2020-05-14 10:51:20

标签: python pandas numpy

我使用以下代码从时间序列数据集中删除了具有3个独立特征和1个从属特征的均值

mean = np.mean((df.values), axis=-1, keepdims=True)
df = df - mean

但这是行而不是列的平均值。是否有一个原因 ?因为我认为-1表示应该取列的平均值?还是因为它与时间有关?

数据框示例

df = pd.DataFrame({
'date': [1988, 1989, 1990, 1991],
'value1': [1265, 4349, 5589, 3340],
'value2': [155, 552, 958, 280],
'value3': [55, 13, 95, 80],
'value4': [0.55, 0.12, 0.80, 0.22]
}) 
df.set_index('date', inplace=True)

1 个答案:

答案 0 :(得分:1)

将其更改为axis=0,它将为您提供“列”的平均值。

说明
只需绘制数据框,您将看到其实际结构:

>>> df
      value1  value2  value3  value4
date                                
1988    1265     155      55    0.55
1989    4349     552      13    0.12
1990    5589     958      95    0.80
1991    3340     280      80    0.22

enter image description here
现在,您知道了为什么必须设置axis = 0

通过这种方式,无需调用numpy。熊猫具有内置功能:

>>> df.mean()
value1    3635.7500
value2     486.2500
value3      60.7500
value4       0.4225
dtype: float64

请注意,我没有明确设置axis=0,因为它是默认设置。