如何将 DataFrame 列转置为零均值和一个标准差
How to transpose DataFrame column to a zero mean and one standard deviation
我正在尝试调整一些列以使其平均值为 0 和 1 SD。但我不知道该怎么做。
例如给定以下数据框,如何创建均值 0 和 sd 1 的新列?
df = pd.DataFrame([8.2,18,15,9], columns=['temp'])
这是我用 Standard Scaler 试过的东西
from sklearn.preprocessing import StandardScaler
df = pd.DataFrame([[8.2,57],[18,60],[15,45],[9,30]], columns=['temp','rh'])
print(df)
scaler = StandardScaler(copy=False, with_mean=True, with_std=True)
scaler.fit(df)
print(f"Means: {scaler.mean_}")
df2 = scaler.transform(df)
print(f"Transformed Data Frame:\n{df2}")
m = np.mean(df2, axis=0)
s = np.std(df2, axis=0)
print(f"Column means:\n{m}")
print(f"Column SD:\n{s}")
但结果根本不是零均值或 sd=1。
temp rh
0 8.2 57
1 18.0 60
2 15.0 45
3 9.0 30
Means: [12.55 48. ]
Transformed Data Frame:
[[-1.06105451 0.76200076]
[ 1.32936715 1.01600102]
[ 0.59760542 -0.25400025]
[-0.86591805 -1.52400152]]
Column means:
[-2.49800181e-16 0.00000000e+00]
Column SD:
[1. 1.]
from sklearn.preprocessing import StandardScaler
df1 = StandardScaler().fit_transform(df)
会成功的。
我正在尝试调整一些列以使其平均值为 0 和 1 SD。但我不知道该怎么做。
例如给定以下数据框,如何创建均值 0 和 sd 1 的新列?
df = pd.DataFrame([8.2,18,15,9], columns=['temp'])
这是我用 Standard Scaler 试过的东西
from sklearn.preprocessing import StandardScaler
df = pd.DataFrame([[8.2,57],[18,60],[15,45],[9,30]], columns=['temp','rh'])
print(df)
scaler = StandardScaler(copy=False, with_mean=True, with_std=True)
scaler.fit(df)
print(f"Means: {scaler.mean_}")
df2 = scaler.transform(df)
print(f"Transformed Data Frame:\n{df2}")
m = np.mean(df2, axis=0)
s = np.std(df2, axis=0)
print(f"Column means:\n{m}")
print(f"Column SD:\n{s}")
但结果根本不是零均值或 sd=1。
temp rh
0 8.2 57
1 18.0 60
2 15.0 45
3 9.0 30
Means: [12.55 48. ]
Transformed Data Frame:
[[-1.06105451 0.76200076]
[ 1.32936715 1.01600102]
[ 0.59760542 -0.25400025]
[-0.86591805 -1.52400152]]
Column means:
[-2.49800181e-16 0.00000000e+00]
Column SD:
[1. 1.]
from sklearn.preprocessing import StandardScaler
df1 = StandardScaler().fit_transform(df)
会成功的。