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


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

相关文章
|
7月前
|
Python
Pandas和pyecharts绘制某天多省区连续确诊病例无新增天数的玫瑰图实战(附源码)
Pandas和pyecharts绘制某天多省区连续确诊病例无新增天数的玫瑰图实战(附源码)
125 0
|
2月前
|
数据采集 监控 数据挖掘
CSV文件自动化生成:用Pandas与Datetime高效处理京东商品信息
在电商竞争激烈的背景下,实时掌握商品价格和库存信息至关重要。本文介绍如何使用Python的`pandas`和`datetime`库从京东抓取商品名称、价格等信息,并生成CSV文件。结合代理IP技术,提升爬取效率和稳定性。通过设置请求头、使用代理IP和多线程技术,确保数据抓取的连续性和成功率。最终,数据将以带时间戳的CSV文件形式保存,方便后续分析。
|
3月前
|
数据可视化 数据挖掘 数据处理
Python中数据可视化的魔法——使用Matplotlib和Pandas
【9月更文挑战第5天】在Python的世界里,数据可视化是连接复杂数据与人类直觉的桥梁。本篇文章将带领读者探索如何使用Matplotlib和Pandas这两个强大的库来揭示数据背后的故事。我们将从基础概念开始,逐步深入到高级技巧,让每一位读者都能轻松创建引人入胜的数据可视化图表,使数据分析变得既直观又有趣。
103 14
|
3月前
|
机器学习/深度学习 数据采集 监控
Pandas与Matplotlib:Python中的动态数据可视化
Pandas与Matplotlib:Python中的动态数据可视化
|
5月前
|
存储 数据可视化 Python
Python中的数据可视化:使用Matplotlib和Pandas探索数据
【7月更文挑战第31天】 在数据科学的世界里,可视化是理解复杂数据集的关键。本文将引导你通过Python的Matplotlib库和Pandas库来揭示数据背后的故事。我们将一起构建图表,从简单的线图到复杂的热图,每一步都将用代码示例来丰富你的理解。文章不仅仅是展示如何绘制图表,更是一次深入探索数据结构和模式的旅程。
77 8
|
6月前
|
数据可视化 数据挖掘 API
Pandas数据可视化(二)
**Pandas数据可视化教程聚焦于双变量分析,如散点图和堆叠图。散点图用于揭示两个变量间的关联,例如价格和评分,较大的点可能表示价格更高的葡萄酒得分更高。当数据过多时,可使用hexplot减少过度绘制,提供密度信息。堆叠图适合展示类别变量的分布,如不同葡萄酒类型的评分分布,显示了Chardonnay等品种的受欢迎程度。**
|
6月前
|
数据可视化 数据挖掘 API
Pandas数据可视化(一)
Pandas是Python数据分析的核心库,不仅用于数据加载和转换,还内置了简单的数据可视化功能。通过`.plot()`方法,可以创建条形图、折线图、直方图和饼图等,便于单变量分析。例如,用葡萄酒数据集展示了不同产区的葡萄酒数量,加利福尼亚占比最高。条形图适合比较类别间的差异,折线图则用于显示趋势。直方图用于数值分布,但对倾斜数据(极值影响)敏感。饼图展示类别占比,但不适用于大量分类。Pandas的可视化帮助我们理解数据集的结构和特征。
|
7月前
|
数据可视化 数据挖掘 定位技术
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)
82 2
|
7月前
|
JSON JavaScript 数据可视化
数据可视化:将Python的Pandas与Vue结合展示交互式图表
【4月更文挑战第10天】本文探讨了如何利用Python的Pandas库和前端框架Vue.js创建交互式数据可视化应用。通过Pandas进行数据处理和分析,Vue.js构建用户界面,结合两者可实现动态图表展示。步骤包括数据准备、转换为JSON、创建Vue项目、发送数据请求、渲染图表、添加交互性和优化性能。这种结合为数据理解和探索提供了高效、用户友好的解决方案,适应于数据爱好者和专家,预示着未来数据可视化将更智能、互动。
344 1
|
7月前
|
数据采集 Web App开发 数据可视化
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合
Python爬虫技术与数据可视化:Numpy、pandas、Matplotlib的黄金组合