本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
前言
近期,蛋壳公寓“爆雷”事件持续发酵,期间因拖欠房东房租与租客退款,蛋壳公寓陷入讨债风波,全国多地蛋壳公寓办公区域出现大规模解约事件,而作为蛋壳公寓总部所在地北京,自然首当其冲。
为了应对大规模的解约,北京在全市已经设立了100多个蛋壳公寓矛盾纠纷接待点,包含了蛋壳公寓涉及到的12个区,这些接待点下沉到了街道甚至社区,以方便涉及蛋壳公寓事件的房东和租客咨询和处理纠纷。
长租公寓暴雷,不少年轻人不得不流离失所,构成疫情下的另一个经济写照,事态何去何从,值得关注。本文从数据角度出发,爬取了蛋壳公寓北京区域共6025条公寓数据,清洗数据,并进行可视化分析,为大家了解蛋壳公寓提供一个新的视角。
数据获取
蛋壳公寓网页结构相对简单,数据结构统一,简单的url翻页构造即可。需要注意的是极少数网页会返回404,需要添加判断过滤掉。本文用request请求到数据,用xpath对返回的数据进行解析,最后以追加模式将数据存储为csv文件。爬虫核心代码如下:
<span>def</span><span> get_danke(href): time.sleep(random.uniform(0, </span>1)) <span>#</span><span>设置延时,避免对服务器产生压力</span> response = requests.get(url=href, headers=<span>headers) </span><span>if</span> response.status_code == 200: <span>#</span><span>部分网页会跳转404,需要做判断</span> res = response.content.decode(<span>"</span><span>utf-8</span><span>"</span><span>) div </span>=<span> etree.HTML(res) items </span>= div.xpath(<span>"</span><span>/html/body/div[3]/div[1]/div[2]/div[2]</span><span>"</span><span>) </span><span>for</span> item <span>in</span><span> items: house_price</span>=item.xpath(<span>"</span><span>./div[3]/div[2]/div/span/div/text()</span><span>"</span><span>)[0] house_area</span>=item.xpath(<span>"</span><span>./div[4]/div[1]/div[1]/label/text()</span><span>"</span>)[0].replace(<span>"</span><span>建筑面积:约</span><span>"</span>,<span>""</span>).replace(<span>"</span><span>㎡(以现场勘察为准)</span><span>"</span>,<span>""</span><span>) house_id</span>=item.xpath(<span>"</span><span>./div[4]/div[1]/div[2]/label/text()</span><span>"</span>)[0].replace(<span>"</span><span>编号:</span><span>"</span>,<span>""</span><span>) house_type</span>=item.xpath(<span>"</span><span>./div[4]/div[1]/div[3]/label/text()</span><span>"</span>)[0].replace(<span>"</span><span> </span><span>"</span>,<span>""</span>).replace(<span>"</span> <span>"</span>,<span>""</span>).replace(<span>"</span><span>户型:</span><span>"</span>,<span>""</span><span>) house_floor</span>=item.xpath(<span>"</span><span>./div[4]/div[2]/div[3]/label/text()</span><span>"</span>)[0].replace(<span>"</span><span>楼层:</span><span>"</span>,<span>""</span><span>) house_postion_1</span>=item.xpath(<span>"</span><span>./div[4]/div[2]/div[4]/label/div/a[1]/text()</span><span>"</span><span>)[0] house_postion_2</span>=item.xpath(<span>"</span><span>./div[4]/div[2]/div[4]/label/div/a[2]/text()</span><span>"</span><span>)[0] house_postion_3</span>=item.xpath(<span>"</span><span>./div[4]/div[2]/div[4]/label/div/a[3]/text()</span><span>"</span><span>)[0] house_subway</span>=item.xpath(<span>"</span><span>./div[4]/div[2]/div[5]/label/text()</span><span>"</span><span>)[0] </span><span>else</span><span>: house_price </span>=<span> None house_area </span>=<span> None house_id </span>=<span> None house_type </span>=<span> None house_floor </span>=<span> None house_postion_1 </span>=<span> None house_postion_2 </span>=<span> None house_postion_3 </span>=<span> None house_subway </span>=<span> None ......</span>
www#gaodaima.com来源gao@daima#com搞(%代@#码网搞代码
由于代码运行过程中中断了几次,最终将数据保存为以下几个csv文件中:
数据处理
导入数据分析包
<span>import</span><span> pandas as pd </span><span>import</span><span> numpy as np </span><span>from</span> pathlib <span>import</span><span> Path </span><span>import</span> re
导入数据并合并
找到文件夹中的所有csv文件,遍历读取数据,最后用concat方法合并所有数据。
files = Path(r<span>"</span><span>蛋壳公寓</span><span>"</span>).glob(<span>"</span><span>*.csv</span><span>"</span><span>) dfs </span>= [pd.read_csv(f) <span>for</span> f <span>in</span><span> files] df </span>=<span> pd.concat(dfs) df.head()</span>
数据去重
数据爬取过程中有中断,因此可能存在重复爬取的情况,需要去重处理。
df = df.drop_duplicates()
查看数据
用df.info()方法查看整体数据信息,结合预览的数据,我们可以很容易发现,价格和面积字段不是数字类型,需要转换处理。楼层字段可以提取出所在楼层和总楼层。
<span>df.info() </span><<span>class</span> <span>"</span><span>pandas.core.frame.DataFrame</span><span>"</span>><span> Int64Index:</span>6026 entries, 0 to 710<span> Data columns (total </span>9<span> columns): </span><span>#</span><span> Column Non-Null Count Dtype </span> --- ------ -------------- -----<span> 0 价格 </span>6025 non-<span>null object </span>1 面积 6025 non-<span>null object </span>2 编号 6025 non-<span>null object </span>3 户型 6025 non-<span>null object </span>4 楼层 6025 non-<span>null object </span>5 位置16025 non-<span>null object </span>6 位置26025 non-<span>null object </span>7 小区 6025 non-<span>null object </span>8 地铁 6025 non-<span>null object dtypes: object(</span>9<span>) memory usage: </span>470.8+ KB
数据类型转换
在字段类型转换时报错,检查发现是数据存在一行脏数据,因此先删除脏数据再做转换即可。数据类型转换用到astype()方法,提取所在楼层和总楼层时根据字符”/”分列即可,采用split()方法。
<span>#</span><span>删除包含脏数据的行</span> jg = df[<span>"</span><span>价格</span><span>"</span>] != <span>"</span><span>价格</span><span>"</span><span> df </span>=<span> df.loc[jg,:] </span><span>#</span><span>将价格字段转为数字类型</span> df[<span>"</span><span>价格</span><span>"</span>] = df[<span>"</span><span>价格</span><span>"</span>].astype(<span>"</span><span>float64</span><span>"</span><span>) </span><span>#</span><span>将面积字段转为数字类型</span> df[<span>"</span><span>面积</span><span>"</span>] = df[<span>"</span><span>面积</span><span>"</span>].astype(<span>"</span><span>float64</span><span>"</span><span>) </span><span>#</span><span>提取所在楼层</span> df = df[df[<span>"</span><span>楼层</span><span>"</span><span>].notnull()] df[</span><span>"</span><span>所在楼层</span><span>"</span>]=df[<span>"</span><span>楼层</span><span>"</span>].apply(<span>lambda</span> x:x.split(<span>"</span><span>/</span><span>"</span><span>)[0]) df[</span><span>"</span><span>所在楼层</span><span>"</span>] = df[<span>"</span><span>所在楼层</span><span>"</span>].astype(<span>"</span><span>int32</span><span>"</span><span>) </span><span>#</span><span>提取总楼层</span> df[<span>"</span><span>总楼层</span><span>"</span>]=df[<span>"</span><span>楼层</span><span>"</span>].apply(<span>lambda</span> x:x.split(<span>"</span><span>/</span><span>"</span>)[1<span>]) df[</span><span>"</span><span>总楼层</span><span>"</span>] = df[<span>"</span><span>总楼层</span><span>"</span>].str.replace(<span>"</span><span>层</span><span>"</span>,<span>""</span>).astype(<span>"</span><span>int32</span><span>"</span>)
地铁字段清洗
地铁字段可以提取出地铁数和距离地铁距离。地铁数通过统计字符”号线”的数量来计算,而距离地铁距离通过正则表达式匹配出字符”米”前面的数字即可。为方便理解,这里直接构造函数进行清洗。
<span>def</span><span> get_subway_num(row): subway_num</span>=row.count(<span>"</span><span>号线</span><span>"</span><span>) </span><span>return</span><span> subway_num </span><span>def</span><span> get_subway_distance(row): distance</span>=re.search(r<span>"</span><span>d+(?=米)</span><span>"</span><span>,row) </span><span>if</span> distance==<span>None: </span><span>return</span>-1 <span>else</span><span>: </span><span>return</span><span> distance.group() df[</span><span>"</span><span>地铁数</span><span>"</span>]=df[<span>"</span><span>地铁</span><span>"</span><span>].apply(get_subway_num) df[</span><span>"</span><span>距离地铁距离</span><span>"</span>]=df[<span>"</span><span>地铁</span><span>"</span><span>].apply(get_subway_distance) df[</span><span>"</span><span>距离地铁距离</span><span>"</span>]=df[<span>"</span><span>距离地铁距离</span><span>"</span>].astype(<span>"</span><span>int32</span><span>"</span>)
保存数据
数据清洗完毕后,用df.to_excel()将数据保存为excel文件。
df.to_excel(r<span>"</span><span>蛋壳公寓.xlsx</span><span>"</span><span>) df.head()</span>
数据可视化
导入可视化相关包
<span>import</span><span> matplotlib.pyplot as plt </span><span>import</span><span> seaborn as sns </span>%<span>matplotlib inline plt.rcParams[</span><span>"</span><span>font.sans-serif</span><span>"</span>] = [<span>"</span><span>SimHei</span><span>"</span>] <span>#</span><span> 设置加载的字体名</span> plt.rcParams[<span>"</span><span>axes.unicode_minus</span><span>"</span>] = False<span>#</span><span> 解决保存图像是负号"-"显示为方块的问题 </span> <span>import</span><span> jieba </span><span>from</span> pyecharts.charts <span>import</span> * <span>from</span> pyecharts <span>import</span><span> options as opts </span><span>from</span> pyecharts.globals <span>import</span><span> ThemeType </span><span>import</span><span> stylecloud </span><span>from</span> IPython.display <span>import</span> Image
各行政区公寓数量
根据清洗后的数据绘制北京蛋壳公寓分布地图,我们可以很清晰的看到蛋壳公寓的布局,朝阳区和通州区是蛋壳公寓主要分布区域,延庆、密云、怀柔、平谷和门头沟地区蛋壳公寓分布极少。
从各行政区数量上来看,朝阳区和通州区蛋壳公寓数量均超过1000个,朝阳区遥遥领先其他地区,共计1877个,通州区紧随其后,为1027个。
df7 = df[<span>"</span><span>位置1</span><span>"</span>].value_counts()[:10<span>] df7 </span>= df7.sort_values(ascending=<span>True) df7 </span>= df7.tail(10<span>) </span><span>print</span><span>(df7.index.to_list()) </span><span>print</span><span>(df7.to_list()) c </span>=<span> ( Bar(init_opts</span>=opts.InitOpts(theme=<span>ThemeType.DARK)) .add_xaxis(df7.index.to_list()) .add_yaxis(</span><span>""</span>,df7.to_list()).reversal_axis() <span>#</span><span>X轴与y轴调换顺序</span> .set_global_opts(title_opts=opts.TitleOpts(title=<span>"</span><span>各行政区公寓数量</span><span>"</span>,subtitle=<span>"</span><span>数据来源:蛋壳公寓 </span><span>"</span>,pos_left = <span>"</span><span>left</span><span>"</span><span>), xaxis_opts</span>=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), <span>#</span><span>更改横坐标字体大小</span> yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=13)), <span>#</span><span>更改纵坐标字体大小</span> <span> ) .set_series_opts(label_opts</span>=opts.LabelOpts(font_size=16,position=<span>"</span><span>right</span><span>"</span><span>)) ) c.render_notebook()</span>
小区公寓数量TOP10
从小区数量来看,新建村小区、花香东苑和连心园西区蛋壳公寓数量最多,均超过50个。这也意味着,这些小区的租户受蛋壳风波的影响相较于其他小区更大。
df7 = df[<span>"</span><span>小区</span><span>"</span>].value_counts()[:10<span>] df7 </span>= df7.sort_values(ascending=<span>True) df7 </span>= df7.tail(10<span>) </span><span>print</span><span>(df7.index.to_list()) </span><span>print</span><span>(df7.to_list()) c </span>=<span> ( Bar(init_opts</span>=opts.InitOpts(theme=ThemeType.DARK,width=<span>"</span><span>1100px</span><span>"</span>,height=<span>"</span><span>600px</span><span>"</span><span>)) .add_xaxis(df7.index.to_list()) .add_yaxis(</span><span>""</span>,df7.to_list()).reversal_axis() <span>#</span><span>X轴与y轴调换顺序</span> .set_global_opts(title_opts=opts.TitleOpts(title=<span>"</span><span>小区公寓数量TOP10</span><span>"</span>,subtitle=<span>"</span><span>数据来源:蛋壳公寓 </span><span>"</span>,pos_left = <span>"</span><span>left</span><span>"</span><span>), xaxis_opts</span>=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=11)), <span>#</span><span>更改横坐标字体大小</span> yaxis_opts=opts.AxisOpts(axislabel_opts={<span>"</span><span>rotate</span><span>"</span>:30}), <span>#</span><span>更改纵坐标字体大小</span> <span> ) .set_series_opts(label_opts</span>=opts.LabelOpts(font_size=16,position=<span>"</span><span>right</span><span>"</span><span>)) ) c.render_notebook()</span>
蛋壳公寓租金分布
对租金进行区间分段,我们发现,北京蛋壳公寓的租金还是相当有吸引力的,超过一半的公寓租金在2000-3000元/月。2000元/月以下的公寓数量占比也高达26.13%。
<span>#</span><span>租金分段</span> df[<span>"</span><span>租金分段</span><span>"</span>] = pd.cut(df[<span>"</span><span>价格</span><span>"</span>],[0,1000,2000,3000,4000,1000000],labels=[<span>"</span><span>1000元以下</span><span>"</span>,<span>"</span><span>1000-2000元</span><span>"</span>,<span>"</span><span>2000-3000元</span><span>"</span>,<span>"</span><span>3000-4000元</span><span>"</span>,<span>"</span><span>4000元以上</span><span>"</span>],right=<span>False) df11 </span>= df[<span>"</span><span>租金分段</span><span>"</span><span>].value_counts() df11 </span>= df11.sort_values(ascending=<span>False) df11 </span>= df11.round(2<span>) </span><span>print</span><span>(df11) c </span>=<span> ( Pie(init_opts</span>=opts.InitOpts(theme=<span>ThemeType.DARK)) .add( </span><span>""</span><span>, [list(z) </span><span>for</span> z <span>in</span><span> zip(df11.index.to_list(),df11.to_list())], radius</span>=[<span>"</span><span>20%</span><span>"</span>, <span>"</span><span>80%</span><span>"</span>], <span>#</span><span>圆环的粗细和大小</span> rosetype=<span>"</span><span>area</span><span>"</span><span> ) .set_global_opts(legend_opts </span>= opts.LegendOpts(is_show = False),title_opts=opts.TitleOpts(title=<span>"</span><span>蛋壳公寓租金分布</span><span>"</span>,subtitle=<span>"</span><span>数据来源:蛋壳公寓</span><span>"</span>,pos_top=<span>"</span><span>0.5%</span><span>"</span>,pos_left = <span>"</span><span>left</span><span>"</span><span>)) .set_series_opts(label_opts</span>=opts.LabelOpts(formatter=<span>"</span><span>{b}:{d}%</span><span>"</span>,font_size=16<span>)) ) c.render_notebook()</span>
各行政区租金分布
我们继续将地区因素引入租金分析中,发现,不同行政区内的租金分布也存在较大差异。以朝阳区为例,2000-3000元/月的公寓占比最多,而通州区1000-2000元/月的公寓占比更多。这也很容易理解,毕竟所处的区位和经济发展状况差异较大。
h = pd.pivot_table(df,index=[<span>"</span><span>租金分段</span><span>"</span>],values=[<span>"</span><span>价格</span><span>"</span><span>], columns</span>=[<span>"</span><span>位置1</span><span>"</span>],aggfunc=[<span>"</span><span>count</span><span>"</span><span>]) k </span>= h.droplevel([0,1],axis=1) <span>#</span><span>删除指定的索引/列级别</span> c =<span> ( Polar(init_opts</span>=opts.InitOpts(theme=<span>ThemeType.DARK)) .add_schema(angleaxis_opts</span>=opts.AngleAxisOpts(data=k.columns.tolist(), type_=<span>"</span><span>category</span><span>"</span><span>)) .add(</span><span>"</span><span>1000以下</span><span>"</span>,h.values.tolist()[0], type_=<span>"</span><span>bar</span><span>"</span>, stack=<span>"</span><span>stack0</span><span>"</span><span>) .add(</span><span>"</span><span>1000-2000元</span><span>"</span>,h.values.tolist()[1], type_=<span>"</span><span>bar</span><span>"</span>, stack=<span>"</span><span>stack0</span><span>"</span><span>) .add(</span><span>"</span><span>2000-3000元</span><span>"</span>, h.values.tolist()[2], type_=<span>"</span><span>bar</span><span>"</span>, stack=<span>"</span><span>stack0</span><span>"</span><span>) .add(</span><span>"</span><span>3000-4000元</span><span>"</span>, h.values.tolist()[3], type_=<span>"</span><span>bar</span><span>"</span>, stack=<span>"</span><span>stack0</span><span>"</span><span>) .add(</span><span>"</span><span>4000元以上</span><span>"</span>, h.values.tolist()[4], type_=<span>"</span><span>bar</span><span>"</span>, stack=<span>"</span><span>stack0</span><span>"</span><span>) .set_global_opts(title_opts</span>=opts.TitleOpts(title=<span>"</span><span>各行政区租金情况</span><span>"</span>,subtitle=<span>"</span><span>数据来源:蛋壳公寓</span><span>"</span><span>)) ) c.render_notebook()</span>
蛋壳公寓楼层分布
从北京蛋壳公寓的楼层分布来看,10层以下占比高达73.92,高层和超高层不是蛋壳公寓的理想选择。
<span>#</span><span> 漏斗图 </span> df[<span>"</span><span>楼层分段</span><span>"</span>] = pd.cut(df[<span>"</span><span>所在楼层</span><span>"</span>],[0,10,20,30,40,1000000],labels=[<span>"</span><span>10层以下</span><span>"</span>,<span>"</span><span>10-20层</span><span>"</span>,<span>"</span><span>20-30层</span><span>"</span>,<span>"</span><span>30-40层</span><span>"</span>,<span>"</span><span>40层以上</span><span>"</span>],right=<span>False) count </span>= df[<span>"</span><span>楼层分段</span><span>"</span>].value_counts() <span>#</span><span> pd.Series</span> <span>print</span><span>(count) job </span>=<span> list(count.index) job_count </span>=<span> count.values.tolist() </span><span>from</span> pyecharts.charts <span>import</span><span> Funnel c </span>=<span> ( Funnel(init_opts</span>=opts.InitOpts(theme=<span>ThemeType.DARK)) .add(</span><span>""</span>, [list(i) <span>for</span> i <span>in</span><span> zip(job,job_count)]) .set_global_opts( title_opts</span>=opts.TitleOpts(title=<span>"</span><span>蛋壳公寓楼层分布</span><span>"</span>,subtitle=<span>"</span><span>数据来源:蛋壳公寓</span><span>"</span>,pos_top=<span>"</span><span>0.1%</span><span>"</span>,pos_left = <span>"</span><span>left</span><span>"</span>),legend_opts = opts.LegendOpts(is_show =<span> False)) .set_series_opts(label_opts</span>=opts.LabelOpts(formatter=<span>"</span><span>{b}:{d}%</span><span>"</span>,font_size=16<span>)) ) c.render_notebook()</span>
蛋壳公寓户型分布
从北京蛋壳公寓的户型分布来看,3室1卫为主,共计2783个,其次才是4室1卫。这与深圳蛋壳公寓以4室1卫为主的情况存在较大差异。
df2 = df.groupby("户型")["价格"].count() df2 = df2.sort_values(ascending=False)[:10] # print(df2) bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK)) bar.add_xaxis(df2.index.to_list()) bar.add_yaxis("",df2.to_list()) #X轴与y轴调换顺序 bar.set_global_opts(title_opts=opts.TitleOpts(title="蛋壳公寓户型分布",subtitle="数据来源:蛋壳公寓",pos_top="2%",pos_left = "center"), xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=16)), #更改横坐标字体大小 yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(font_size=16)), #更改纵坐标字体大小 ) bar.set_series_opts(label_opts=opts.LabelOpts(font_size=16,position="top")) bar.render_notebook()
蛋壳公寓面积分布
从北京蛋壳公寓的面积分布来看,86.77%的公寓面积不足20㎡。北京10㎡以下的蛋壳公寓占比达到了21.2%,即便如此,这个数字仍不足深圳的一半。
df[<span>"</span><span>面积分段</span><span>"</span>] = pd.cut(df[<span>"</span><span>面积</span><span>"</span>],[0,10,20,30,40,1000000],labels=[<span>"</span><span>10㎡以下</span><span>"</span>,<span>"</span><span>10-20㎡</span><span>"</span>,<span>"</span><span>20-30㎡</span><span>"</span>,<span>"</span><span>30-40㎡</span><span>"</span>,<span>"</span><span>40㎡以上</span><span>"</span>],right=<span>False) df2 </span>= df[<span>"</span><span>面积分段</span><span>"</span>].astype(<span>"</span><span>str</span><span>"</span><span>).value_counts() </span><span>print</span><span>(df2) df2 </span>= df2.sort_values(ascending=<span>False) regions </span>=<span> df2.index.to_list() values </span>=<span> df2.to_list() c </span>=<span> ( Pie(init_opts</span>=opts.InitOpts(theme=<span>ThemeType.DARK)) .add(</span><span>""</span><span>, list(zip(regions,values))) .set_global_opts(legend_opts </span>= opts.LegendOpts(is_show = False),title_opts=opts.TitleOpts(title=<span>"</span><span>蛋壳公寓面积分布</span><span>"</span>,subtitle=<span>"</span><span>数据来源:蛋壳公寓</span><span>"</span>,pos_top=<span>"</span><span>0.5%</span><span>"</span>,pos_left = <span>"</span><span>left</span><span>"</span><span>)) .set_series_opts(label_opts</span>=opts.LabelOpts(formatter=<span>"</span><span>{b}:{d}%</span><span>"</span>,font_size=14<span>)) ) c.render_notebook()</span>
蛋壳公寓商圈分布
通过对北京几个主要行政区商圈进行词云统计(字体越大表示蛋壳公寓数量最多),朝阳区的管庄、望京,通州区的北关,丰台区的樊羊路、方庄和角门,昌平区的天通苑,海淀区的永丰和西二旗,大兴区的黄村和亦庄,是蛋壳公寓主要选择的商圈。
<span>#</span><span> 绘制词云图</span> text1 = get_cut_words(content_series=df1[<span>"</span><span>位置2</span><span>"</span><span>]) stylecloud.gen_stylecloud(text</span>=<span>"</span> <span>"</span>.join(text1), max_words=100<span>, collocations</span>=<span>False, font_path</span>=r<span>"</span><span>C:WINDOWSFONTSMSYH.TTC</span><span>"</span><span>, icon_name</span>=<span>"</span><span>fas fa-home</span><span>"</span><span>, size</span>=653<span>, palette</span>=<span>"</span><span>cartocolors.diverging.ArmyRose_2</span><span>"</span><span>, output_name</span>=<span>"</span><span>./1.png</span><span>"</span><span>) Image(filename</span>=<span>"</span><span>./1.png</span><span>"</span>)
相关性分析
从相关系数表可以看出,北京蛋壳公寓的面积、周边地铁数对公寓的价格有较大的的影响,相关系数分别为0.81和0.36。蛋壳公寓在进行房屋定价时,对公寓的面积以及公寓的地铁配套有较大权重的考虑。由于北京蛋壳公寓距离地铁都很近,因此,距离的远近对公寓的价格影响有限。另外,所在楼层也不是北京蛋壳公寓租金高低的重要影响因素。
color_map = sns.light_palette(<span>"</span><span>orange</span><span>"</span>, as_cmap=True) <span>#</span><span>light_palette调色板</span> df.corr().style.background_gradient(color_map)
最后,愿所有受蛋壳公寓“暴雷”事件影响的年轻人都能熬过这个寒冬。