数据分析(一)——matplotlib

什么是数据分析?

数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们做出判断,以便采取适当行动。

数据分析的流程:

matplotlib :

  1. 能将数据进行可视化,更直观的呈现
  2. 使数据更加客观、更具说服力

matplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建。

一、matplotlib折线图

示例:



from matplotlib import pyplot as plt

x=range(2,26,2)
#数据在X轴的位置,是一个可迭代对象
y=[15,13,14,5,17,20,35,26,26,27,22,18]
#数据在Y轴的位置,也是一个可迭代对象

#绘图
plt.plot(x,y)  #传入X,Y形成对应坐标,通过plot绘制出折线图

#展示图形
plt.show()

结果:

但是根据图可以发现一些问题:

  1. 描述信息,比如X轴与Y轴表示什么,这个图表示什么
  2. 调整刻度的间距
  3. 线条的样式(比如颜色,透明度等)
  4. 标记特殊点(比如最低点、最高点)
  5. 添加水印(防止被盗用)

改良(1)------图片大小与刻度

from matplotlib import pyplot as plt

fig=plt.figure(figsize=(20,8),dpi=80)
#figure图形图标的意思,在这里指的是我们的图,通过figure传递参数
#在图像模糊可以传入dpi参数,让图片清晰

x=range(2,26,2)
y=[15,13,14,5,17,20,35,26,26,27,22,18]

#绘图
plt.plot(x,y)

#设置x、y轴的刻度
plt.xticks(range(2,26,2))
plt.yticks(range(min(y),max(y)+1,2))

plt.savefig("./sig_size.png")  #保存图片,保存为svg这种矢量图格式,放大不会有锯齿

#展示图形
plt.show()

 结果:

 示例:

如果列表表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?

from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

my_font=font_manager.FontProperties(fname="C:\Windows\Fonts\simkai.ttf")
x=range(0,120)
y=[random.randint(20,35) for i in range(120)]

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y)

#调整x轴的刻度
_xtick_labels=["10点{}分".format(i) for i in range(60)]
_xtick_labels+=["11点{}分".format(i) for i in range(60)]
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font) #rotation旋转的度数

plt.show()

 结果:

 

 发现中文没有显示,因为matplotlib默认不支持中文字符

那么如何修改matplotlib的默认字体?

fc-list :lang=zh -->查看支持中文(冒号前面有个空格)

from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager

my_font=font_manager.FontProperties(fname="/System/Library/Fonts/PingFang.ttc")
x=range(0,120)
y=[random.randint(20,35) for i in range(120)]

plt.figure(figsize=(20,8),dpi=80)

plt.plot(x,y)

#调整x轴的刻度
_xtick_labels=["10点{}分".format(i) for i in range(60)]
_xtick_labels+=["11点{}分".format(i) for i in range(60)]
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45) #rotation旋转的度数

plt.show()

 结果:

 

改良(2)---中文显示(字体+大小)、绘制网格、添加图例以及多条绘图

from matplotlib import pyplot as plt
import matplotlib
from matplotlib import font_manager

my_font=font_manager.FontProperties(fname="C:\Windows\Fonts\simkai.ttf",size=25)  #中文显示以及字体大小
fig=plt.figure(figsize=(20,8),dpi=80)
#figure图形图标的意思,在这里指的是我们的图,通过figure传递参数
#在图像模糊可以传入dpi参数,让图片清晰

x=range(2,26,2)
y_1=[15,13,14,5,17,20,35,26,26,27,22,18]
y_2=[12,15,12,15,16,20,21,23,19,30,12,17]
#绘图(多条)
plt.plot(x,y_1,label="今天",linestyle='--') #linestyle决定线的形况
plt.plot(x,y_2,label="昨天",linestyle='-.') 

#设置x、y轴的刻度
plt.xticks(range(2,26,2))
plt.yticks(range(min(y_1),max(y_1)+1,2),fontproperties=my_font)
plt.yticks(range(min(y_2),max(y_2)+1,2),fontproperties=my_font)

#添加描述信息
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位(℃)",fontproperties=my_font)
plt.title("一天内温度变化",fontproperties=my_font)

plt.savefig("./sig_size.png")  #保存图片,保存为svg这种矢量图格式,放大不会有锯齿

#绘制网格
plt.grid(alpha=0.4)  #alpha设置透明度

#添加图例
plt.legend(prop=my_font,loc="upper right") #注意此时中文显示用prop,loc来决定图例的方向

#展示图形
plt.show()

 结果:

 相关线的性质:

 二、matplotlib常用统计图

1)绘制散点图

from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font=font_manager.FontProperties(fname="C:\Windows\Fonts\simkai.ttf",size=15)

y_1=[11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
y_2=[26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]

x_1=range(1,32)
x_2=range(51,82)
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)

#使用scatter方法绘制散点图,和之前绘制折线图的唯一区别
plt.scatter(x_1,y_1,label="3月份")
plt.scatter(x_2,y_2,label="10月份")

#调整x轴刻度
_x=list(x_1)+list(x_2)
_xtick_labels=["3月{}日".format(i) for i in x_1]
_xtick_labels+=["10月{}日".format(i-50) for i in x_2]
plt.xticks(_x[::3],_xtick_labels[::3],fontproperties=my_font,rotation=45)

#添加图例
plt.legend(loc="upper right",prop=my_font)

#添加描述信息
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度",fontproperties=my_font)
plt.title("标题",fontproperties=my_font)
#展示
plt.show()



 结果:

2)绘制条形图

#纵向
from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font=font_manager.FontProperties(fname="C:\Windows\Fonts\simkai.ttf",size=12)

