如何用Python创建图表展示物业类型与对应总房价的关联?
解决物业类型数量与总房价的关联图表问题
问题说明
我尝试通过计数将分类变量(物业类型)转换为数值型变量,以此计算其与各物业类型总房价的相关性,但无法制作出能体现该关联的图表。期望的图表样式能同时展示各物业类型的数量和对应总房价,直观体现两者的关联。
原代码问题点
- 未定义
num_property_type(各物业类型的计数变量) - 未定义
total_prices_sorted就直接调用绘图方法 - 仅绘制了总房价的柱状图,未加入物业类型数量的可视化,无法体现两者的关联关系
修正后的代码
import pandas as pd import matplotlib.pyplot as plt # 1. 一次性计算各物业类型的数量和总房价 property_stats = df.groupby("Type").agg( 物业数量=("Type", "count"), 总房价=("Price ($)", "sum") ).reset_index() # 2. 计算数量与总房价的相关性系数 correlation = property_stats["物业数量"].corr(property_stats["总房价"]) print(f"物业类型数量与总房价的相关性系数:{correlation:.2f}") # 3. 按总房价降序排序,提升图表可读性 property_stats_sorted = property_stats.sort_values(by="总房价", ascending=False) # 4. 创建双轴图表,同时展示数量和总房价 fig, ax1 = plt.subplots(figsize=(10, 6)) # 柱状图:展示各物业类型总房价 color = '#1f77b4' ax1.bar(property_stats_sorted["Type"], property_stats_sorted["总房价"], color=color) ax1.set_xlabel("物业类型") ax1.set_ylabel("总房价 ($)", color=color) ax1.tick_params(axis='y', labelcolor=color) ax1.set_title("物业类型数量与总房价的关联") # 折线图:共享X轴,展示各物业类型数量 ax2 = ax1.twinx() color = '#ff7f0e' ax2.plot(property_stats_sorted["Type"], property_stats_sorted["物业数量"], color=color, marker='o', linewidth=2) ax2.set_ylabel("物业数量", color=color) ax2.tick_params(axis='y', labelcolor=color) # 旋转X轴标签避免重叠 plt.xticks(rotation=45) plt.tight_layout() plt.show()
代码说明
- 用
groupby.agg一次性完成分组统计,避免重复分组操作 - 直接计算并输出相关性系数,直观呈现两者的线性关联程度
- 采用双轴图表设计:柱状图展示总房价,折线图展示物业数量,可同时对比两者的变化趋势
- 对数据排序并调整X轴标签角度,优化图表的可读性
内容的提问来源于stack exchange,提问作者Faith Teo
相关产品推荐
相关产品推荐

