首页 > 其他分享 >大数据分析——中国商品房销售额分析

大数据分析——中国商品房销售额分析

时间:2022-12-22 11:12:15浏览次数:45  
标签:数据分析 plt 商品房 df set 销售额 fontsize ax

中国商品房销售额分析

  1. 选题的背景介绍

在现当代经济社会的发展中,房地产行业涉及多个经济领域,如生产流通,消费交易等,房地产业的发展状况与我们的生活息息相关,房地产发展向好时,会增加部分财政收入,创造更多的就业机会,改善人们的居住条件,缩小城乡发展差距,带动相关产业和促进经济的循环发展等;在房地产业发展态势处于下风时,会出现GDP增速下降,经济发展放缓等不利影响。当前受疫情等因素影响,经济增长缓慢,个人收入降低;但同样,没有这场危机,也不会有当前如此多的实惠购房政策出台,所以买房问题依然是人们密切关注及讨论的话题,仍然是国民经济中的支柱产业之一。

为了让人们更清楚的了解中国商品房的发展现状及趋势,利用大数据分析的技术,对中国商品房销售额2021年12月到2022年10月(不包含2022年1月)这10个月来的发展趋势进行分析。

在社会方面,商品房销售额是为相关企业的投资决策和管理决策提供信息的,涉及到信息的筛选、鉴别、提取、处理、分析和沟通的全过程。

在经济方面,商品房销售额是当地经济增长率、流动人口等这些决定城市化速度及新移民的住房需求等因素的综合体现。

在数据来源方面,本次中国商品房销售额分析的数据基于中国国家统计局官网,真实可靠。

  1. 大数据分析设计方案
  2. 本数据集的数据内容与数据特征分析

本次从国家统计局下载的数据分别为商品房现房销售额累计值(亿元)、商品房期房销售额累计值(亿元)和商品房销售额累计值(亿元)。

2.数据分析的课程设计方案概述

本数据集的数据内容包含着中国商品房21年12月到22年10月(不包括22年1月)现房销售额、期房销售额、销售额累计值。及采用了分布分析和对比分析,统计分析,正态性分析等数据特征分析来诠释中国商品房销售额的数据。本方案会先获取来源于国家统计局官网的官方数据,再使用爬虫技术,然后通过把这些数据可视化,直观的让大家可以得知近段时间中国商品房销售额的详细数据。

  1. 数据分析步骤
  2. 数据源

本次分析的数据集获取来源于国家统计局官网,数据查询月度数据中的房地产分类下的商品房销售额,以excel文件格式进行数据下载。

  1. 数据清洗

第一步:从国家统计局下载的数据进行提取整理,提取月份、现房销售额、期房销售额、销售额累计值这四列数据。

第二步:以小年月份到大年月份的顺序排序好后检查是否有无异常值

第三步:检查无误后存入桌面的商品房销售额.xls中。

第四步:

# 为图表的中文文本设置默认字体,以避免中文显示乱码问题
plt.rcParams["font.sans-serif"] = ["SimHei"]

第五步:
# 解决坐标值为复数时无法显示负号的问题
plt.rcParams["axes.unicode_minus"] = False

  1. 大数据分析过程及采用的算法

本次分析系用到数据分析算法:

1.快速排序法。算法步骤: 从数列中挑出一个元素,称为 “基准”(pivot),重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分区(partition)操作。递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去,但是这个算法总会退出,因为在每次的迭代(iteration)中,它至少会把一个元素摆到它最后的位置去。

2. Apriori,即关联分析,频繁项集是经常出现在一起的物品的集合;关联规则暗示两种物品之间可能存在很强的关系。

3. Data Mining Algorithms(数据挖掘算法)
可视化是给人看的,数据挖掘就是给机器看的。集群、分割、孤立点分析还有其他的算法让我们深入数据内部,挖掘价值。这些算法不仅要处理大数据的量,也要处理大数据的速度。

  1. 数据可视化

E:\24\temp\WeChat Files\b119916333b2d62a663c4a89bee45cc.png

图3.1 商品房销售额堆积柱形图

图3.1是以商品房销售额.xls表格中的“月份”作为x轴、以“现房销售额”和“期房销售额”作为y轴的一个堆积柱形图。

由该图可知商品房销售额从2022年2月到2021年10月呈上升趋势,2021年12月到2022年2月猛然下降,然后又由2022年2月至2022年4月又继续上升,但是明显可以看出2022年2月商品房销售额较前面21年12月的商品房销售额相差甚多。由图的趋势可预测,虽然现在的商品房销售额并不如意,但是从稳步上升的走向来看,相信今年的数据有望可以往之前的数据靠近,甚至销售额度更高。