a=["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5","摔跤吧!爸爸","加勒比海盗5","金刚","极限特工","生化危机6","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3","蜘蛛侠","悟空传","银河护卫队2","情圣","新木乃伊"]
b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]

#设置图形大小
plt.figure(figsize=(20,10),dpi=80)
#绘制条形图
plt.bar(range(len(a)),b,width=0.3)
#设置字符串到x轴
plt.xticks(range(len(a)),a,fontproperties=my_font,rotation=90)

plt.xlabel("影片",fontproperties=my_font)
plt.ylabel("票房(亿元)",fontproperties=my_font)
plt.savefig("./movie.png")

#展示
plt.show()

#横向
from matplotlib import pyplot as plt
from matplotlib import font_manager

my_font=font_manager.FontProperties(fname="C:\Windows\Fonts\simkai.ttf",size=12)

a=["战狼2","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5","摔跤吧!爸爸","加勒比海盗5","金刚","极限特工","生化危机6","乘风破浪","神偷奶爸3","智取威虎山","大闹天竺","金刚狼3","蜘蛛侠","悟空传","银河护卫队2","情圣","新木乃伊"]
b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]

#设置图形大小
plt.figure(figsize=(20,10),dpi=80)
#绘制条形图
plt.barh(range(len(a)),b,height=0.3,color="red")
#设置字符串到y轴
plt.yticks(range(len(a)),a,fontproperties=my_font)

plt.ylabel("影片",fontproperties=my_font)
plt.xlabel("票房(亿元)",fontproperties=my_font)
plt.savefig("./movie.png")

#展示
plt.show()

 结果:

 

 3)绘制直方图

from matplotlib import pyplot as plt
from matplotlib import font_manager
import random
my_font=font_manager.FontProperties(fname="C:\Windows\Fonts\simkai.ttf",size=12)

a=[random.randint(70,121) for i in range(250)]

#计算组数
d=2  #组距
num_bins =(max(a)-min(a))//d

#设置图形的大小
plt.figure(figsize=(20,8),dpi=80)

plt.hist(a,num_bins,density=True)
#设置x轴的刻度
plt.xticks(range(min(a),max(a)+d,d))

plt.grid(alpha=0.3)
#展示
plt.show()

 结果:

 

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于python数据分析项目——链家上海二手房数据分析(一),我可以提供一些帮助。首先,你可以使用Python中的Pandas库来收集和处理链家上海二手房的数据。Pandas可以帮助你从网站上获取相关信息,并针对指定的数据集执行许多不同的操作,以便更好地分析和理解这些数据。此外,还可以使用Matplotlib库来可视化数据,以便更清楚地了解链家上海二手房的特征。 ### 回答2: 链家上海二手房数据分析是一个使用Python进行数据探索和分析的项目。通过对链家网站上的二手房数据进行爬虫操作,我们可以获取到大量的关于上海二手房的信息。 在这个项目中,我们首先需要搭建一个爬虫,用于从链家网站上获取到二手房的数据。我们可以利用Python中的网络请求库和解析库,如requests和BeautifulSoup,来发送网络请求并解析返回的网页内容,从而获取到我们需要的数据。 获取到数据后,我们可以进行数据清洗和预处理。这一步骤主要是针对数据中存在的缺失值、异常值等问题进行处理,以确保数据的准确性和一致性。我们可以使用Python中的pandas库来进行数据的清洗和预处理操作。 接下来,我们可以对数据进行探索性分析。通过使用Python中的数据可视化库,如matplotlib和seaborn,我们可以对数据的特征进行可视化展示,以便更好地理解数据的分布和关系。我们可以绘制直方图、散点图、箱线图等来探索二手房价格、面积、位置等特征与其他变量之间的关系。 最后,我们可以进行一些统计分析,如计算二手房价格的平均值、中位数等统计指标,以及进行一些基本的回归分析,如线性回归等。这些分析可以帮助我们揭示出二手房市场的一些趋势和规律,为我们做出更好的决策提供依据。 总之,链家上海二手房数据分析项目是一个利用Python进行数据爬取、清洗、探索和分析的项目,通过对这些步骤的操作,我们可以更好地理解上海二手房市场的情况,并从中获取到有价值的信息。 ### 回答3: 链家是中国最大的房地产经纪公司之一,在其网站上能够找到各个城市的二手房信息。本项目选取了链家上海的二手房数据进行分析。 首先,我们需要从链家网站上爬取二手房的相关数据,包括房屋的价格、面积、区域、朝向、装修情况等等。通过分析这些数据,我们能够得到一些有趣的结论。 比如,我们可以通过计算平均价格和面积,找出上海不同区域二手房的价格及面积分布情况。通过这些分布情况,我们可以了解到哪些区域的二手房更贵,哪些区域的二手房面积更大,帮助购房者做出更明智的决策。 此外,我们还可以通过数据分析,得到不同房屋朝向和装修情况对价格的影响。通过比较不同朝向和装修情况下的价格差异,我们可以了解到市场对于这些因素的偏好,从而也为购房者提供一些参考。 另外,我们还可以通过分析不同时间段内的二手房成交量,找出上海二手房市场的活跃时段。这对于购房者来说也是非常有用的,因为他们可以根据市场活跃程度来选择合适的时间进行购买。 最后,我们还可以通过数据分析,找出上海二手房市场的热门区域和热门楼盘。这些信息对于投资者来说尤为重要,因为他们可以根据市场趋势来选择合适的投资区域和楼盘。 通过对链家上海二手房数据的分析,我们可以得到很多有用的信息,帮助购房者和投资者做出更明智的决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值