Pandas定义在不同数据帧中创建新列时要调用的Z_score函数


def z_score(df, column, mean, std):
return #  ?????
mean = history_df['distances'].mean()
std = history_df['distances'].std()
training_df['distances_normal'] = z_score(training_df, 'distances', mean, std)
testing_df['distances_normal'] = z_score(testing_df, 'distances', mean, std)

你好,关于z_score函数(返回后(应该是什么样子,有什么建议吗?这样,当我基于历史数据帧列"distance"为训练和测试数据帧创建新列"distance _normal"时,值就会被规范化?

thx提前

您不需要定义z_score函数,因为计算很简单,可以直接在日期框上执行:

training_df['distances_normal'] = (training_df['distances'] - mean)/ std

如果您仍然想使用z_score函数,那么您可以定义它,每次使用一个元素,然后使用apply将其依次应用于数据帧列的每个元素:

def z_score(x, mean, std):
return (x - mean)/std
training_df['distances_normal'] = training_df['distances'].apply(lambda x: z_score(x, mean, std))

最终结果是相同的,但第一个版本更快,因为它使用了矢量运算

你也可以使用一些标准的库工具,因为这是很常见的,例如这个问题

最新更新