E:\24\temp\WeChat Files\3acb420cb8f2a0755d6d78360398492.png

图3.2 商品房销售额多组柱形图

图3.2是以商品房销售额.xls表格中的“月份”作为x轴、以“现房销售额”、“期房销售额”和“销售额累计值”作为y轴的一个多组柱形图。

从图中多组柱形图的形式可以清楚的得知现房销售额、期房销售额和销售额累计值的近10个月数据发展趋势均相同,其中现房销售额的增长趋势相较于其他两组数据增速缓慢,增长率较小,其他的两组数据增长率较高。

E:\24\temp\WeChat Files\e421657278e60a82956dd961daa8b31.png

图3.3 商品房销售额堆积面积图

该图展示了现房销售额和期房销售额,可以清楚看出期房销售额的面积每年都大于现房销售额的面积,由对比结果可以得知,在如今受疫情等因数影响的时代背景下,价格便宜、选择多样、设计紧跟潮流的期房比较受人们的欢迎。

E:\24\temp\WeChat Files\b2836d0ced1b9e68fdad86a5886660e.png

图3.4 商品房销售额折线图

该图展示了现房销售额和期房销售额和销售额累计值这几个月的发展情况,从该个折线图可以看直观看出不论是现房还是期房还是它们的累计销售额都在2022年2月到2022年10月呈明显的上升趋势,参考21年12月的数据可估算出在2022年12月将可能到达了22年三组数据的最高峰值,随机可能又在2023年初一下子掉到了谷底,之后有了上升趋势。这表示人们更倾向于在年末购置房产,而年初就相对没有买房的意愿。

E:\24\temp\WeChat Files\e9f3e362e7676184b4d67839f0d4402.png

图3.5 销售额累计值各月份的数据情况饼图

该图展示了销售额累计值各月份的数据情况,从该图很直观的看出2022年2月那一块面积分布整个饼图的2%,占比最少,而2021年12月那一块面积分布整个饼图的24.4%,占比最多。也可以看出22年上半年月份占比不及21年12月的二分之一。由此可以清楚得知,下半年人们的买房意愿远高于上半年。

E:\24\temp\WeChat Files\cfbe56cbb93b9c2987e5789c12c478b.png

图3.6 比较现房和期房销售额趋势占比的子图

该图由折线图和环形图构成,能清楚的对比现房和期房的销售额,从上面的折线图可以看出期房不论销售额还是增长下降幅度都远远大于期房,从下面的环形图对比可以看出,它们的占比比例相差无几,说明它们是在同步增长和下降的。

E:\24\temp\WeChat Files\a4e5d4dbb54f3f0779ad33a10573ad9.png

图3.7 销售额累计值棉棒图

该图是销售额累计值棉棒图,从该图能明白的看出商品房销售额累计值在2021年12月销售额位于最高值为343243.47亿元,在2022年2月销售额位于最低值为28602.41亿元。通过显而易见的具体数据进一步表明人们更倾向于在年末购置房产,而年初就相对没有买房的意愿。

E:\24\temp\WeChat Files\445fb5e70e21a1a0fe71dbfa3b290f3.png

图3.8 商品房销售额杠铃图

该图是销售额累计值杠铃图,从该图直观的可以看出期房的销售额一直都在现房的销售额右边,说明期房的销售额一直都比现房的销售额高,尤其到年末,人们购置房产的热情高涨,两者各自销售额达到最高时落差最大,反之年初落差最小。

  1. 附完整程序源代码(以及输出结果)

1.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

# 为图表的中文文本设置默认字体,以避免中文显示乱码问题
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 解决坐标值为复数时无法显示负号的问题
plt.rcParams["axes.unicode_minus"] = False

# 引入excel文件数据
df=pd.read_excel(r"E:\pythonProject2\2022年商品房销售额.xls")
# 指定excel文件中“月份”列为x轴
x =df["月份"]
# 指定excel文件中“期房销售额”、“现房销售额”列为y轴
y1=df["现房销售额"]
y2=df["期房销售额"]

# 设置画布大小及其位置
fig=plt.figure(figsize=(10,8),dpi=80)
ax=fig.add_subplot(111)

# 设置柱形的宽度
bar_width=12

