ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

2011-2025年地级市逐月二手房房价数据:Excel与Shp实操指南

2011-2025年地级市逐月二手房房价数据:Excel与Shp实操指南 自打开始做城市经济和房地产相关的研究我最大的感受就是数据不难找难的是找到一套能直接上手的、口径统一的时间序列数据。尤其是二手房房价网上碎片化信息一大堆今天这个平台出一个均价明天那个机构给一个指数时间维度对不上城市范围也对不齐真要拿来分析的时候光是清洗和对齐就能耗掉两三天。所以当我看到“2011-2025年我国地级市逐月二手房房价数据Excel/Shp格式”这套数据时第一反应是——这玩意儿终于把“口径”和“格式”这两件最头疼的事给解决了。先说这套数据能干什么。它覆盖了2011年到2025年整整15年时间粒度细化到月份空间粒度落在全国地级市层面。这意味着你既可以用Excel做纯面板数据分析比如房价增速、城市间差异、影响因素回归也可以把Shp文件直接拖进ArcGIS或QGIS里做空间可视化比如画一张“2024年全国地级市二手房均价分布图”或者做“房价热点转移”的逐年动画。对于做区域经济、城市规划、房地产金融、土地管理方向的学生和研究者来说这套数据属于那种拿到手就能用的基础底料。我先后把Excel和Shp两套数据都仔细摸了一遍中间也踩了一些格式转换、字段匹配、坐标系上的坑。这篇文章就把这套数据的结构、加工思路、以及在ArcGIS和Excel里的实操过程完整梳理一遍希望能帮后面拿到同样数据的人少走弯路。1. 数据结构与字段设计拿到手先看清这些门道1.1 Excel部分的核心字段与记录粒度Excel格式这套数据打开以后第一感觉是“干净”。表头没有多余的合并单元格没有乱七八糟的备注行从第一行开始就是标准字段。我拿到的主表包含这些关键字段省份省级行政区名称用来做区域分组城市地级市名称是空间匹配的关键字段之一城市代码我建议你留意这一列它在关联Shp属性表时非常有用比用中文城市名去匹配要稳定得多年份2011-2025数值格式月份1-12数值格式二手房均价单位是元/平方米保留到整数位环比涨跌相比上个月的百分比变化同比涨跌相比去年同月的百分比变化这里有个特别要说明的地方数据是“逐月”记录的也就是每个城市每年有12条记录。如果你要构建面板数据主键就是“城市代码年份月份”千万别只用城市名来合并因为全国有重名的区县但很少有重名的地级市但为了保险代码字段是最稳的关联锚点。表里的“环比涨跌”和“同比涨跌”这两列我的建议是保留下来做校验。比如你算出来某城市某月均价环比涨了20%先别高兴回头看看是不是数据本身录的就是异常值还是城市范围调整导致的跳变。这在后续做稳健性检验时特别重要。1.2 Shp部分的图层结构与属性表设计Shp格式这边是典型的面图层Polygon每个地级行政单元是一个面要素。打开属性表以后核心字段包括城市名称中文名与Excel表里的“城市”字段一一对应城市代码与Excel表里的一致这是空间数据和表格数据关联的关键桥梁省份名称中文名便于按省级区域做制图筛选空间几何地级行政边界这里有一个年份上的设计考量行政边界不是每一年都完全一样的。2011年到现在部分地级市的行政区划发生过调整比如撤县设区、新设地级市等。这套Shp数据里空间边界用的是统一的基础底图但属性表里保留了城市代码和名称的映射关系。在你做时间序列空间分析时要特别留意某几个城市在2015年前后是否发生过代码变更或名称变更否则出图的时候会出现“幽灵城市”或者“凭空消失的城市”。一个更稳妥的做法先把Shp属性表里的唯一城市代码导出来和Excel里的城市代码做一次全比对看看哪些城市在哪个年份缺失、哪些是后加入的。这套数据整体覆盖度很高但个别微调城市的连续性问题还是需要自己把关。2. Excel还是Shp两种格式的实际应用场景拆解2.1 Excel格式面板回归、统计建模与快速透视如果你要做的是计量分析比如房价影响因素、城市群差异、货币政策传导效果之类的研究Excel格式是首选。原因很简单它本身就是面板数据的标准结构直接导入Stata、SPSS、Python的Pandas或R语言里都极其顺畅。我实测下来把这张表导入Python以后做这么几步就能得到分析面板import pandas as pd df pd.read_excel(二手房房价_2011_2025.xlsx, sheet_name月度数据) # 构造时间字段 df[year_month] pd.to_datetime(df[年份].astype(str) - df[月份].astype(str)) # 设为面板索引 df df.set_index([城市代码, year_month]) df.sort_index(inplaceTrue) # 查看某城市的时间序列 df.loc[110100, 二手房均价].plot()如果你不写代码Excel自带的透视表也已经够用。拉个数据透视表行放“城市”列放“年份”值放“二手房均价”就可以快速查看全国各城市历年的均价变化。再配合条件格式里的“色阶”功能数值高低一目了然。我这里有一个实操建议把“月份”字段拆出来单独用或者构造一个“年月”组合字段都会让你的分析灵活很多。因为在Excel里如果你同时选了“年份”和“月份”两个字段做筛选实际上不太好直接按时间排序更好的做法是在原始表边上加一列辅助列用公式生成标准日期格式DATE(A2, B2, 1)这样生成的日期字段可以直接用于图表轴、时间线筛序也能被Excel的时间智能功能识别。2.2 Shp格式空间制图、格局演化和区域差异可视化Shp格式的数据是给地图用的。当你想回答“房价高地是不是在向三四线城市蔓延”“哪些城市群连片上涨”“都市圈外围的房价洼地在哪里”这类空间格局问题时Excel给不了你直观答案必须把数据落到地图上。最常见的操作是把Excel数据通过城市代码关联到Shp属性表然后再做分级设色、专题制图、时间动画。ArcGIS和QGIS都支持这种“表格连接Join”操作。关联好之后你可以做的事就很多了单年截面图选择某一年某个月的均价字段做Quantile或Natural Breaks分级渲染马上得到“房价梯度图”多年变化图计算2015年和2024年之间的房价累计涨幅生成“涨幅空间分布图”动态序列图利用ArcGIS的时间滑块功能按“年月”字段播放2011年以来的房价演变过程能清晰看到热点从沿海向内陆扩散的路径这里要提醒的是做空间分析时不要直接用Excel表里的均价字段做空间统计。因为二手房均价虽然落到城市面但城市规模差异极大必须用“总成交面积”或者“城市常住人口”做加权处理才有空间统计意义。如果数据里没有这些辅助字段那就老老实实做“分级展示”不要去跑空间自相关那类统计——结果会被大城市主导产生误导。3. 数据加工的完整实操从原始文件到一张合格专题图3.1 Excel清洗流程与字段扩展拿到原始Excel以后我习惯先做一遍标准化清理。不要觉得“现成的数据就不需要清洗”实际上为了让后面分析顺滑这几步省不了。第一步删除空行和无效记录。理论上这套数据不该有空行但合并过多表格以后难免会有零散的空值。用筛选功能快速定位空白的“均价”单元格看看是整行缺失还是个别缺失再决定是补插值还是直接删掉。第二步统一数字格式。Excel里有时候部分单元格会被存成文本格式这会导致求和、平均函数失效。检查方法是选中均价那一列看“类型”是不是“数值”。如果有文本格式别一个个改选中整列后点击“数据-分列-完成”Excel会自动将文本型数字转换为数值型。第三步构造主键和辅助字段。除了前面的“year_month”列我还习惯加一个“城市_年份”的组合列这样在做某些需要城市和年份双维度的匹配时就不用写复杂的多重条件公式。公用的几个公式也分享一下# 提取城市所属区域假设有省份字段按东中西分组 IF(OR(D2北京, D2上海, D2广东, D2浙江, D2江苏, D2福建, D2山东, D2天津, D2河北, D2海南), 东部, IF(OR(D2山西, D2安徽, D2江西, D2河南, D2湖北, D2湖南, D2吉林, D2黑龙江), 中部, 西部)) # 生成同比增速如果数据没有自带 (K2 - INDEX(K:K, MATCH(A2-(B2-1), A:A-B:B, 0))) / INDEX(K:K, MATCH(A2-(B2-1), A:A-B:B, 0))第二个公式是数组公式录入后需要按CtrlShiftEnter结束否则会报错。我个人的建议是直接用Python处理这类跨行引用比Excel公式可维护性高得多。3.2 Shp文件和Excel的关联ArcGIS详细操作把Excel数据关联到Shp属性表是本次实操里最关键的一步。我以ArcGIS 10.8为例操作路径如下打开ArcMap加载Shp文件在目录面板里找到“设置数据源”或者直接在ArcToolbox里搜“Excel 转表Excel To Table”把Excel工作簿里的Sheet转成dBASE表或者地理数据库表右键Shp图层选择“连接和关联-连接”连接设置里第一个下拉框选“基于某一字段的连接”第二个下拉框选Shp属性表里的“城市代码”字段第三个下拉框选刚才转出来的Excel表第四个下拉框选Excel表里的“城市代码”字段保留所有记录完成连接这里有一个非常容易踩坑的地方Excel文件如果直接在ArcMap里作为连接源有时候会因为路径或格式问题尤其是xlsx格式和某些特殊字符导致连接失败。我的建议是永远多走一步“Excel转表”的操作把xlsx先转换成gdb里的表或者DBF格式再执行连接稳定得多。连接好之后你会发现属性表里多了Excel的所有字段。这时候要出图先别急着用“灰度”默认样式按以下步骤做右键图层打开“属性-符号系统”选择“数量-分级色彩”值字段选择“二手房均价”或“同比涨跌”分类方式选“自然间断点分级”类别数设5-7类颜色带选从浅蓝到深红的渐变色这样低值冷色、高值暖色识别度最高如果要做的是“涨幅图”而非“价格图”那值字段就选“同比涨跌”并且把分级类型改成“几何间隔”。因为涨幅数据分布往往是正负都有、且尾部值大几何间隔能更好地展示中间变化。3.3 QGIS实操开源方案同样顺手如果不方便用ArcGISQGIS这一套完全开源、免费操作路径也差不多。加载Shp文件后在“图层”面板里右键选择“属性-连接”点击“添加连接”数据源选择Excel文件QGIS直接支持xlsx格式但注意需要系统装了合适的驱动连接字段两边都选“城市代码”完成后字段列表里多出Excel的字段再到“符号系统-分级”里选择渲染字段设置颜色渐变QGIS对xlsx的直接读取支持比我预想的好它不需要提前转成DBF。不过如果Excel文件特别大比如几万行连接时QGIS会稍微卡顿这属于正常现象等进度条走完即可。另外多说一句QGIS里做时间序列播放非常方便在“时间管理器”插件里设置“年月”字段为时间字段然后设置每一帧对应一个月份导出的动画可以直接用于论文答辩展示。3.4 用Python批量处理两套格式的衔接对于大量级的数据处理我更喜欢直接用Python脚本完成Excel和Shp之间的字段同步。用GeoPandas读取Shp再用Pandas读取Excel然后按城市代码做关联效率比手动在ArcGIS里操作高很多而且可复现。import geopandas as gpd import pandas as pd # 读取Shp gdf gpd.read_file(地级市边界.shp, encodingutf-8) # 读取Excel房价数据 price_df pd.read_excel(二手房房价_2011_2025.xlsx, sheet_name月度数据) # 按城市代码合并 merged gdf.merge(price_df, left_on城市代码, right_on城市代码, howleft) # 筛选某年月导出为新的Shp one_month merged[merged[year_month] 2024-06] one_month.to_file(2024年6月房价.shp, encodingutf-8)这脚本的核心逻辑就是把空间数据和属性数据在代码层面做连接之后你可以按任意年月切片导出成专题图源数据。对于做连续月度空间序列的人来说这种批量处理的价值极大——你不需要在ArcGIS里手动做15年×12个月180次连接操作。如果你要做的是200多个月连续出图强烈建议用脚本写个循环一次性导出所有月份切片再配合ArcGIS的时间滑块或QGIS的时间管理器播放效果直接起飞。4. 常见问题与避坑技巧实录4.1 Excel导入ArcGIS失败的几种典型场景问题1Excel表不能直接在ArcMap里做连接数据源症状连接时提示“未找到表”或“外部表不是预期的格式”。原因xlsx格式在旧版ArcGIS10.2及以下里支持不好此外Excel表格里如果有合并单元格、特殊符号、超长文本也容易导致读取失败。解法先用ArcToolbox的“Excel转表”工具把Excel转成数据库表再执行连接。如果还没有数据库直接新建一个文件地理数据库File Geodatabase把Excel导进去基本能解决90%以上的读取问题。问题2Shp属性表里字段名乱码中文显示为问号原因Shp文件的属性表默认用dBase编码存储中文需要配合合适的代码页。在ArcGIS里加载时默认可能用系统语言代码页一旦不匹配就会乱码。解法加载Shp时在“数据源属性”里指定代码页为UTF-8或GBK具体取决于原始数据生成时用的编码。这套数据我测试下来在ArcGIS 10.8里用系统默认编码通常没问题但如果你用QGIS加载需要把文件编码手动改成UTF-8否则中文城市名会变成乱码。更稳妥的办法是加载完以后检查属性表里的城市名称字段如果全是问号在QGIS里面选择正确的文件编码重新加载即可。问题3连接后数据是空的或者出现一对多的情况原因两个表的关键字段类型不一致。比如Shp里的“城市代码”是文本型Excel里是数值型匹配时类型不匹配导致连接结果为空。解法先把两边的字段类型统一。在Excel里选中“城市代码”列检查单元格格式在ArcGIS属性表里如果字段是文本型确保Excel对应列也用文本型有时需要添加一列辅助列用TEXT函数强制转换。连接之前用“统计”工具检查两边唯一值数量是否一致。4.2 Shp文件损坏后的修复方案问题4Shp文件缺少后缀文件打开提示“无法读取”这是我自己处理这类数据时经常遇到的问题。一个完整的Shp文件由至少三个文件组成.shp几何、.dbf属性、.shx索引。一旦缺少其中一个ArcGIS就无法读取。如果你的压缩包里只有.shp和.dbf缺失了.shx文件不要慌有两种办法用ArcGIS自带的Check Geometry工具检查但这工具不能修复缺. shx 问题用Shapechk修复工具这是一个专门修复Shp文件的命令行工具用法很简单shapechk 地级市边界.shp它的作用就是检查Shp文件的完整性并且能自动生成缺失的.shx索引文件。实测下来对于简单的缺少索引文件的情况修复后再用ArcGIS加载就正常了。4.3 时间格式与数据连续性的细节问题5Excel里的“年月”被显示成一个很大的时间戳数字Excel里日期本质上存的是“距离1900年1月1日的天数”所以如果源数据里的年月被Excel自动识别为日期你看到的可能是“45123”这类数字。解法选中该列右键“设置单元格格式-日期”选择“2012年1月”这种显示格式数字就变成正常月份了。问题6某几个城市的月度数据存在断档比如某些城市在2013年、2020年出现过若干月份没有记录。遇到这种情况你可以选择用前后月份均值填补用线性插值填补直接删掉该城市如果你只需要完整城市面板我个人建议用线性插值尤其是在做时间序列图时插值能让曲线更连续。Python里一行代码搞定df[二手房均价] df.groupby(城市代码)[二手房均价].transform(lambda x: x.interpolate())注意一定要先按城市分组再做插值否则会跨城市插出离谱的数据。5. 数据的延展应用基于这套数据你能做哪些分析数据拿到手格式摸透最终还是要出成果。我根据自己实际用过的分析方向列几个这套数据最合适的应用场景供大家参考。5.1 城市房价分化与收敛性分析传统做法是把“房价水平”和“房价增速”放在一起做分类用某个年份的均价做横轴用之后几年的累计涨幅做纵轴把全国城市画成散点图。这样可以快速识别出“高基数高增长”一线和强二线、“低基数高增长”部分受辐射的三线城市、“低基数低增长”收缩型城市这几类分化格局。用这套逐月数据你还能把时间粒度进一步细化2015年、2016年、2020年这几个节点都对应明显的政策或外部冲击期你可以用逐月数据做断点回归或事件研究分析。5.2 城市群内部房价联动与溢出效应把几个重点城市群长三角、珠三角、京津冀、成渝的城市单独筛出来计算各城市月度房价的相关系数矩阵再做一个格兰杰因果检验就能判断核心城市房价变动是否领先于周边城市。这种研究用月度数据正好年度数据太粗季度数据又没有月度数据灵敏。5.3 数字地图中的房价动态展示如果是要做汇报或展示我的建议是直接用Shp做“时间序列播放”。用ArcGIS的Time Slider或者QGIS的Time Manager按月播放2011-2025年数据地图上的颜色变化会让你直观感受到房价热点的扩散过程。拿这个动画去汇报效果远好于静态图。我个人在做这类数据可视化时的经验是连续播放比逐帧切换更有说服力颜色分级不宜超过7级图例尽量用“数据值”而非“分位值”这样观众对绝对价格的感知更准确不会因为分级方式的不同而对数据产生误解。5.4 结合其他数据做扩展分析这套房价数据如果能跟其他公开数据结合分析价值还能上一个台阶。比如结合城市GDP、常住人口、产业结构、地铁里程、优质教育资源分布等就能做住房可负担性、人口流动与房价关系、公共服务设施资本化等问题的研究。数据格式是标准Excel和Shp所以跟其他表关联的门槛很低。6. 一份趁手的数据工具值得细心打磨这套“2011-2025年我国地级市逐月二手房房价数据”填补了一个很实际的需求缺口。在这之前想要获取这么长跨度、这么细粒度、同时涵盖空间边界的二手房数据要么自己爬取网络房源信息做清洗聚合要么找不同口径的数据源拼凑最后得到的东西往往口径混乱、缺失严重、研究说服力大打折扣。我在实际测试中也发现Excel和Shp的双格式确实照顾到了两类核心用户做计量的用Excel做空间分析的用Shp。而这两个群体恰好构成了城市经济和房地产研究的主力。关于Shp文件还有一个通用提醒每次操作完数据后记得把.dbf文件备份好。.dbf文件一旦损坏属性数据就很难恢复而.shp文件本身的几何信息反而相对容易重建。我做项目时习惯每次大操作前先把整个Shp文件夹复制一份虽然有点占空间但保障性极佳。如果你手里有这套数据我建议你先别急着跑回归、画画图花一个下午把数据彻底摸熟——看看每个文件里有什么、字段间怎么关联、哪些城市有特殊波动、哪些年份有系统性缺漏。这套数据值钱的地方不只是“有数据”而是它的时间跨度和城市覆盖度足够做出一篇有说服力的实证研究。把数据基础打牢后面的一切分析才能站得住脚。
返回列表