你好,我是悦创。
上一篇,我跟你分享了《「实战」南京房价的秘密——准备篇》,接下来我将用三篇与你分享简单的数据可视化。
南京——江苏省会,国家历史文化名城,全国重要的科研教育基地和综合交通枢纽。作为长三角唯一特大城市(上海的定位为超大城市),南京的房价确实不低,从目前的发布的城市均价看,已经逼近 29000元每平米,稳稳的江苏一哥。那实际情况是什么样子呢?从这一节开始,我们就一边谈数据的可视化,一边聊南京的房价。
本系列实战文章以技术讲解为主,因此对商品房的概念未做严格限制。对于部分拆迁安置房、房改房、福利房,只要能够上市流通,小悦一概不做区分。
Xiaoqu_NJ_format.csv上 一篇文章保存的文档,可以点击上一章文章操作一遍
南京小区概览
import pandas as pd
import numpy as np
Xiaoqu = pd.read_csv("Xiaoqu_NJ_format.csv", dtype=np.str)
Xiaoqu.shape
Out: (5082, 16)
从统计的情况看,南京有各类小区 5082 个。那各个城区的小区分区如何呢?这里我们引入 matplotlib 的柱状图方法 bar() 。
首先需要强调的是, matplotlib 绘图过程非常简单,主要遵循3个基本步骤即可:
(1)绘制并设置画布;
(2)图类型选择以及设置绘图数据;
(3)设置图的其他属性,例如标题、轴等。
案例一:绘制南京行政区县的小区分布图-柱状图
因为是在 jupyter notebook 中演示,需要在 notebook 中显示图片,因此需增加一条魔法命令:
%matplotlib inline # 魔法命令,作用是把生成的图片嵌入到notebook中
import matplotlib.pyplot as plt
# 设置绘图的字体,特别是中文字体需要注意,避免出现乱码的情况
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 基于统计命令,生成待绘图的数据
Series_bar = Xiaoqu["区县定位"].value_counts()
x_data = Series_bar.index.tolist()
y_data = Series_bar.values.tolist()
x_data
Out: ['鼓楼', '江宁', '秦淮', '玄武', '建邺', '浦口', '栖霞', '雨花台', '六合', '溧水', '高淳']
y_data
Out: [915, 849, 807, 460, 406, 395, 380, 314, 265, 194, 97]
# step 1:设置画布大小
plt.figure(figsize=(8, 6))
# step 2:基于bar函数的关键绘图语句(柱状图)
plt.bar(x_data, y_data, facecolor="r", label="小区数量", width=0.5, alpha=0.6)
# step 3:设置图的其他属性
plt.title("南京各区域小区数量", fontsize=15) # 设置图标题,标题字号,建议标题字号通常大一些
plt.xticks(fontsize=12) # 设置横轴字号
plt.yticks(fontsize=12) # 设置纵轴字号
plt.legend() # 设置显示图例
到这里,一个最常见的绘图流程就介绍完毕了。需要注意的是 bar() 函数的关键参数,上面脚本中列举的是最常见的几个参数:
color:用来指定柱子的颜色,”r” 表示 red,常见有 “g”(green)、“y”(yellow)、“k”(black)、“b”(blue)等。更一般的,可以传入十六进制颜色码,参考链接:https://www.runoob.com/html/html-colorvalues.html
-
label:用来指定图例的名称;
-
width:用来指定每个柱子的宽度(0~1);
-
alpha:透明度(0~1),通常为了使颜色更加柔和,可以调整该值的大小;