# 绘制商品房销售额堆积柱形图
ax.bar(x,y1,label='现房销售额',color='#D8DCDC',width=bar_width)
ax.bar(x,y2,bottom=y1,label='期房销售额',color='#B0C4DE',width=bar_width)

# 设置坐标轴刻度标签大小
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)

# 设置坐标轴标签样式及其外框样式为圆角,背景色和边框颜色
ax.set_xlabel('月份', fontsize=16,bbox=dict(boxstyle='round', facecolor='#F5F5F5',edgecolor='#F5F5F5'))
ax.set_ylabel('销售额(亿元)', fontsize=16,bbox=dict(boxstyle='round', facecolor='#F5F5F5',edgecolor='#F5F5F5'))

# 设置标题样式及其外框样式为圆角,背景色和边框颜色
ax.set_title('商品房销售额', fontsize=22,bbox=dict(boxstyle='round', facecolor='#D8DCDC',edgecolor='#D8DCDC'))

# 隐藏图表上边和右边的轴脊
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 将x轴标签旋转20度
plt.tick_params(axis='x',labelrotation=20)

# 设置图例样式,圆角边框、阴影和字体大小
plt.legend(shadow=True,fancybox=True,fontsize=14)
plt.show()

E:\24\temp\WeChat Files\b119916333b2d62a663c4a89bee45cc.png

2.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

# 为图表的中文文本设置默认字体,以避免中文显示乱码问题
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 解决坐标值为复数时无法显示负号的问题
plt.rcParams["axes.unicode_minus"] = False

#引入excel文件数据
df=pd.read_excel(r"E:\pythonProject2\2022年商品房销售额.xls")
# 指定excel文件中“月份”列为x轴
x =df["月份"]
# 指定excel文件中“期房销售额”、“现房销售额”和“销售额累计值”列为y轴
y1=df["现房销售额"]
y2=df["期房销售额"]
y3=df["销售额累计值"]

# 设置柱形的宽度
bar_width=0.2
df["月份"].head()
x=np.arange(10)

# 设置画布大小及其位置
fig=plt.figure(figsize=(10,8),dpi=80)
ax=fig.add_subplot(111)

# 绘制商品房销售额多组柱形图
ax.bar(x,y1,label='现房销售额',color='#D8DCDC',width=bar_width,tick_label=df["月份"])
ax.bar(x+bar_width,y2,label='期房销售额',color='#B0C4DE',width=bar_width)
ax.bar(x+2*bar_width,y3,label='销售额累计值',color='#A4D1F0',width=bar_width)

# 设置坐标轴刻度标签大小
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)

# 设置坐标轴标签样式及其外框样式为圆角,背景色和边框颜色
ax.set_xlabel('月份', fontsize=16,bbox=dict(boxstyle='round', facecolor='#F5F5F5',edgecolor='#F5F5F5'))
ax.set_ylabel('销售额(亿元)', fontsize=16,bbox=dict(boxstyle='round', facecolor='#F5F5F5',edgecolor='#F5F5F5'))

# 设置标题样式及其外框样式为圆角,背景色和边框颜色
ax.set_title('商品房销售额', fontsize=22,bbox=dict(boxstyle='round', facecolor='#D8DCDC',edgecolor='#D8DCDC'))

# 隐藏图表上边和右边的轴脊
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 将x轴标签旋转20度
plt.tick_params(axis='x',labelrotation=20)

# 设置图例样式,圆角边框、阴影和字体大小
plt.legend(shadow=True,fancybox=True,fontsize=14)
plt.show()

E:\24\temp\WeChat Files\3acb420cb8f2a0755d6d78360398492.png

3.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

# 为图表的中文文本设置默认字体,以避免中文显示乱码问题
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 解决坐标值为复数时无法显示负号的问题
plt.rcParams["axes.unicode_minus"] = False

# 引入excel文件数据
df=pd.read_excel(r"E:\pythonProject2\2022年商品房销售额.xls")
# 指定excel文件中“月份”列为x轴
x =df["月份"]
# 指定excel文件中“期房销售额”、“现房销售额”和“销售额累计值”列为y轴
y1=df["现房销售额"]
y2=df["期房销售额"]

# 设置画布大小及其位置
fig=plt.figure(figsize=(10,8),dpi=80)
ax=fig.add_subplot(111)

# 绘制商品房销售额堆积面积图
ax.stackplot(x,y1,y2,colors=['#D8DCDC','#B0C4DE'])

# 设置坐标轴刻度标签大小
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)

