首页 > 解决方案 > 获取熊猫中基于查询的选择的对应列的简洁方法

问题描述

当前情节和预期情节

我是 python 新手。我正在尝试从https://github.com/ageron/handson-ml/blob/master/02_end_to_end_machine_learning_project.ipynb获取住房指数数据集的子集

我已将数据集导入为“房屋”。我试图在图的顶部仅绘制分位数 0.95 中的异常值,该图显示了 median_house_value 的所有值

import matplotlib.image as mpimg

housing.plot(kind="scatter", x="median_income", y="median_house_value",
             alpha=0.1)

这得到了所有行 (i) 的图,我试图为 median_house_value 的子集选择相应的 median_income 行,即 0.95 分位数,并将它们绘制在橙色 (j) 的顶部

以下是我迄今为止的最佳尝试,但没有得到正确的值

plt.plot(housing.groupby('median_house_value').quantile(q=quant)["median_income"], housing.groupby('median_house_value').quantile(q=quant).index.get_level_values('median_house_value'),"or")

我可以通过做..来获得分位数中的 median_house_value 行。

quantile = int(round(housing["median_house_value"].quantile(q=0.95)))
housing.median_house_value > quantile

我想最终得到两个熊猫数组,一个用于 x 轴,一个中值收入行数组,对应于第二个数组,该数组是构成分位数的中值房屋值行数组

提前致谢。

标签: pythonpandas

解决方案


IIUC - 只需过滤您的主数据集,因为您有一个布尔索引:housing["median_house_value"] > quantile.

# REQUIRED THRESHOLD
quantile = int(round(housing["median_house_value"].quantile(q=0.95)))    
# FILTER BY BOOLEAN 
upper_housing = housing[housing["median_house_value"] > quantile]

# PLOTTING
housing.plot(kind="scatter", x="median_income", y="median_house_value", alpha=0.1, c='blue')

upper_housing.plot(kind="scatter", x="median_income", y="median_house_value", alpha=0.1, c='red')

plt.show()

推荐阅读