Pandas 定义 Z_score 在不同数据框中创建新列时要调用的函数
Pandas defining Z_score function to be called when creating new columns in different dataframes
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 函数应该是什么样子的任何建议(在 return 之后),以便在我为训练和测试数据帧创建新列 'distances_normal' 时进一步深入基于历史数据框列 'distances' 值被标准化了吗?
提前谢谢
不需要定义z_score
函数,计算简单,直接在dateframe上即可:
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))
最终结果相同,但第一个版本更快,因为它使用矢量运算
您也可以为此使用一些标准库工具,因为它很常见,请参见例如 问题
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 函数应该是什么样子的任何建议(在 return 之后),以便在我为训练和测试数据帧创建新列 'distances_normal' 时进一步深入基于历史数据框列 'distances' 值被标准化了吗?
提前谢谢
不需要定义z_score
函数,计算简单,直接在dateframe上即可:
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))
最终结果相同,但第一个版本更快,因为它使用矢量运算
您也可以为此使用一些标准库工具,因为它很常见,请参见例如