如何将Pandas Series转换为均值10、标准差2的序列?
实现Pandas Series均值为10、标准差为2的转换
首先纠正你代码里的小错误:Pandas创建Series的正确写法是pd.Series()(首字母大写),不能直接给pd.series赋值,正确的初始化代码应该是:
import pandas as pd s = pd.Series([1.01, 2, 1.2, 3.1, 4.32, 1.23, 8.21, 4.2, 1.3, 2.3, 3.3, 5.2, 4.8, 4.2, 5.98, 6.1, 2.9, 4.12, 4.78, 5.56, 5.21])
接下来要实现目标转换,核心思路是先把原序列标准化(转成均值为0、标准差为1的序列),再按目标均值和标准差做线性缩放,具体公式为:转换后的值 = (原序列值 - 原均值) / 原标准差 * 目标标准差 + 目标均值
直接上代码实现:
# 计算原序列的均值和标准差 original_mean = s.mean() original_std = s.std() # 定义目标参数 target_mean = 10 target_std = 2 # 执行转换 transformed_s = (s - original_mean) / original_std * target_std + target_mean
最后可以验证转换结果:
print("转换后均值:", transformed_s.mean()) print("转换后标准差:", transformed_s.std())
输出会接近10和2(浮点数计算可能存在微小误差)。
这种方法能保留原序列的分布形态,仅做线性缩放,不会改变数据的相对关系。
内容的提问来源于stack exchange,提问作者Henri
相关产品推荐
相关产品推荐

