python - 如何在数据框的每一列上计算修改后的 Z 分数和 IQR
问题描述
我有一个数据框,我正在尝试在分析之前清理数据。
由于我的数据有点复杂,因此我正在试用样本数据。
A B C D
30 24 13 41
30 25 14 45
30 27 15 44
30 28 16 43
31 21 12 4
31 2 17 99
3 89 99 45
78 24 0 43
35 252 12 45
36 23 13 44
我正在尝试处理异常值并尝试计算修改后的 Z 分数(中位数)和 IQR 以从数据中过滤掉异常值,以便我可以获得质量数据以进行进一步分析。
我想计算 IQR,然后计算每列的 Z 分数,并过滤掉数据框中每一列的异常值。
到目前为止,我已经尝试了几件事,例如:
二维码:
for col in df2.columns:
col = np.array([col])
q1_a = np.percentile(col, 25)
q3_a = np.percentile(col, 75)
iqr1 = q3_a - q1_a
print(iqr1)
修改后的 Z 分数:
for col in df2.columns:
threshold = 3.5
col_zscore = col +'_zscore'
median_y = df[col].median()
print(median_y)
median_absolute_deviation_y = (np.abs(df2[col] - median_y)).median()
print(median_absolute_deviation_y)
modified_z_scores = 0.7413 *((df2[col] - median_y)/median_absolute_deviation_y)
print(modified_z_scores)
df2[col_zscore] = np.abs(modified_z_scores)
df2 = df2[(np.abs(df2[col_zscore]) < 3.5).all(axis=1)]
print(df2)
但没有得到正确的答案。该函数不适用于每一列,并在最后创建我意图的数据框。请帮忙。谢谢。
解决方案
对于 IQR 问题:
Weight Age
0 40 20
1 62 21
2 35 19
3 29 18
如果您的数据框是这样的,您可以使用以下代码计算 IQR。
for col in df2.columns:
col_values = df2[col]
col_values = np.array([col_values])
q1_a = np.percentile(col_values, 25)
q3_a = np.percentile(col_values, 75)
iqr1 = q3_a - q1_a
print(iqr1)
如果所有数据列都包含数字数据,则可以使用上述代码计算 IQR,否则您需要先将分类数据列编码为数字。如果您期望特定的 IQR 值,请查看numpy 百分位 插值参数。
对于 Z_score 问题:
df3 = df2
for col in df2.columns:
threshold = 3.5
col_zscore = col +'_zscore'
median_y = df2[col].median()
print(median_y)
median_absolute_deviation_y = (np.abs(df2[col]-median_y)).median()
print(median_absolute_deviation_y)
modified_z_scores = 0.7413 *((df2[col] - median_y)/median_absolute_deviation_y)
print(modified_z_scores)
df2[col_zscore] = np.abs(modified_z_scores)
df2 = df3[(np.abs(df3[col_zscore]) < 3.5)]
print(df2)
试试上面的代码。
推荐阅读
- compiler-errors - 使用 OpenModelica v1.14.1(64 位)编译简单的 Modelica 代码时出现多个未声明的标识符错误
- websphere - 在 Solaris 中启动 websphere 的 dmgr 时出错
- amazon-web-services - 责任共担模型 - AWS
- sql-server - SSRS:有没有办法将参数的值传递给 SQL 查询中的“值”关键字?
- python - Python Pandas 条形图 - 更改特定条形的颜色
- python - DatasetV1Adapter 返回意外的数据类型
- regex - 正则表达式在第一行和第二行添加符号
- ios - Swift:如何将项目分组或俱乐部下载到一个单元格 tableView
- python - 如何像列表一样在外部使用 csv_reader 对象?
- internet-explorer - 如何在 IE 中重新加载页面时销毁 websocket