【发布时间】:2019-09-17 12:55:53
【问题描述】:
我有一个如下所示的数据框(点击下面的链接):
df.head(10)
当日列的值等于 6 时,我想做的是从目标列 (occupied_parking_spaces) 中删除异常值,例如使用正态分布 68-95-99.7 规则。
我尝试了以下代码:
df = df.mask((df['occupied_parking_spaces'] - df['occupied_parking_spaces'].mean()).abs() > 2 * df['occupied_parking_spaces'].std()).dropna()
这行代码从整个数据集中删除异常值,无论自变量如何,但我只想从其中 day 值等于 6 的占用的_parking_spacs 列中删除异常值。
我可以做的是创建一个不同的数据框,我将为其删除异常值:
sunday_df = df.loc[df['day'] == 0]
sunday_df = sunday_df.mask((sunday_df['occupied_parking_spaces'] - sunday_df['occupied_parking_spaces'].mean()).abs() > 2 * sunday_df['occupied_parking_spaces'].std()).dropna()
但是通过这样做,我将在一周中的每一天获得多个数据帧,我必须在最后连接,这是我不想做的事情,因为必须有一种方法可以在同一个数据帧内执行此操作.
你能帮帮我吗?
【问题讨论】:
-
请勿发布代码/数据图片,我们无法复制您的图片。我看到您的数据已经在 Python IDE 中了。只需执行
print(df.head(10)),将其复制并粘贴到您的问题中,而不是图片中
标签: python pandas dataframe normal-distribution outliers