一、numpy库
1.1概述
numpy是一个存储和处理多维数组、矩阵等的库,提供多种关于数组运算的数学函数,可供直接调用。
1.1.1数据类型
numpy的数据类型包括整型、浮点型、复数型、布尔型等。
#在IDLE查询numpy支持的数据类型
from numpy import *
sctypeDict.keys()
1.1.2ndarry对象
ndarry数组必须存放相同类型的元素,且每个元素在内存中都具有相同的存储大小。
与python标准类中一维数组list比较,ndarry对象有N个维度,占用内存空间小,运行速度快
ndarry属性
.T |
转置矩阵 |
.ndim |
数组维数 |
.shape |
数组的维度,属性是行数和列数 |
.size |
数组元素的总数 |
.dtype |
数组元素的类型 |
.itemsize |
数组中每个元素的字节大小 |
1.2安装
1)运行“cmd”命令,进入命令窗口;
2)使用“pip”命令进行安装,在命令窗口输入“pip install numpy”。
1.3应用
1.3.1创建数组
1 array
2arange
#格式
arange([start,]stop[,step,],dtype=None)
a2=np.arange(1,10,2) #创建1~10的奇数数组
a2
array([1, 3, 5, 7, 9]) #运行结果
3zeros(创建全0数组)、ones(创建全1数组)
4logspace(创建等比数列)
5eye(创建对角线全1数组)
6diag(创建可自定义对角线值的数组)
实例
1.3.2数组处理
1切片(与列表类似,其实位置是0~n的索引)
2字符串
#格式
numpy.char.function()
3运算
以下为简单运算实例
4排序和筛选
二、matplotlib库
2.1概述
matplotlib是一个python二维绘图库,以各种硬复制格式和跨平台的交互环境生成出版物质量图。
仅需几行代码即可生成柱状图、功率谱、条形图、误差图、散点图等。
2.2安装
1)运行“cmd”命令,进入命令窗口;
2)使用“pip”命令进行安装,在命令窗口输入“pip install matplotlib”。
2.3Matplotlib库
matplotlib库中的所有内容都是按层次组织;层次结构顶部是matplotlib.pyplot模块提供的matplotlib状态机环境,在这个级别上可以用简单的函数将线、图像、文本等绘图元素添加到当前轴。
pyplot是命令样式函数的集合,可以使matplotlib库像Matlab一样工作。每个pyplot函数可以对图像进行一些更改,如创建图形、在图形中创建绘图区域、在绘图区域绘制一些线、用标签装饰绘图等。
2.4Matplotlib.pyplot的常见函数
常用的基本绘图函数
基本绘图函数
函数 |
描述 |
annotate(s, xy, \*args, \*\*kwargs) |
用文本s注释xy |
axis(\*args, \*\*kwargs) |
获取或设置某些轴属性的方便方法 |
bar(x, height[, width, bottom, align, data]) |
绘制条形图 |
barh(y, width[, height, left, align]) |
绘制水平条形图 |
figure([num, figsize,dpi, facecolor, …]) |
创建新图形 |
hist(x[,bins, range, density, weights, …]) |
绘制柱状图 |
legend(\*args, \*\kwargs) |
在轴上放置图例
|
pie(x[explode, labels, colors, autopct, …]) |
绘制饼图 |
plot(\*args[, scalex, scaley, data]) |
绘制y和x作为直线和/或标记 |
scatter(x, y[, s, c, marker, cmap, norm, …]) |
标记大小和/或颜色不同的y与x散点图
|
show(\*args, \*\*kw) |
显示数字 |
stackplot(x, \*args[, labels, colors, …]) |
绘制堆积面积图 |
subplots([nrow, ncols, sharex, sharey,…]) |
绘制一个图形和一个子图 |
text(x, y, s[, fontdict, withdash]) |
将文本添加到轴 |
title(label[, fontdict, loc, pad]) |
为轴设置标题 |
xlabel(xlabel[, fontdict, labelpad]) |
设置x轴的标签 |
xticks([ticks, labels]) |
获取或设置x轴当前刻度位置和标签 |
ylabel(ylabel[, fontdict, labelpad]) |
设置y轴的标签 |
三、应用举例
3.1条形图
#格式
bar(x, height[, width, bottom, align, data])
#x:比例尺序列
#height:标量或标量序列
#width:宽度,可选项
#bottom:底部,可选项
#align:对齐,可选项
#绘制条形图
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
#设置中文字体,不设置此项,中文不能正确显示
matplotlib.rcParams["font.family"] = "STSong"
matplotlib.rcParams["font.size"] = 12
#定义数组
x = np.arange(1,7)
str1 = ["1月","2月","3月","4月","5月","6月"]
y1 = [126, 143, 120, 114, 118, 84]
y2 = [103, 115, 96, 89, 93, 70]
#加入条形
#条形图bar(x, height[, width, bottom, align, data])
plt.bar(x, y1, 0.3, label="收入", tick_label=str1)
plt.bar(x+0.3, y2, 0.3, label="成本")
#为条形图加上y轴的数值
for a, b in zip(x, y1):
plt.text(a, b+0.03, "%.0f" %b, ha="center", va="bottom", fontsize=10)
for a, b in zip(x, y2):
plt.text(a+0.3, b, "%.0f" %b, ha="center", va="bottom", fontsize=10)
plt.title("月销售情况表(万元)") #设置图表标题
plt.xlabel("月份") #设置x轴标签
plt.ylabel("金额") #设置y轴标签
plt.legend() #显示标签
plt.show() #显示图标
3.2饼状图
#绘制饼图
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams["font.family"] = "STSong"
matplotlib.rcParams["font.size"] = 12
label = "16岁及以下","17-25岁","26-35岁","36-45岁","46-55岁","56岁以上"
size = [10,16,22,20,24,8] #占比,和为100
color = ["LightSalmon","LightSkyBlue","LightYellow",
"CornflowerBlue","MediumVioletRed","DarkViolet"]
explode = (0.1,0.1,0,0,0,0) #设置25岁以下两个扇形的间距为0.1
plt.pie(size,labels=label, explode=explode, colors=color,
autopct="%1.1f%%", shadow=True,startangle=90)
plt.title("某城市人口年龄结构图")
plt.legend(loc=5,fontsize=8,bbox_to_anchor=(1.2,0.9),
borderaxespad=0.1)
plt.show()