python常用模块(一) 数据处理 matplotlib numpy pandas

如果要批量安装库的话,可以建立一个requirements.txt文件,里面写上

   matplotlib==2.2.2
    numpy==1.14.2
    pandas==0.20.3
    TA-Lib==0.4.16 
    tables==3.4.2 hdf5
    jupyter==1.0.0 

然后执行 pin install -r requirements.txt

 

1、jupyter notebook 快捷键

      Shift+Enter, 执行本单元代码,并跳转到下一单元

      Ctrl+Enter,执行本单元代码,留在本单元

命令模式:按ESC进入

      Y,cell切换到Code模式

      M,cell切换到Markdown模式

      A, 在当前cell的上面添加cell

      B,在当前cell的下面添加cell

      双击D:删除当前cell

      Z,回退

      L,为当前cell加上行号 <!--

       Ctrl + Shift +P ,对话框输入命令直接运行

       快速跳转到首个cell,Ctrl+Home

       快速跳转到最后一个cell, Ctrl +END  -->

编辑模式:按Enter进入

       多光标操作:Ctrl键点击鼠标

      回退:Ctrl+Z

      重做:Ctrl+Y

       补全代码:变量、方法后跟Tab键

      为一行或多行代码添加/取消注释:Ctrl+/

      屏蔽自动输出信息:可在最后一条语句之后加一个分号      

 

2、Matplotlib

       Matplotlib就是python的绘图库,库由三层结构组成: 容器层、辅助显示层、图像层,也就是画图的三个步骤。

       1)容器层由画板层Canvas、画布层Figure、绘图区/坐标系Axes组成

       Canvas是位于最底层的系统层,对于使用这来说是接触不到的,在绘图的过程中充当画板的角色,即放置画布(Figure)的工具

      Figure是Canvas上方的第一层,也是需要用户来操做的第一层,在绘图的过程中充当画布的角色。

      Axes是应用层的第二层,在绘图的过程中相当于画布上的绘图区的角色。

               Figure:指整个图形(可以通过plt.figure()设置画布上的绘图区的角色)

               Axes(坐标系):数据的绘图区域

               Axis(坐标轴):坐标系中的一条轴,包含大小限制、刻度和刻度标签

       特点是:

               一个figure(画布)可以包含多个axes(坐标系、绘图区),但是一个axes只能属于一个figure

               一个axes(坐标系、绘图区)可以包含多个axis(坐标轴),包含两个即为2d坐标系,3个即为3d坐标系

       2)辅助显示层

               辅助显示层为Axes(绘图区)内的除了根据数据绘制出的图像以外的内容,主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。

        3)图像层

                 图像层指Axes内通过plot、scatter、bar、histogram、pie等函数根据数据绘制出的图像。

总结:

         Canvas(画板) 位于最底层,用户一般接触不到

         Figure(画布) 建立在Canvas之上

          Axes(绘图区) 建立在Figure之上

          坐标轴(axis)、图例(legend)等辅助显示层以及图像层都是建立在Axes之上

现在开始画图

       matplotlib.pyplot模块    包含了一系列的画图函数,这些函数作用于当前图形的当前坐标系(axes)

 import matplotlib.pyplot as plt

设置画布属性plt.figure, 要绘图的第一步就要创建画布

 plt.figure(figsize=(),dpi=)

       参数: figsize:知道图的长宽  dpi:图像的清晰度 ,返回fig对象,参数也可以不写使用默认值

图片保存

plt.savefig(path)

绘制折线图(plot)

# 1、创建画布
plt.figure(figsize=(20, 8), dpi=80)
# 2、绘制图像
plt.plot([1, 2, 3, 4, 5, 6, 7], [17, 17, 18, 15, 11, 11, 13])
# 保存图像
plt.savefig("test78.png")
# 3、显示图像
plt.show()

注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。

完善折线图

1)添加xy刻度信息、x轴y轴坐标描述、网格显示

plt.xticks(x,**kwargs)  #x:要显示的刻度值
plt.yticks(y,**kwargs)  #y:要显示的刻度值

#x轴y轴 标题
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("温度变化图")

#网格
plt.grid(True,linestyle='--',alpha=0.5)
# 需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度
import random
# 1、准备数据 x y
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
# 2、创建画布
plt.figure(figsize=(20, 8), dpi=80)
# 3、绘制图像
plt.plot(x, y_shanghai)
# 修改x、y刻度
# 准备x的刻度说明
x_label = ["11点{}分".format(i) for i in x]
plt.xticks(x[::5], x_label[::5])
plt.yticks(range(0, 40, 5))
# 添加网格显示
plt.grid(linestyle="--", alpha=0.5)
# 添加描述信息
plt.xlabel("时间变化")
plt.ylabel("温度变化")
plt.title("某城市11点到12点每分钟的温度变化状况")
# 4、显示图
plt.show()

 

 

 

 

 

2)多次plot、显示图例

plt.plot(x, y_shanghai, color="r",  linestyle="-.", label="上海")
plt.plot(x, y_beijing,color="b",label="北京")

#显示图例
plt.legend()

图形设置

图形颜色 风格字符
r红色 -实线
g绿色 --虚线
b蓝色 -.点划线
w白色 :点虚线
c青色 ' '留空、空格
m洋红  
y黄色  
k黑色  

 图例位置

Location string Location Code
'best' 0
'upper right' 1
'upper left' 2
'lower left' 3
'lower right' 4
'right' 5
'center left' 6
plt.legend(loc="lower left")

 