# 设置坐标轴标签样式及其外框样式为圆角,背景色和边框颜色
ax.set_xlabel('月份', fontsize=16,bbox=dict(boxstyle='round', facecolor='#F5F5F5',edgecolor='#F5F5F5'))
ax.set_ylabel('销售额(亿元)', fontsize=16,bbox=dict(boxstyle='round', facecolor='#F5F5F5',edgecolor='#F5F5F5'))

# 设置标题样式及其外框样式为圆角,背景色和边框颜色
ax.set_title('商品房销售额', fontsize=22,bbox=dict(boxstyle='round', facecolor='#D8DCDC',edgecolor='#D8DCDC'))

# 隐藏图表上边和右边的轴脊
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 将x轴标签旋转20度
plt.tick_params(axis='x',labelrotation=20)

# 设置图例样式,圆角边框、阴影和字体大小
title=["现房销售额","期房销售额"]
plt.legend(title,shadow=True,fancybox=True,fontsize=14)
plt.show()

E:\24\temp\WeChat Files\e421657278e60a82956dd961daa8b31.png

4.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

# 为图表的中文文本设置默认字体,以避免中文显示乱码问题
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 解决坐标值为复数时无法显示负号的问题
plt.rcParams["axes.unicode_minus"] = False

# 引入excel文件数据
df=pd.read_excel(r"E:\pythonProject2\2022年商品房销售额.xls")
# 指定excel文件中“月份”列为x轴
x =df["月份"]
# 指定excel文件中“期房销售额”、“现房销售额”和“销售额累计值”列为y轴
y1=df["现房销售额"]
y2=df["期房销售额"]
y3=df["销售额累计值"]

# 设置画布大小及其位置
fig=plt.figure(figsize=(10,8),dpi=80)
ax=fig.add_subplot(111)

# 绘制商品房销售额折线图
ax.plot(x,y1,label='现房销售额',linewidth=3,linestyle=':',color='#D8DCDC',marker='D',markerfacecolor='#9D88ED',markersize=8)
ax.plot(x,y2,label='期房销售额',linewidth=3,linestyle='-.',color='#B0C4DE',marker='H',markerfacecolor='#D878B5',markersize=8)
ax.plot(x,y3,label='销售额累计值',linewidth=3,linestyle='--',color='#A4D1F0',marker='8',markerfacecolor='#3BB4FF',markersize=8)

# 设置坐标轴刻度标签大小
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)

# 设置坐标轴标签样式及其外框样式为圆角,背景色和边框颜色
ax.set_xlabel('月份', fontsize=16,bbox=dict(boxstyle='round', facecolor='#F5F5F5',edgecolor='#F5F5F5'))
ax.set_ylabel('销售额(亿元)', fontsize=16,bbox=dict(boxstyle='round', facecolor='#F5F5F5',edgecolor='#F5F5F5'))

# 设置标题样式及其外框样式为圆角,背景色和边框颜色
ax.set_title('商品房销售额', fontsize=22,bbox=dict(boxstyle='round', facecolor='#D8DCDC',edgecolor='#D8DCDC'))

# 隐藏图表上边和右边的轴脊
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 设置网格
plt.grid()

# 将x轴标签旋转20度
plt.tick_params(axis='x',labelrotation=20)

# 设置图例样式,圆角边框、阴影和字体大小
plt.legend(shadow=True,fancybox=True,fontsize=14)
plt.show()

E:\24\temp\WeChat Files\b2836d0ced1b9e68fdad86a5886660e.png

5.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 为图表的中文文本设置默认字体,以避免中文显示乱码问题
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 解决坐标值为复数时无法显示负号的问题
plt.rcParams["axes.unicode_minus"] = False

# 引入excel文件数据
df=pd.read_excel(r"E:\pythonProject2\2022年商品房销售额.xls")
# 指定excel文件中“月份”列为x轴
x =df["月份"]
# 指定excel文件中销售额累计值”列为y轴
y=df["销售额累计值"]

# 创建画布
fig=plt.figure()
# 设置画布长、宽为10
fig.set_figheight(10)
fig.set_figwidth(10)

# 绘制销售累计值饼图,设置半径为0.7,显示阴影,起始绘制角度90
plt.pie(y,labels=x,radius=0.7,autopct='%3.1f%%',shadow=True,startangle=90)

# 设置标题
plt.title('销售额累计值',fontdict={'size':22})

# 设置图例为3列,位置调整为最合适的,样式为圆角边框、阴影
plt.legend(shadow=True,fancybox=True,ncol=3,loc="best")

