|
一、什么是数据分析,为什么要做数据分析
数据分析是用适当的方法对收集来的大量数据进行分析,帮助人们作出判断,以便采取适当行动。做事情要靠数据说话。
数据分析的流程:
(1)提出问题
(2)准确数据:数据清洗,即把数据处理成你想要的格式
(3)分析数据:可用numpy、pandas等工具包
(4)获得结论:用文字表述,虽然能看懂,但是看的不是特别直观
(5)成果可视化:得出的结论和成果可视化是在一起的。
二、matplotlib
1、什么是matplotlib?
matplotlib是最流行的python底层绘图库,主要做数据可视化图表,名字取材于matlib,模仿matlib构建。
功能:
(1)将数据进行可视化,更直观的呈现
(2)使数据更加客观、更有说服力
基本要点:axis轴指x或者y这种坐标轴,x和y均传入可迭代对象
matlibplot的简单实用:假设一天中每隔两个小时(range(2,10,2))的气温(oC)分别是[15,13,14,17]
from matplotlib import pyplot as plt #导入pyplot x = range(2,10,2) # 数据在x轴的位置,是一个可迭代对象 y = [15,13,14,17] #数据在Y轴的位置,是一个可迭代对象, # x轴和y轴的数据一起组成了所有要绘制出的坐标,分别是(2,15),(4,13),(6,14),(8,17) plt.plot(x,y) #传入x和y,把x,y轴的数据结合通过plot绘制出折线图 plt.show() #在执行程序的时候展示图形,看效果,x,y轴间距和我们设置的不太一样,plt会自动设置
2、但目前存在以下几个问题:
1、设置图片大小(想要一个高清无码大图)
2、保存到本地
3、描述信息,比如x轴和y轴表示什么,这个图可以表示什么
4、调整x或y的刻度间距
5、线条的样式(比如颜色,透明度等)
6、标记处特殊的点(比如告诉别人最高点和最低点在哪里)
7、给图片加一个水印(防印,防止盗用)
from matplotlib import pyplot as plt fig = plt.figure(figsize=(20,8),dpi=100) #宽20高8 # figure 图形图表的意思,在这里指的是我们画的图 # 通过实例化一个figure并且传递参数,能够在后台自动使用该figure实例 # 在图像模糊的时候可以传入dpi参数,让图片更加清晰 x = range(2,10,2) y = [15,13,14,17] plt.plot(x,y) plt.savefig('2.svg') # 包存图片,可以报错位svg这种矢量图格式,放大不会有锯齿 plt.show()
fig设置图片属性,plt.figure图形图表的意思,在这里指的是我们画的图,通过实例化一个figure并且传入参数,能够在后台自动使用figure实例,在图像模糊的时候可以传入dpi参数,让图片更加清晰。
plt.savefig保存图片,剋保存为svg这种矢量图格式,放大不会有锯齿。
设置x轴,y轴的刻度:
from matplotlib import pyplot as plt fig = plt.figure(figsize=(20,8),dpi=100) x = range(2,10,2) y = [15,13,14,17] # 绘图 plt.plot(x,y) # 设置x轴的刻度 plt.xticks(x) plt.xticks(range(2,10,1)) # 设置x的步长 # _xtick_lab = [i/2 for i in range(4,10)] # plt.xticks(_xtick_lab) # 想让他显示什么就传什么 plt.xticks(x[::2]) # 当刻度太密集的时候使用列表的步长(间隔取值)来解决,matplotlib会自动帮我们对应 # 调整y轴间距 plt.yticks(range(min(y),max(y)+1)) plt.savefig('2.svg') plt.show()
如果列表a表示10点到12点的每一分钟的气温,如何绘制折线图观察每分钟气温的变化情况?a=[random.randint(20,35) for i in range(120)]
import random from matplotlib import pyplot as plt, font_manager fig = plt.figure(figsize=(20,8),dpi=100) import matplotlib #windows和linux设置字体的方式 font = {'family' : 'YaHei', 'weight' : 'bold', 'size' : 'larger'} matplotlib.rc('font',**font) # 另一种设置字体的方式 my_font = font_manager.FontProperties(fname="/System/Linrary/Fonts/PingFang.ttc") x = range(0,121) y = [random.randint(20,35) for i in range(0,121)] plt.plot(x,y) # # 根据题意将x显示具有真实意义 _x = list(x) # 强制转换为列表,方便取步长 _xtick_lables = ['10点{}分'.format(i) for i in range(60)] _xtick_lables += ['11点{}分'.format(i) for i in range(60)] # # 取步长,数字和字符串一一对应,数据的长度一样 plt.xticks(_x[::3],_xtick_lables[::3], rotation=45) # 将横坐标标签旋转的度数 # 设置图形的描述信息 plt.xlabel("时间") plt.ylabel("温度 单位(0c)") plt.title("10点到12点每分钟的气温变化情况") plt.show()
设置中文显示:
为什么显示中文:
matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字
查看linux/mac下面的字体:
fc-list——>查看支持的字体
fc-list:lang=zh——>查看支持的中文(冒号前面有空格)
那么问题来了L如何修改matlibplot的默认字体
通过matplotlib.rc可以修改,具体方法参见源码(windows/linux)
通过matplotlib下的font_manager可以解决(windows/linux/mac)
练习:假设大家在30岁的时候,根据自己的实际情况,统计出来了11岁到30岁每年交的女(男)朋友的数量如列表a,请绘制出该数据的折线图,以便分析自己每年交女(男)朋友的数量走势
# # 要求: # # y轴表示个数 # # x轴表示岁数,比如11岁,12岁等 from matplotlib import pyplot as plt a = [1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1,1] x = range(11,31,1) y = [i for i in a] plt.plot(x,y) plt.show()
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-19 21:56
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社