【发布时间】:2021-01-21 07:51:57
【问题描述】:
我希望删除 DataFrame 中某些列的上部异常值(特别是在“vehicle_age”和“里程表”列中,以便随后构建直方图。
我已经能够像这样成功地构建初始直方图:
crankshaft_ads['odometer'].plot(kind='hist', bins=25, range= (0, 1000000))
我想建立没有上异常值的直方图,作为比较。到目前为止,这是我尝试过的:
q1_age = crankshaft_ads['vehicle_age'].quantile(0.25)
q1_odometer = crankshaft_ads['odometer'].quantile(0.25)
q3_age = crankshaft_ads['vehicle_age'].quantile(0.75)
q3_odometer = crankshaft_ads['odometer'].quantile(0.75)
iqr_age = q3_age - q1_age
iqr_odometer = q3_odometer - q1_odometer
upper_limit_age = q3_age + (1.5 * iqr_age)
upper_limit_odometer = q3_odometer + (1.5 * iqr_odometer)
crankshaft_ads['upper_limit_age'] = upper_limit_age
crankshaft_ads['upper_limit_odometer'] = upper_limit_odometer
(crankshaft_ads
.query('vehicle_age < upper_limit_age')
.plot(kind='hist', bins=10)
)
(crankshaft_ads
.query('odometer < upper_limit_odometer')
.plot(kind='hist', bins=25)
)
我需要有关 .query() 元素的帮助。我收到以下错误(它似乎在运行 .plot 行时发生): ValueError:视图限制最小值 -49500.0 小于 1,并且是无效的 Matplotlib 日期值。如果您将非日期时间值传递给具有日期时间单位的轴,这通常会发生
DataFrame 中有一列具有日期时间数据类型,但我要做的是为上述两列构建直方图,过滤掉上面的异常值。这是错误的方法吗?
感谢您的帮助。
【问题讨论】:
标签: python pandas matplotlib histogram