写点什么

Python 案例|Matplotlib 库实现的数据分析

作者:TiAmo
  • 2023-08-25
    江苏
  • 本文字数:1937 字

    阅读完需:约 6 分钟

Python案例|Matplotlib库实现的数据分析

数据展示是数据分析和挖掘中的重要环节,通过图形的形式可以直观、清晰地呈现数据内在的规律。

本文所用数据采用上一篇案例实现后的数据表,数据存储在 newbj_lianJia.csv 文件中,具体代码如下。

import pandas as pd  #导入库import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei'] # 调整字体设置plt.rcParams 'axes.unicode minus Falsedf=pd.read csv('newbj lianJia.csv',encoding='gbk') # 读取文件 
复制代码

本文主要任务是展示并分析每一属性的数据分布情况,具体包括以下几个方面。

(1) 绘制各楼层平均租金分布的条形图。

(2) 绘制各城区房屋平均租金的折线图。

(3) 绘制平均租金前 20 名的街道房屋数量的柱状图及其平均租金分布折线图。

(4) 绘制房屋户型前 10 名的占比情况。

01、案例实现

(1) 绘制各楼层平均租金分布的条形图。代码如下。

# 按照楼层分组g=df.groupby('floor')# 计算各楼层的房屋数量df floor=g.count()['IDfloor=df floor.index.tolist()# 计算各楼层的平均租金df floor rent=g.mean() 'rent;rent=df floor rent.values.tolist ()rent= round(x,2) for x in rent# 绘制条形图plt.barh(y=floor,width=rent)plt.ylabel('楼层')plt.xlabel('租金/元)plt.title('各楼层平均租金条形图',fontproperties='stkaiti',fontsize=14)plt.tight layout(pad=2)plt.show()
复制代码

运行结果如图 1 所示。



■图 1 各楼层平均租金的条形图

可以看出,对租金影响最大的依次是:地下室、低楼层、中楼层、高楼层。

(2) 绘制各城区房屋平均租金的折线图。

代码如下。

# 按照城区进行分组,统计租金的平均值dfl=df.groupby('district')['rent'].mean()# 获取城区名region=df1.index.tolist()# 获取各城区的平均租金rent=_round(x,2) for x in dfl.values.tolist()# 绘制各城区房屋租金折线图plt.figure(figsize=(12,6))plt.plot(region,rent,c='r',marker='o',linestyle='--')for x,y in zip(region,rent):plt.text(x,Y,' .0f' y,ha='center',fontsize=11)# 设置坐标轴标签文本plt.ylabel('租金/元,fontproperties='simhei')plt.xlabel('城区',fontproperties='simhei')#设置图形标题plt.title(各城区房屋平均租金折线图,fontproperties='stkaiti'fontsize=14)# 设置横坐标字体倾斜角度plt.xticks(rotation=15)# 显示图形plt.show()
复制代码

运行结果如图 1 所示。



■图 1 各城区房屋平均租金的折线图

可以看出,城区对房租的影响很大,平均租金最高的是朝阳区,13976 元,最低的是密云区,3480 元。当然,这与城区所在的地理位置有着直接的关系,距离市中心越近,租金越高,距离市中心越远,租金越低。

(3) 绘制平均租金前 20 名的街道房屋数量的柱状图及其平均租金分布折线图。

代码如下。

# 按照街道进行分组g=df.groupby('street')# 对街道按照平均租金进行升序排序,并取前 20 名df region=g.mean() 'renttop_street rentdf region.sort values(axis=0,ascending=False)[:20]# 获取排名前 20 名的街道名称region=top street rent .index.tolist ()# 统计各个街道出租房屋数量count=[g.count()['ID'][s] for s in region]# 获取排名前 20 名的街道的平均租金rent= round(x,2) for x in top street rent.values.tolist()#绘图fig,axs=plt.subplots(1,1,figsize=(12,6))axs.bar(region,height=count)plt.ylabel("数量")plt.xlabel("街道")axs1=axs.twinx()axsl.plot(region,rent,c='r',marker='o',linestyle='--')for x,y in zip(region,count):axs.text(x,y,.Of' y, ha='center',fontsize=12)for x,y in zip(region,rent):axs1.text(x,y,.Of' yha='center',fontsize=12)axs.set title(租金前 20 名的街道出租房屋数量及其租金分布图fontsize= 14)plt.ylabel("租金/元")fig.autofmt xdate(rotation=15)plt.tight layout(pad=1)plt.show()
复制代码

运行结果如图 2 所示。



■图 2 租金前 20 名的街道出租房屋数量及租金分布图

可以看出,租金最贵的街道为官园、安定门、宣武门、西山、白石桥。除了租金最高的官园,其余街道的租金相差不是很多,所以街道属性与租金没有很强的相关性。

(4) 绘制房屋户型前 10 名的占比情况,代码如下。

# 根据房屋户型分组dfl=df .groupby('model')#计算房屋户型数量,排序并取前 10 名df model=dfl.count()['ID'].sort values(axis=0,ascending=False)[:10]model=df model.index.tolist ()# 计算房屋数量count=df model.values.tolist()#绘制房屋户型占比饼图plt.pie(count,labels=model,autopct='%1.2f%')# 设置图形标题plt.title('房屋户型前 10 名的占比情况,fontproperties='stkaiti'fontsize=14)plt.show()
复制代码

 运行结果如图 3 所示。



可以看出,大部分房屋的户型为 2 室 1 厅 1 卫、1 室 1 厅 1 卫、3 室 1 厅 1 卫、3 室 2 厅 2 卫。

发布于: 刚刚阅读数: 3
用户头像

TiAmo

关注

有能力爱自己,有余力爱别人! 2022-06-16 加入

CSDN全栈领域优质创作者,万粉博主;阿里云专家博主、星级博主、技术博主、阿里云问答官,阿里云MVP;华为云享专家;华为Iot专家;

评论

发布
暂无评论
Python案例|Matplotlib库实现的数据分析_Python_TiAmo_InfoQ写作社区