Pandas+Pyecharts | 广州市已成交房源信息数据可视化

简介: Pandas+Pyecharts | 广州市已成交房源信息数据可视化

大家好,我是欧K~

本期我们通过分析广州市30000+条已成交房源信息数据,分析一下广州市房价以及房源分布情况:

  • 各区房源成交数量分布
  • 各区房源成交价格分布
  • 成交日期分布规律
  • 等等

涉及到的库:

  • Pandas — 数据处理
  • Pyecharts — 数据可视化

可视化部分:

  • 柱状图 — Bar
  • 地图 — Map
  • 饼图 — Pie
  • 树图 — TreeMap
  • 日历图 — Calendar
  • 旭日图 — Sunburst
  • 词云图 — stylecloud
  • 组合组件 — Grid


希望对小伙伴们有所帮助,如有疑问或者需要改进的地方可以联系小编


1. 导入模块

升级 pyecharts 包:

可视化部分需要用到 pyecharts==1.9.0,已安装其他低版本的需要升级,如果未安装过pyecharts,直接pip安装就是最新版本。


import datetime
import stylecloud
import pandas as pd
from PIL import Image
from pyecharts.charts import Map,Bar,Grid,Pie,Page,TreeMap,Sunburst,Calendar
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.globals import SymbolType


2. Pandas数据处理

2.1 读取数据

df = pd.read_excel('广州房屋成交信息.xlsx')
df.head(10)

结果:


2.2 数据大小


df.shape

(30198, 11) ,可以看到一共有: 30198 条数据,包含成交日期、小区、户型、朝向、面积、楼层、城区、商圈、单价、总价等11个字段。


2.3 数据去重

df.drop_duplicates(subset=['成交日期','小区','户型','面积(㎡)','楼层'],keep='first',inplace=True)
df.shape

(21806, 11),一共有: 21806 条非重复数据


2.4 查看索引、数据类型和内存信息


df.info()

商圈列存在数据缺失,用 “未知” 填充:


df['商圈'].fillna('未知', inplace=True)
df.isnull().sum()


2.5 查看数据列分布信息


df.describe()

面积最小值存在 1 平米,总楼层存在 0 层的情况,过滤掉这些值:


df = df[~((df['面积(㎡)'] < 10) | (df['总楼层'] == 0) | (df['户型'] == '0室0厅'))]
df.describe()

2.6 成交日期处理


df['成交日期'] = df.iloc[:,0].apply(lambda x : x[:10])
df['成交日期'].unique()

3. Pyecharts可视化

3.1 广州市各区成交房源分布地图

df_region = df.groupby('城区')['小区'].count().to_frame('数量').reset_index()
region = df_region['城区'].values.tolist()
count = df_region['数量'].values.tolist()
new = [x + '区' for x in region]
m = (
    Map(init_opts=opts.InitOpts(theme='dark',width='1000px', height='600px'))
    .add('', 
         [list(z) for z in zip(new, count)], 
         '广州',
        is_map_symbol_show=False
        )
    .set_global_opts(
        title_opts=opts.TitleOpts(title='广州市各区成交房源分布', pos_left='center', pos_top='2%',
                      title_textstyle_opts=opts.TextStyleOpts(
                            color='#00BFFF', 
                            font_size=20, 
                            font_weight='bold'
                        ),
                     ), 
        visualmap_opts=opts.VisualMapOpts(max_=3000, 
                                          split_number=8, 
                                          is_piecewise=True,
                                          pos_bottom='10%',
                                          pos_left='25%')
    )
)

效果:


3.2 广州市各区成交房源分布--矩形树图

