【问题标题】:Unable to create histogram from slice due to datetime datatype error由于日期时间数据类型错误,无法从切片创建直方图
【发布时间】: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


    【解决方案1】:

    您似乎没有在绘图函数中选择要绘制的列。您编写的查询选择整个数据框的一个子集,而不仅仅是每个查询中提到的列。因此,这两个绘图函数都试图为单个图中的每一列绘制直方图,包括日期时间列。

    这里有三种方法可以解决这个问题,以你的第一个绘图函数为例:

    # Solution 1: apply query to whole dataframe then select column in plotting function
    crankshaft_ads.query('vehicle_age < @upper_limit_age').plot.hist(y='vehicle_age', bins=10)
    
    # Solution 2: first select column then select values to plot in histogram
    crankshaft_ads['vehicle_age'][crankshaft_ads['vehicle_age'] < upper_limit_age].plot.hist(bins=10)
    
    # Solution 3: first select all dataframe rows meeting condition then select column in plotting function
    crankshaft_ads[crankshaft_ads['vehicle_age'] < upper_limit_age].plot.hist(y='vehicle_age', bins=10)
    

    【讨论】:

      猜你喜欢
      • 2021-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-04
      • 2017-03-11
      相关资源
      最近更新 更多