发布时间:2022-08-19 14:07
matliotilb:帮助画图
numpy:帮助我们处理数据型的数组
pandas:是在numpy的基础上除了帮我们处理数据型的数组,还能帮助我们处理字符串,列表,以及时间序列等等所有数据类型都是可以处理的
一,数据分析是用适当的方法对收集来的大量数据进行分析.(帮助人们做出判断,以便采取适当行动)
二,数据分析的流程:
1.提出问题
2.准备数据
3.分析数据
4.获得结论
5.成果可视化(图表或者文字等)
三,环境anaconda
jupyter notebook
matplotlib:最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB
1.能将数据进行可视化,更直观的呈现
2.使数据更加客观,更具说服力
通过下面一个小例子我们来看一下matplotlib该如何简单的使用
假设一天当中每隔两个小时(range(2,26,2))的气温分别是[15,13,23,24,15,26,22,26,23,11,10,8]
from matplotlib import pyplot as plt
x = range(2,26,2)
y = [15,13,23,24,15,26,22,26,23,11,10,8]#数据在y轴的位置,是一个可迭代对象
#->x轴和y轴的数据一起组成了所有要绘制出的坐标
#->分别是(2,15)(4,13)(6,23(8,24)......
plt.plot(x,y)#->传入x和y,通过plot绘制出折线图
plt.show()#->在执行程序的时候展示图形
设置图片大小
from matplotlib import pyplot as plt
x = range(2,26,2)
y = [15,13,23,24,15,26,22,26,23,11,10,8]#数据在y轴的位置,是一个可迭代对象
#->x轴和y轴的数据一起组成了所有要绘制出的坐标
#->分别是(2,15)(4,13)(6,23(8,24)......
plt.figure(figsize=(21,10),dpi=100)#设置图片大小
plt.plot(x,y)#->传入x和y,通过plot绘制出折线图
plt.show()#->在执行程序的时候展示图形
保存图片
from matplotlib import pyplot as plt
x = range(2,26,2)
y = [15,13,23,24,15,26,22,26,23,11,10,8]#数据在y轴的位置,是一个可迭代对象
#->x轴和y轴的数据一起组成了所有要绘制出的坐标
#->分别是(2,15)(4,13)(6,23(8,24)......
plt.figure(figsize=(21,10),dpi=100)#设置图片大小
plt.plot(x,y)#->传入x和y,通过plot绘制出折线图
plt.savefig("./sig_size.png")#保存图片,可以保存为svg这种矢量图格式,放大不会有据齿
plt.show()#->在执行程序的时候展示图形
绘制x轴的刻度
plt.xticks(x)
from matplotlib import pyplot as plt
x = range(2,26,2)
y = [15,13,23,24,15,26,22,26,23,11,10,8]#数据在y轴的位置,是一个可迭代对象
#->x轴和y轴的数据一起组成了所有要绘制出的坐标
#->分别是(2,15)(4,13)(6,23(8,24)......
plt.figure(figsize=(21,10),dpi=100)#设置图片大小
plt.plot(x,y)#->传入x和y,通过plot绘制出折线图
plt.xticks(x)#绘制x轴的刻度
#plt.savefig("./sig_size.png")#保存图片,可以保存为svg这种矢量图格式,放大不会有据齿
plt.show()#->在执行程序的时候展示图形
plt.xticks(range(2,25,1))#改变范围与步幅
from matplotlib import pyplot as plt
x = range(2,26,2)
y = [15,13,23,24,15,26,22,26,23,11,10,8]#数据在y轴的位置,是一个可迭代对象
#->x轴和y轴的数据一起组成了所有要绘制出的坐标
#->分别是(2,15)(4,13)(6,23(8,24)......
plt.figure(figsize=(21,10),dpi=100)#设置图片大小
plt.plot(x,y)#->传入x和y,通过plot绘制出折线图
plt.xticks(range(2,25,1))#绘制x轴的刻度
#plt.savefig("./sig_size.png")#保存图片,可以保存为svg这种矢量图格式,放大不会有据齿
plt.show()#->在执行程序的时候展示图形
改变x轴的刻度
from matplotlib import pyplot as plt
x = range(2,26,2)
y = [15,13,23,24,15,26,22,26,23,11,10,8]#数据在y轴的位置,是一个可迭代对象
#->x轴和y轴的数据一起组成了所有要绘制出的坐标
#->分别是(2,15)(4,13)(6,23(8,24)......
plt.figure(figsize=(21,10),dpi=100)#设置图片大小
plt.plot(x,y)#->传入x和y,通过plot绘制出折线图
_stick_labels = [i/2 for i in range (4,49)]
plt.xticks(_stick_labels)#绘制x轴的刻度
#plt.savefig("./sig_size.png")#保存图片,可以保存为svg这种矢量图格式,放大不会有据齿
plt.show()#->在执行程序的时候展示图形
y轴刻度
from matplotlib import pyplot as plt
x = range(2,26,2)
y = [15,13,23,24,15,26,22,26,23,11,10,8]#数据在y轴的位置,是一个可迭代对象
#->x轴和y轴的数据一起组成了所有要绘制出的坐标
#->分别是(2,15)(4,13)(6,23(8,24)......
plt.figure(figsize=(21,10),dpi=100)#设置图片大小
plt.plot(x,y)#->传入x和y,通过plot绘制出折线图
_stick_labels = [i/2 for i in range (4,49)]
plt.xticks(_stick_labels)#绘制x轴的刻度
plt.yticks(range(min(y),max(y)))
#plt.savefig("./sig_size.png")#保存图片,可以保存为svg这种矢量图格式,放大不会有据齿
plt.show()#->在执行程序的时候展示图形
如果列表a表示8点到10的每一分钟的气温变化,该如何绘制折线图观察每一分钟气温的变化情
a = [random.randint(23,37)for i in range(120)]
from matplotlib import pyplot as plt
import random
x = range(0,120)
y = [random.randint(23,37)for i in range(120)]
plt.plot(x,y)
plt.show()
from matplotlib import pyplot as plt
import random
x = range(0,120)
y = [random.randint(23,37)for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)#设置图片大小
plt.plot(x,y)
_x = x
_xtick_labels = ["hello,{}".format(i) for i in _x]#调整x轴的刻度
plt.xticks(_x,_xtick_labels)
plt.show()
#调整x轴的刻度
_x = x
_xtick_labels = ["hello,{}".format(i) for i in _x]
plt.xticks(_x,_xtick_labels)
from matplotlib import pyplot as plt
import random
x = range(0,120)
y = [random.randint(23,37)for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
_x = list(x)[::10]
_xtick_labels = ["hello,{}".format(i) for i in _x]#调整x轴的刻度
plt.xticks(_x,_xtick_labels)
plt.show()
from matplotlib import pyplot as plt
import random
x = range(0,120)
y = [random.randint(23,37)for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
_xtick_labels = ["10点{}分".format(i) for i in range(60)]#调整x轴的刻度
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::3],_xtick_labels[::3])#取步长,数字和字符串一一对应,数据的长度一样
plt.show()
from matplotlib import pyplot as plt
import random
x = range(0,120)
y = [random.randint(23,37)for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
_xtick_labels = ["10点{}分".format(i) for i in range(60)]#调整x轴的刻度
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45)#取步长,数字和字符串一一对应,数据的长度一样
#rotation旋转的度数
plt.show()
设置中文显示
为什么无法显示中文:
matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字
查看linux/mac
fc-list->查看支持的字体
fc-list :lang=zh->查看支持的中文(冒号前面有空格)
那么问题来了:如何修改matplotlib的默认字体?
通过matplotlib.rc可以修改,具体方法参见源码(windows/linux/mac)
通过matplotlib下的font manager可以解决(windows/linux)
from matplotlib import pyplot as plt
import random
import matplotlib
from matplotlib import font_manager
#windows和linux设置字体的方式
#font = {'family':'Ubuntu-R.ttf',
# 'weight':'larger',
# 'size':'larger'}
#matplotlib.rc("font",**font)
#matplotlib.rc("font",famliy='Ubuntu-R.ttf','weight':'larger')
my_font = font_manager.FontProperties(fname="/static/fonts/Ubuntu-R.ttf")
x = range(0,120)
y = [random.randint(23,37)for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
_xtick_labels = ["10点{}分".format(i) for i in range(60)]#调整x轴的刻度
_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()