tree = TreeMap(init_opts=opts.InitOpts(theme='chalk', width='1000px', height='800px'))
tree.add(
    '房源分布', 
    data,
    leaf_depth=1, 
    label_opts=opts.LabelOpts(position='inside', formatter='{b}: {c}套'),
    levels=[
            opts.TreeMapLevelsOpts(  
                treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(
                    border_color='#555', border_width=4, gap_width=4
                )
            ),
            opts.TreeMapLevelsOpts( 
                color_saturation=[0.3, 0.6], 
                treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(
                    border_color_saturation=0.7, gap_width=2, border_width=2
                ),
            ),
            opts.TreeMapLevelsOpts(  
                color_saturation=[0.3, 0.7],
                color_mapping_by= 'value',
                treemap_itemstyle_opts=opts.TreeMapItemStyleOpts(
                    border_color_saturation=0.6, gap_width=1
                ),
            ),
        ],
    )
tree.set_global_opts(
    title_opts=opts.TitleOpts(title='广州市各区成交房源分布', pos_left='center', pos_top='2%', 
                              title_textstyle_opts=opts.TextStyleOpts(color='#00BFFF', font_size=20)),
    legend_opts=opts.LegendOpts(is_show=False)
    )

效果:


3.3 广州市各区成交房源分布--旭日图

s = (
    Sunburst(init_opts=opts.InitOpts(theme='dark',width='1000px',height='800px'))
    .add(
        '',
        data_pair=data_pair,
        highlight_policy='ancestor',
        radius=[0, '100%'],
        sort_='null',
        levels=[
            {},
            {'r0': '20%','r': '45%',
             'itemStyle': {'shadowBlur': 40,'shadowColor':'#333','borderColor': 'rgb(220,220,220)', 'borderWidth': 2}},
            {'r0': '50%', 'r': '85%', 'label': {'align':'right','textShadowBlur': 15,'textShadowColor': '#333'},
             'itemStyle': {'shadowBlur': 40,'shadowColor':'#333','borderColor': 'rgb(220,220,220)', 'borderWidth': 1}},
        ],
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title='广州市各区\n\n成交房源分布',pos_left='center',pos_top='center',
                                title_textstyle_opts=opts.TextStyleOpts(font_style='oblique', font_size=20,color='#00BFFF'),))
    .set_series_opts(label_opts=opts.LabelOpts(font_size=14, formatter='{b}: {c}'))
)

效果:


3.4 2020年广州市每日成交房源数量分布--日历图


c = (
    Calendar(init_opts=opts.InitOpts(width='800px', height='500px'))
    .add('', 
         data_c, 
         calendar_opts=opts.CalendarOpts(
             pos_top='18%',
             pos_left='15%',
             range_='2020',
            daylabel_opts=opts.CalendarDayLabelOpts(name_map='cn',
                 margin=10,
                 label_font_size=12,
                 label_color='#df65b0', 
                ),
            monthlabel_opts=opts.CalendarMonthLabelOpts(name_map='cn',
                 margin=10,
                 label_font_size=12,
                 label_color='#df65b0', 
                 is_show=True
                )
         ),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title='2020年广州市每日成交房源数量分布',pos_left='40%',pos_top='5%',
                                  title_textstyle_opts=opts.TextStyleOpts(font_size=16,color='#00BFFF',font_weight='bold')),
        visualmap_opts=opts.VisualMapOpts(
            max_=150,
            orient='horizontal',
            pos_top='52%',
            pos_left='30%',
            is_piecewise=True,           
        ),
    legend_opts=opts.LegendOpts(is_show=False),
    )
)

效果:


  • 可以看到每年的6月至11月是房屋成交的高发期,尤其是11月份
  • 由于工作的原因,周六、周日是最频繁的成交日期,其次是周一


3.5 广州市成交房源房型和售价分布--扇形图