# 需求:再添加一个城市的温度变化
# 收集到北京当天温度变化情况,温度在1度到3度。 
# 1、准备数据 x y
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 3) for i in x]
# 2、创建画布
plt.figure(figsize=(20, 8), dpi=80)
# 3、绘制图像
plt.plot(x, y_shanghai, color="r", linestyle="-.", label="上海")
plt.plot(x, y_beijing, color="b", label="北京")
# 显示图例
plt.legend()
# 修改x、y刻度
# 准备x的刻度说明
x_label = ["11点{}分".format(i) for i in x]
plt.xticks(x[::5], x_label[::5])
plt.yticks(range(0, 40, 5))
# 添加网格显示
plt.grid(linestyle="--", alpha=0.5)
# 添加描述信息
plt.xlabel("时间变化")
plt.ylabel("温度变化")
plt.title("上海、北京11点到12点每分钟的温度变化状况")
# 4、显示图
plt.show()

 

3) 多个坐标系显示 plt.subplots

matplotlib.pyplot.subplots(nrows=1,ncols=1, **fig_kw)

参数:nrows=1,ncols=1  int型 默认为1

设置标题等方法:  set_xticks set_yticks set_xlabel set_ylabel

# 需求:再添加一个城市的温度变化
# 收集到北京当天温度变化情况,温度在1度到3度。 
import random
# 1、准备数据 x y
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
y_beijing = [random.uniform(1, 3) for i in x]
# 2、创建画布
# plt.figure(figsize=(20, 8), dpi=80)
figure, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 8), dpi=80)
# 3、绘制图像
axes[0].plot(x, y_shanghai, color="r", linestyle="-.", label="上海")
axes[1].plot(x, y_beijing, color="b", label="北京")
# 显示图例
axes[0].legend()
axes[1].legend()
# 修改x、y刻度
# 准备x的刻度说明
x_label = ["11点{}分".format(i) for i in x]
axes[0].set_xticks(x[::5])
axes[0].set_xticklabels(x_label)
axes[0].set_yticks(range(0, 40, 5))
axes[1].set_xticks(x[::5])
axes[1].set_xticklabels(x_label)
axes[1].set_yticks(range(0, 40, 5))
# 添加网格显示
axes[0].grid(linestyle="--", alpha=0.5)
axes[1].grid(linestyle="--", alpha=0.5)
# 添加描述信息
axes[0].set_xlabel("时间变化")
axes[0].set_ylabel("温度变化")
axes[0].set_title("上海11点到12点每分钟的温度变化状况")
axes[1].set_xlabel("时间变化")
axes[1].set_ylabel("温度变化")
axes[1].set_title("北京11点到12点每分钟的温度变化状况")
# 4、显示图
plt.show()

 注意:plt函数相当于面向过程的画图方法,axes.set_ 等方法相当于面向对象的画图方法

import numpy as np
# 1、准备x,y数据
x = np.linspace(-1, 1, 1000)
y = 2 * x * x
# 2、创建画布
plt.figure(figsize=(20, 8), dpi=80)
# 3、绘制图像
plt.plot(x, y)
# 添加网格显示
plt.grid(linestyle="--", alpha=0.5)
# 4、显示图像
plt.show()

绘制散点图 (plt.scatter)

# 需求:探究房屋面积和房屋价格的关系
# 1、准备数据
x = [225.98, 247.07, 253.14, 457.85, 241.58, 301.01,  20.67, 288.64,
       163.56, 120.06, 207.83, 342.75, 147.9 ,  53.06, 224.72,  29.51,
        21.61, 483.21, 245.25, 399.25, 343.35]
y = [196.63, 203.88, 210.75, 372.74, 202.41, 247.61,  24.9 , 239.34,
       140.32, 104.15, 176.84, 288.23, 128.79,  49.64, 191.74,  33.1 ,
        30.74, 400.02, 205.35, 330.64, 283.45]
# 2、创建画布
plt.figure(figsize=(20, 8), dpi=80)
# 3、绘制图像
plt.scatter(x, y)
# 4、显示图像
plt.show()

绘制柱状图(plt.bar)

matplotlib.pyplot.bar(x,width,align='center',**kwargs)

参数:align柱状图对齐方式  **kwargs:柱状图的颜色 参数都是可选的

# 1、准备数据
movie_names = ['雷神3:诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴', '降魔传','追捕','七十七天','密战','狂兽','其它']
tickets = [73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]
# 2、创建画布
plt.figure(figsize=(20, 8), dpi=80)
# 3、绘制柱状图
x_ticks = range(len(movie_names))
plt.bar(x_ticks, tickets, color=['b','r','g','y','c','m','y','k','c','g','b'])
# 修改x刻度
plt.xticks(x_ticks, movie_names)
# 添加标题
plt.title("电影票房收入对比")
# 添加网格显示
plt.grid(linestyle="--", alpha=0.5)
# 4、显示图像
plt.show()

# 1、准备数据
movie_name = ['雷神3:诸神黄昏','正义联盟','寻梦环游记']
first_day = [10587.6,10062.5,1275.7]
first_weekend=[36224.9,34479.6,11830]
# 2、创建画布
plt.figure(figsize=(20, 8), dpi=80)
# 3、绘制柱状图
plt.bar(range(3), first_day, width=0.2, label="首日票房")
plt.bar([0.2, 1.2, 2.2], first_weekend, width=0.2, label="首周票房")
# 显示图例
plt.legend()
# 修改刻度
plt.xticks([0.1, 1.1, 2.1], movie_name)
# 4、显示图像
plt.show()

 

绘制直方图

 matplotlib.pyplot.hist(x, bins=None, normed=Node, **kwargs)

绘制直方图首先要设置组距,然后计算组数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值