# 绘制饼图表格
plt.table(cellText=[y],
cellLoc='center',#单元格文本对齐方式
rowLabels=['销售额(亿元)'],
colWidths = [0.1]*13,#设置每列的宽度
colLabels=x,
loc='lower center')#表格与绘图区域对齐方式
plt.show()

E:\24\temp\WeChat Files\e9f3e362e7676184b4d67839f0d4402.png

6.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()

# 为图表的中文文本设置默认字体,以避免中文显示乱码问题
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 解决坐标值为复数时无法显示负号的问题
plt.rcParams["axes.unicode_minus"] = False

# 引入excel文件数据
df=pd.read_excel(r"E:\pythonProject2\2022年商品房销售额.xls")
# 指定excel文件中“月份”列为x轴
x =df["月份"]
# 指定excel文件中销售额累计值”列为y轴
y1=df["现房销售额"]
y2=df["期房销售额"]
labels=df["月份"]

# 将画布规划成等分布局的2×1的矩阵区域 , 之后在索引为1的区域中绘制子图
ax1 = plt.subplot(211)
ax1.plot(x, y1, 'm--o',color='g', lw=2, ms=5, marker='D',label='现房销售额')
ax1.plot(x, y2, 'g--o',color='orange', lw=2, ms=5, marker='H', label='期房销售额')

# 将x轴标签旋转20度
plt.tick_params(axis='x',labelrotation=20)

# 设置标题、x轴范围、y轴数据、x轴和y轴标签大小
ax1.set_title("现房和期房的销售额趋势", fontsize=11)
ax1.set_ylim(0,180000)
ax1.set_ylabel('销售额(亿元)')
ax1.set_xlabel('月份')
for xy1 in zip(x, y1):
ax1.annotate("%s" % xy1[1], xy=xy1, xytext=(-5, 5), textcoords='offset points')
for xy2 in zip(x, y2):
ax1.annotate("%s" % xy2[1], xy=xy2, xytext=(-5, 5), textcoords='offset points')
ax1.legend()

# 将画布规划成等分布局的2×2的矩阵区域 , 之后在索引为3的区域中绘制子图
ax2 = plt.subplot(223)
ax2.pie(y1, radius=1, wedgeprops={'width':0.5}, labels=labels, autopct='%3.1f%%', pctdistance=0.75)
ax2.set_title('现房销售额')

# 将画布规划成等分布局的2×2的矩阵区域 , 之后在索引为4的区域中绘制子图
ax3 = plt.subplot(224)
ax3.pie(y2, radius=1, wedgeprops={'width':0.5}, labels=labels,autopct='%3.1f%%', pctdistance=0.75)
ax3.set_title('期房销售额')

# 调整子图之间的距离
plt.tight_layout()
plt.show()

E:\24\temp\WeChat Files\cfbe56cbb93b9c2987e5789c12c478b.png

7.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
# 为图表的中文文本设置默认字体,以避免中文显示乱码问题
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 解决坐标值为复数时无法显示负号的问题
plt.rcParams["axes.unicode_minus"] = False

# 引入excel文件数据
df=pd.read_excel(r"E:\pythonProject2\2022年商品房销售额.xls")
# 指定excel文件中“月份”列为x轴
x =df["月份"]
# 指定excel文件中销售额累计值”列为y轴
y=df["销售额累计值"]
labels=df["月份"]

# 设置画布大小及其位置
fig=plt.figure(figsize=(10,8),dpi=80)
ax=fig.add_subplot(111)

# 绘制销售累计值棉棒图
markerline, stemlines, baseline=ax.stem(x,y,linefmt='--',markerfmt='o',label='TestStem',use_line_collection=True)

# 设置坐标轴刻度标签大小
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)

# 设置坐标轴标签样式及其外框样式为圆角,背景色和边框颜色
ax.set_xlabel('月份', fontsize=16,bbox=dict(boxstyle='round', facecolor='#F5F5F5',edgecolor='#F5F5F5'))
ax.set_ylabel('销售额(亿元)', fontsize=16,bbox=dict(boxstyle='round', facecolor='#F5F5F5',edgecolor='#F5F5F5'))

# 设置标题样式及其外框样式为圆角,背景色和边框颜色
ax.set_title('商品房销售额', fontsize=22,bbox=dict(boxstyle='round', facecolor='#D8DCDC',edgecolor='#D8DCDC'))

# 隐藏图表上边和右边的轴脊
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 设置网格
plt.grid()

# 将x轴标签旋转20度
plt.tick_params(axis='x',labelrotation=20)