p2 = (
    Pie(init_opts=opts.InitOpts(theme=ThemeType.DARK,width='1000px',height='600px'))
    .add('户型', p_data, radius=['40%', '70%'])
    .set_series_opts(label_opts=opts.LabelOpts(
        formatter="\n{b|{b}: }{d|{d}%}\n",
        rich={
                "b": {"color": "#00c6d7","fontSize": 16, "lineHeight": 33, "fontWeight":700},
                "d": {"color": "#fff000","fontSize": 16, "lineHeight": 33, "fontWeight":900},
            },),
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title='房屋户型占比', 
            pos_left='center', 
            pos_top='center',
            title_textstyle_opts=opts.TextStyleOpts(
                color='#00BFFF', 
                font_size=28, 
                font_weight='bold'
            ),
        ),
            visualmap_opts=opts.VisualMapOpts(
                is_show=False, 
                min_=300,
                max_=10000,
                is_piecewise=False,
                dimension=0,
                range_color=['#ffffb2','#fecc5c','#fd8d3c','#f03b20','#bd0026']
            ),
            legend_opts=opts.LegendOpts(is_show=False, pos_top='5%'),
    )
)

各房型占比:

总价区间占比:


  • 房屋总价方面:100万以下房屋占比9%,100-300万的价格占比接近60%,600万以下占比达到95%左右
  • 房屋户型方面:2居室占比45%左右,3居室占比达到42%


3.6 广州市成交房源数量TOP20小区--柱状图

效果:



3.7 小区--词云

stylecloud.gen_stylecloud(
    text=' '.join(df['小区'].values.tolist()),
    font_path=r'STXINWEI.TTF',
    palette='cartocolors.qualitative.Bold_5',
    max_font_size=100,
    icon_name='fas fa-home',
    background_color='#212529'
    )

效果:



4. 项目在线运行地址


篇幅原因,部分代码未展示,在线运行地址https://www.heywhale.com/mw/project/6218568d0f3c810017c59085END


以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道

相关文章
|
3天前
|
Python
Pandas和pyecharts绘制某天多省区连续确诊病例无新增天数的玫瑰图实战(附源码)
Pandas和pyecharts绘制某天多省区连续确诊病例无新增天数的玫瑰图实战(附源码)
65 0
|
7月前
|
存储 数据可视化 数据挖掘
Pandas和Pyecharts带你揭秘最近热播好剧的主题和题材趋势
Pandas和Pyecharts带你揭秘最近热播好剧的主题和题材趋势
|
9月前
|
数据可视化 数据挖掘 数据处理
Pandas+Pyecharts | 40000+汽车之家数据分析可视化
Pandas+Pyecharts | 40000+汽车之家数据分析可视化
|
9月前
|
数据可视化 数据挖掘 大数据
Pandas+Pyecharts | 北京某平台二手房数据分析可视化
Pandas+Pyecharts | 北京某平台二手房数据分析可视化
|
3天前
|
数据采集 Web App开发 数据可视化
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
|
3天前
|
数据可视化 数据挖掘 定位技术
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
35 2
|
3天前
|
JSON JavaScript 数据可视化
数据可视化:将Python的Pandas与Vue结合展示交互式图表
【4月更文挑战第10天】本文探讨了如何利用Python的Pandas库和前端框架Vue.js创建交互式数据可视化应用。通过Pandas进行数据处理和分析,Vue.js构建用户界面,结合两者可实现动态图表展示。步骤包括数据准备、转换为JSON、创建Vue项目、发送数据请求、渲染图表、添加交互性和优化性能。这种结合为数据理解和探索提供了高效、用户友好的解决方案,适应于数据爱好者和专家,预示着未来数据可视化将更智能、互动。
|
3天前
|
数据可视化 数据挖掘 Python
Pandas 高级教程——数据可视化
Pandas 高级教程——数据可视化
98 3
|
9月前
|
数据可视化 搜索推荐 数据挖掘
Pandas+Pyecharts | 电子产品销售数据分析可视化+用户RFM画像
Pandas+Pyecharts | 电子产品销售数据分析可视化+用户RFM画像
|
9月前
|
数据可视化 数据处理 Python
Pandas+Pyecharts | 北京近五年历史天气数据可视化
Pandas+Pyecharts | 北京近五年历史天气数据可视化