1.matplotlib
1.jupyter和conda的使用:
安装非常简单,只需要在终端输入:
pip install jupyter
打开jupyter notebook 也只需要在终端输入:
jupyter notebook
2.plot()函数:
仿照matlab构建,主要用于数据可视化图表,是Python底层绘图库
import matplotlib.pyplot as plt
x=range(2,26,2)
#数据在x轴的位置,是一个可迭代对象
y=[15,13,14.5,17,20,25,26,24,22,18,15,13]
#数据在y轴的位置,是一个可迭代对象
#x和y轴的数据一起组成了所有要绘制出的坐标
#分别是(2,15),(4,13)....
plt.plot(x,y)#传入x和y,通过plot绘制出折线图
plt.show()#展示图形
- 设置图片大小(想要一个高清无码大图)
import matplotlib.pyplot as plt
#设置图片大小
fig=plt.figure(figsize=(10,4))
#20为宽,8为高,单位为英寸
#figure图形图标的意思,在这里指的就是我们画的图
#在图像模糊的时候可以传入dpi参数,让图片更加清晰
#dpi指的是每英寸上点的个数
x=range(2,26,2)
y=[15,13,14.5,17,20,25,26,26,24,22,18,15]
#绘图
plt.plot(x,y)
#保存(绘图之后保存)
plt.savefig("./sig.png")#保存图片
#可以保存为svg这种矢量图格式,放大不会有锯齿
#展示
plt.show()
-
保存到本地
-
描述信息,比如x轴和y轴表示什么,这个图表示什么
-
调整x和y的刻度的间距
import matplotlib.pyplot as plt
#设置图片大小
fig=plt.figure(figsize=(10,4))
#20为宽,8为高,单位为英寸
#figure图形图标的意思,在这里指的就是我们画的图
#在图像模糊的时候可以传入dpi参数,让图片更加清晰
#dpi指的是每英寸上点的个数
x=range(2,26,2)
y=[15,13,14.5,17,20,25,26,26,24,22,18,15]
#绘图
plt.plot(x,y)
#设置x轴的刻度
plt.xticks(x)#传入的每个x的值
#保存(绘图之后保存)
#plt.savefig("./sig.png")#保存图片
#可以保存为svg这种矢量图格式,放大不会有锯齿
#展示
plt.show()
把plt.xticks(x)改成plt.xtricks(range(2,25))
_xtick_labels=[i/2 for i in range(4,49)]
plt.xticks(_xtick_labels)
_xtick_labels=[i/2 for i in range(4,49)]
plt.xticks(_xtick_labels[::3])
_xtick_labels=[i/2 for i in range(4,49)]
plt.xticks(range(25,50))
_xtick_labels=[i/2 for i in range(4,49)]
plt.xticks(range(25,50))
plt.yticks(range(min(y),max(y)+1))
例子:表示10点到12点每一分钟气温的变化的折线图
import matplotlib.pyplot as plt
import random
x=range(0,120)
y=[random.randint(20,35) for i in range(120)]
plt.plot(x,y)
plt.show()
气温变化折形图:
plt.figure(figsize=(20,8),dpi=80)
调整x轴的刻度:
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_lables=["10点{}分".format(i) for i in range(60)]
_xtick_lables +=["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::3],_xtick_lables[::3],ratation=90)#rotation旋转的度数
plt.show()
这个在运行的时候报错了
设置中文格式:
import matplotlib.pyplot as plt
import random
import matplotlib
from matplotlib import font_manager
"""
windows和linux设置字体的方式
font={
'family':'MicroSoft YaHei',
'weight':'bold',
'size':'larger'
}
matplotlib.rc("font",**font)
matplotlib.rc("font",family='MicroSoft YaHei',weight="bold")
matplotlib.rc"""
my_font=font_manager.
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_lables=["10点{}分".format(i) for i in range(60)]
_xtick_lables +=["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::3],_xtick_lables[::3],ratation=90)#rotation旋转的度数
plt.show()
- 线条的样式(比如颜色、透明度等)
- 标记出特殊的点(比如最低点、最高点)
- 给图片添加一个水印(防伪,防止盗用)
折形图:
import matplotlib.pyplot as plt
y=[1,0,1,1,2,4,3,2,3,4,4,5,6,5,4,3,3,1,1]
x=range(11,30)
#设置图形大小
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
#设置x轴刻度
_xtick_labels=["{}岁".format(i) for i in x]
plt.xticks(x,_xtick_labels)
#绘制网格
plt.grid()
#展示
plt.show()
散点图:
条形图:
绘制离散的数据,数据本身之间没有关系,eg:影片的票房
#coding=utf-8
import matplotlib.pyplot as plt
from matplotlib import font_manager
a=["战狼二","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5"]
b=[56.01,26.94,17.53,87.9,65.9]
plt.bar(range(len(a)),b)
plt.show()
#coding=utf-8
import matplotlib.pyplot as plt
from matplotlib import font_manager
a=["战狼二","速度与激情8","功夫瑜伽","西游伏妖篇","变形金刚5"]
b=[56.01,26.94,17.53,87.9,65.9]
plt.bar(range(len(a)),b)
plt.show()
直方图:
没有经过任何统计的数据可以画直方图
numpy学习:
处理数值型数据,Python科学计算库的基础库,多用在大型多维数组上执行数值运算
1.数组的创建:
#coding=utf-8
import numpy as np
t1=np.array([1,2,3])
print(t1)#[1 2 3]
print(type(t1))#<class 'numpy.ndarray'>
t2=np.arange(10)
print(t2)#[0 1 2 3 4 5 6 7 8 9]
#coding=utf-8
import numpy as np
t1=np.array([1,2,3])
print(t1)#[1 2 3]
print(type(t1))#<class 'numpy.ndarray'>
t2=np.arange(10)
print(t2)#[0 1 2 3 4 5 6 7 8 9]
print(t2.dtype)#int32
#numpy中的数据类型
t4=np.array(range(1,4),dtype='float32')
print(t4)#[1. 2. 3.]
print(t4.dtype)#float32
#numpy中的Bool类型
t5=np.array([1,1,0,1,0,0],dtype=bool)
print(t5)#[ True True False True False False]
print(t5.dtype)#bool
#调整数据类型
t6=t5.astype('int8')
print(t6)#[1 1 0 1 0 0]
print(t6.dtype)#int8
2.数组的拼接:
#coding=utf-8
import numpy as np
t1=np.arange(12).reshape((3,4)).astype("float")
t1[1,2:]=np.nan
for j in range(t1.shape):
temp_col=t1[:,j]#当前的一列
nan_num=np.count_nonzero(temp_col!=temp_col)
if nan_num!=0:
temp_not_nan_col=temp_col[temp_col==temp_col]#当前这一列不为nan的array
temp_not_nan_col.mean()
temp_col[np.isnan(temp_col)]=temp_not_nan_col.mean()
pandas:
pandas除了处理数值之外(基于numpy),还能够帮助我们处理其他类型的数据