如何计算分区域月度平均房价并用Plotly绘制趋势图
分区域月度平均房价统计与Plotly走势绘制
实现步骤
1. 数据预处理与分区域月度均值计算
你之前的分组逻辑仅按月份聚合,没有加入区域维度,会导致两个区域的价格被合并计算;另外需要先正确解析日期格式,避免时间转换错误。
对应代码如下:
import pandas as pd import plotly.express as px # 解析日期列,适配样例中日/月/年的日期格式 df['DateSold'] = pd.to_datetime(df['DateSold'], dayfirst=True) # 按月份、区域两个维度分组,计算平均成交价 df_monthly = df.groupby( [pd.PeriodIndex(df['DateSold'], freq="M"), "Area"] )["Price"].mean().reset_index() # 将Period类型转为时间戳,适配Plotly的时间轴识别 df_monthly["DateSold"] = df_monthly["DateSold"].dt.to_timestamp()
关键说明:
dayfirst=True必须添加,否则pandas会默认按月/日/年解析你的日期数据,导致时间错乱- 分组时同时传入月份和
Area作为分组键,才能得到分区域的月度统计结果 - 最后转换Period为时间戳,是因为Plotly对pandas的Period类型兼容性较差,转成标准时间戳后可自动识别为连续时间轴
2. Plotly折线图绘制
你之前的绘图代码使用了原始日度数据,且没有指定按区域拆分线条,补全后的代码如下:
fig = px.line( df_monthly, x="DateSold", y="Price", color="Area", markers=True, title="各区域月度平均房屋成交价格走势", labels={"DateSold": "成交月份", "Price": "平均成交价格", "Area": "所属区域"} ) # 优化x轴显示,固定按月度刻度展示 fig.update_xaxes(tickformat="%Y-%m", dtick="M1") fig.show()
运行后生成的图表会用不同颜色的折线区分两个区域,每个月度节点带标记点,可直观对比两个区域的房价涨跌走势。
内容的提问来源于stack exchange,提问作者tim2022
相关产品推荐
相关产品推荐

