关于#python#的问题:在使用Python做条件求和时(相关搜索:数据处理)

【问题点】
在使用Python做条件求和时,剔除高异常值,对多列数据求和。但是为什么这么算出来的数据是不对的,求帮忙答疑,谢谢~
【数据源】

img


【数据处理】

img

list_1=
df_distr_1["ttl_sale"] =((df_distr_1.loc[:,list_1].values<df_distr_1[['高异常']].values)).sum(axis=1)
df_distr_1.head(20)

【以下回答由 GPT 生成】

问题主要出在对高异常值的判断和剔除上面。在代码中,你使用的是<符号进行比较,但实际上这样的比较会返回一个包含True和False的矩阵,然后通过sum函数对矩阵进行求和。这样的操作并不能正确地计算出需要求和的结果。

为了解决这个问题,你可以使用np.where函数来进行条件判断和替换。具体的解决方案如下所示:

import numpy as np

# 定义异常值阈值
threshold = 100

# 使用np.where进行条件判断和替换
df_distr_1['ttl_sale'] = np.where(df_distr_1['高异常'] > threshold, 0, df_distr_1[list_1].sum(axis=1))

# 查看结果
df_distr_1.head(20)

在上面的代码中,首先通过np.where函数对df_distr_1['高异常']进行条件判断:如果大于阈值threshold,则替换为0;否则保持原始值不变。然后,将替换后的结果与df_distr_1[list_1]中的列进行求和操作,得到最终的结果。

请注意,这里使用的是>符号进行比较,因为你想要剔除的是高于阈值的异常值。如果你想要剔除低于阈值的异常值,可以使用<符号。

请尝试使用上述代码,并查看是否能够正确地剔除高异常值并对多列数据进行求和。如果还有其他问题,请随时提问。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

引用 皆我百晓生 小程序回复内容作答:

在进行条件求和时,如果你想剔除高异常值并对多列数据求和,你需要先定义异常值的阈值,然后将大于阈值的值视为异常值。

以下是一个示例代码,假设你有两列数据column1和column2,你想对它们进行求和,但要剔除大于某个阈值的异常值:

threshold = 100  # 定义异常值阈值

# 假设你的数据存储在一个名为data的DataFrame中,列名为column1和column2
filtered_data = data[(data['column1'] <= threshold) & (data['column2'] <= threshold)]  # 过滤掉大于阈值的异常值
sum_column1 = filtered_data['column1'].sum()  # 对column1进行求和
sum_column2 = filtered_data['column2'].sum()  # 对column2进行求和

print('Sum of column1:', sum_column1)
print('Sum of column2:', sum_column2)

请确保你已正确指定了数据源和列名,并根据实际情况调整阈值。如果你遇到了具体的错误或问题,请提供更多的详细信息,以便于更好地帮助你解决问题。