# 设置图例样式,圆角边框、阴影和字体大小
title=["销售额累计值"]
plt.legend(title,shadow=True,fancybox=True,fontsize=14)

# 设置棉棒图的属性
for temp_x,temp_y in zip(x,y): ax.text(temp_x,temp_y+0.5,s='{}'.format(temp_y),ha='center',va='bottom',fontsize=14)
plt.show()

E:\24\temp\WeChat Files\a4e5d4dbb54f3f0779ad33a10573ad9.png

8.

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.lines as mlines

# 为图表的中文文本设置默认字体,以避免中文显示乱码问题
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 解决坐标值为复数时无法显示负号的问题
plt.rcParams["axes.unicode_minus"] = False

# 引入excel文件数据
df=pd.read_excel(r"E:\pythonProject2\2022年商品房销售额.xls")
df.reset_index(inplace=True)
df = df.sort_values(by="index")


def newline(p1, p2, color='black'):
ax = plt.gca() # 获取当前的绘图区域
l = mlines.Line2D([p1[0], p2[0]], [p1[1], p2[1]], color='#A4D1F0')
ax.add_line(l)
return l


fig, ax = plt.subplots(1, 1, figsize=(12, 10))

# 绘制散点
ax.scatter(y=df['index'], x=df['现房销售额'], s=50, color='#D8DCDC', alpha=0.7, label="现房销售额")
ax.scatter(y=df['index'], x=df['期房销售额'], s=50, color='#B0C4DE', alpha=0.7, label="期房销售额")

# 绘制线条
for i, p1, p2 in zip(df['index'], df['现房销售额'], df['期房销售额']):
newline([p1, i], [p2, i])
# 设置哑铃图两边点的数据
ax.text(p1, i + 0.2, s='{}'.format(p1), ha='center', va='bottom', fontsize=10)
ax.text(p2, i - 0.3, s='{}'.format(p2), ha='center', va='bottom', fontsize=10)

# 设置坐标轴刻度标签大小
plt.xticks(fontsize=14)
plt.yticks(fontsize=14)

# 设置标题、x轴范围、y轴数据、x轴和y轴标签大小
ax.set_title("商品房销售额", fontdict={'size': 22})
ax.set_xlim(0, 180000)
ax.set_xlabel('销售额(亿元)', fontdict={'size': 16})
ax.set_yticks(df['index'])
ax.set_yticklabels(df['月份'])
ax.set_ylabel('月份', fontdict={'size': 16})

# 设置坐标轴标签样式及其外框样式为圆角,背景色和边框颜色为浅灰色
ax.set_xlabel('月份', fontsize=16, bbox=dict(boxstyle='round', facecolor='#D8DCDC', edgecolor='#D8DCDC'))
ax.set_ylabel('销售额(亿元)', fontsize=16, bbox=dict(boxstyle='round', facecolor='#D8DCDC', edgecolor='#D8DCDC'))

# 设置标题样式及其外框样式为圆角,背景色和边框颜色浅灰色
ax.set_title('商品房销售额', fontsize=22, bbox=dict(boxstyle='round', facecolor='#D8DCDC', edgecolor='#D8DCDC'))

# 隐藏图表上边和右边的轴脊
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

# 设置网格
ax.grid(alpha=0.5, axis='x')

# 设置图例样式,圆角边框、阴影和字体大小
plt.legend(shadow=True, fancybox=True, fontsize=14)
plt.show()

E:\24\temp\WeChat Files\445fb5e70e21a1a0fe71dbfa3b290f3.png

  1. 总结

通过这次的课程设计对数据分析和挖掘,我了解了数据分析是指用适当的统计方法对收集来的大量第一手资料和第二手资料进行分析,以求最大化地开发数据资料的功能,发挥数据的作用,是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。而数据挖掘则是从大量数据中挖掘有趣模式和知识的过程。数据分析主要以上数理统计为主,数据挖掘主要是挖掘算法为主。数据挖掘也可以是数据分析的一种!对于自己这次做所的中国商品房销售额分析基本算达到预期,不过也从本次课程设计中发现自身很多不足,光靠脑袋想是不够的,需要多动手实践,不要怕错,大不了错了重来,数据分析就是一个不断假设、验证的过程;不断总结分析方法、分析思路、分析流程,在总结中前行。

标签:数据分析,plt,商品房,df,set,销售额,fontsize,ax
From: https://www.cnblogs.com/ZZZD/p/16997962.html

相关文章