Python科学计算库学习总结
20190812_田超凡
1.time模块
常用的一种获取当前时间以及时间格式化的模块,模块名称:time
time模块在Python原生安装中就存在所以不需要进行任何安装操作,直接使用即可。
导入方式: import time
方法 | 注解 |
time.altzone | 返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。 |
time.asctime([tupletime]) | 接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。 |
time.clock( ) | 在UNIX系统上,它返回的是“进程时间”,它是用秒表示的浮点数(时间戳)。而在WINDOWS中,第一次调用,返回的是进程运行的实际时间。而第二次之后包括第三个的调用是自第一次调用以后到现在的运行时间。 |
time.ctime([secs]) | 作用相当于asctime(localtime(secs)),未给参数相当于asctime() |
time.gmtime([secs]) | 接收时间辍(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。 |
time.localtime([secs]) | 接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t |
time.mktime(tupletime) | 接受时间元组并返回时间辍 |
time.sleep(secs) | 推迟调用线程的运行,secs指秒数。 |
time.strftime(fmt[,tupletime]) | 接收以时间元组,并返回指定格式可读字符串表示的当地时间,格式由fmt决定。 |
time.strptime(str,fmt=fmt_str) | 根据fmt的格式把一个时间字符串解析为时间元组,str需要和fmt一一对应,如strptime(‘20 3’,“%d %m”)%d表示一个月第几天,%m表示一年的第几个月 |
time.time( ) | 返回当前时间的时间戳 |
In [1]:
import time; #1.格林威治西部的夏令时地区的偏移秒数 print(time.altzone); #2.当前时间戳 print(time.time()); #3.接受时间元组并返回日期字符串 #返回当前系统时间的时间元祖localtime,返回日期字符串 localtime=time.localtime(time.time()); print(time.asctime(localtime));
-32400 1560517727.8200786 Fri Jun 14 21:08:47 2019
In [38]:
#4.时差(计算相对于首次调用clock的时差) clock_1=time.clock(); print(clock_1); clock_2=time.clock(); print(clock_2); clock_3=time.clock(); print(clock_3); clock_4=time.clock(); print(clock_4);
129.9167088774698 129.916821925841 129.91688063805958 129.91693752691737
In [57]:
#5.若有参数,则参数为时间元祖 #若没有参数,则默认取当前系统时间 #返回日期字符串 sc_time=time.ctime(); print(sc_time);
Tue Apr 9 10:12:41 2019
In [72]:
#6.日期字符串转时间元祖 struct_time_tup=time.strptime("2019-04-09 08:05:02","%Y-%m-%d %H:%M:%S"); print(struct_time_tup); #7.时间元祖转日期字符串 date_str=time.strftime("%Y-%m-%d %H:%M:%S",struct_time_tup); print(date_str);
time.struct_time(tm_year=2019, tm_mon=4, tm_mday=9, tm_hour=8, tm_min=5, tm_sec=2, tm_wday=1, tm_yday=99, tm_isdst=-1) 2019-04-09 08:05:02
In [74]:
#8.时间元祖转换为时间戳 sys_time_million=time.mktime(struct_time_tup); print(sys_time_million);
1554768302.0
In [76]:
#9.时间元祖返回无格式化的日期字符串 timestr_noneformat=time.asctime(struct_time_tup); print(timestr_noneformat);
Tue Apr 9 08:05:02 2019
In [2]:
#10.定时器:推迟X秒后调用 for i in range(1,11): print(i); time.sleep(0.3);
1 2 3 4 5 6 7 8 9 10
import time; #1.将字符串的时间"2017-10-10 23:40:00"转换为时间戳和时间元组 str="2017-10-10 23:40:00"; #时间元祖 struct_timetup=time.strptime(str,"%Y-%m-%d %H:%M:%S"); print(struct_timetup); #时间戳 time_million=time.asctime(struct_timetup); print(time_million);
time.struct_time(tm_year=2017, tm_mon=10, tm_mday=10, tm_hour=23, tm_min=40, tm_sec=0, tm_wday=1, tm_yday=283, tm_isdst=-1) Tue Oct 10 23:40:00 2017
In [29]:
import time; #2.字符串格式更改。如提time = "2017-10-10 23:40:00",想改为 time= "2017/10/10 23:40:00" str="2017-10-10 23:40:00"; time_tup=time.strptime(str,"%Y-%m-%d %H:%M:%S"); time_format_str=time.strftime("%Y/%m/%d %H:%M:%S",time_tup); print(time_format_str);
2017/10/10 23:40:00
In [36]:
#3.将时间戳为1542088432转换为指定格式日期 如:2018-10-10 10:51:45 time_million="1542088432"; time_tup=time.localtime(int(time_million)); time_format_str=time.strftime("%Y-%m-%d %H:%M:%S",time_tup); print(time_format_str);
2018-11-13 13:53:52
In [59]:
#4.获得三天前此时的时间是多少 import datetime; import time; #result_minu计算结果为datetime类型 result_minu=datetime.datetime.now()-datetime.timedelta(days=3); print(type(result_minu)); format_str=result_minu.strftime("%Y-%m-%d %H:%M:%S"); print(format_str);
<class 'datetime.datetime'> 2019-04-06 10:43:55
2.Numpy模块
NumPy模块是Python的一种开源的数值计算扩展,是一个用python实现的科学计算包,主要包括:
一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组,称为ndarray(N-dimensional array object)
用于对整组数据进行快速运算的标准数学函数:ufunc(universal function object)
实用的线性代数、傅里叶变换和随机数生成函数。
NumPy的数组类被称作ndarray。通常被称作数组。注意numpy.array和标准Python库类array.array并不相同,后者只处理一维数组和提供少量功能。
一种由相同类型的元素组成的多维数组,元素数量是事先给定好的
元素的数据类型由dtype(data-type)对象来指定,每个ndarray只有一种dtype类型
ndarray的大小固定,创建好数组后数组大小是不会再发生改变的
可以通过numpy模块中的常用的几个函数进行创建ndarray多维数组对象,主要函数如下:
array函数:接收一个普通的python序列,并将其转换为ndarray
zeros函数:创建指定长度或者形状的全零数组。
ones函数:创建指定长度或者形状的全1数组。
empty函数:创建一个没有任何具体值的数组(准确地说是创建一些未初始化的ndarray多维数组)
arange函数: 类似python的range函数,通过指定开始值、终值和步长来创建一个一维数组,注意:最终创建的数组不包含终值
linspace函数:通过指定开始值、终值和元素个数来创建一个一维数组,数组的数据元素符合等差数列,可以通过endpoint关键字指定是否包含终值,默认包含终值
logspace函数:和linspace函数类似,不过创建的是等比数列数组
使用随机数填充数组,即使用numpy.random中的random()函数来创建0-1之间的随机元素,数组包含的元素数量由参数决定
ndim 数组轴(维度)的个数,轴的个数被称作秩
shape 数组的维度, 例如一个2排3列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性
size 数组元素的总个数,等于shape属性中元组元素的乘积。
dtype 一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准Python类型。不过NumPy提供它自己的数据类型。
创建numpy数组的时候可以通过属性dtype显示指定数据类型,如果不指定的情况下,numpy会自动推断出适合的数据类型,所以一般不需要显示给定数据类型。
数值型dtype的命名方式为:一个类型名称(eg:int、float等),后接一个表示各个元素位长的数字
比如Python的float数据类型(双精度浮点值),需要占用8个字节(64位),因此在NumPy中记为float64
每个数据类型都有一个类型代码,即简写方式
如果需要更改一个已经存在的数组的数据类型,可以通过astype方法进行修改从而得到一个新数组。
numpy基本数据类型
数据类型 | 类型简写 | 说明 |
int_ |
| 默认整形 |
intc |
| 等价于long的整形 |
int8 | i1 | 字节整形,1个字节,范围:[-128,127] |
int16 | i2 | 整形,2个字节,范围:[-32768,32767] |
int32 | i3 | 整形,4个字节,范围:[-2^31, 2^31-1] |
int64 | i4 | 整形,8个字节,范围:[-2^63, 2^63-1] |
uint8 | u1 | 无符号整形, 1个字节, 范围:[0,255] |
uint16 | u2 | 无符号整形, 2个字节, 范围:[0,65535] |
uint32 | u3 | 无符号整形, 1个字节, 范围:[0, 2^32-1] |
uint64 | u4 | 无符号整形, 1个字节, 范围:[0,2^64-1] |
bool_ |
| 以一个字节形成存储的布尔值(True或者False) |
float_ |
| float64简写形式 |
float16 | F2 | 半精度浮点型(2字节):1符号位+5位指数+10位的小数部分 |
float32 | f4或者f | 单精度浮点型(4字节):1符号位+8位指数+23位的小数部分 |
float64 | f8或者d | 双精度浮点型(8字节):1符号位+11位指数+52位的小数部分 |
complex_ | c16 | complex128的简写形式 |
complex64 | c8 | 复数,由两个32位的浮点数来表示 |
complex128 | c16 | 复数,由两个64位的浮点数来表示 |
object | O | Python对象类型 |
String_ | S | 固定长度的字符串类型(每个字符1个字节),比如:要创建一个长度为8的字符串,应该使用S8 |
对于一个已经存在的ndarray数组对象而言,可以通过修改形状相关的参数/方法从而改变数组的形状。
直接修改数组ndarray的shape值, 要求修改后乘积不变。
直接使用reshape函数创建一个改变尺寸的新数组,原数组的shape保持不变,但是新数组和原数组共享一个内存空间,也就是修改任何一个数组中的值都会对另外一个产生影响,另外要求新数组的元素个数和原数组一致(还可以降维操作)。
当指定某一个轴为-1的时候,表示将根据数组元素的数量自动计算该轴的长度值。
数组不用循环即可对每个元素执行批量的算术运算操作,这个过程叫做矢量化,即用数组表达式代替循环的做法。
矢量化数组运算性能比纯Python方式快上一两个数据级。
大小相等的两个数组之间的任何算术运算都会将其运算应用到元素级上的操作。
元素级操作:在NumPy中,大小相等的数组之间的运算,为元素级运算,即只用于位置相同的元素之间,所得的运算结果组成一个新的数组,运算结果的位置跟操作数位置相同。
矩阵:多维数组即矩阵
矩阵积(matrix product):两个二维矩阵(行和列的矩阵)满足第一个矩阵的列数与第二个矩阵的行数相同,那么可以进行矩阵的乘法,即矩阵积,矩阵积不是元素级的运算。也称为点积、数量积。
数组转置是指将shape进行重置操作,并将其值重置为原始shape元组的倒置,比如原始的shape值为:(2,3,4),那么转置后的新元组的shape的值为: (4,3,2)
对于二维数组而言(矩阵)数组的转置其实就是矩阵的转置
可以通过调用数组的transpose函数或者T属性进行数组转置操作
数组拉伸np.tile(A,rep)函数可以将数组A进行拉伸,沿着A的维度重复rep次
对于ndarray数组而言,多个数组可以执行合并操作,合并的方式有多种。
Stack(arrays,axis=0):沿着新的轴加入一系列数组
vstack():堆栈数组垂直顺序(行)
hstack():堆栈数组水平顺序(列)。
ufunc:numpy模块中对ndarray中数据进行快速元素级运算的函数,也可以看做是简单的函数(接受一个或多个标量值,并产生一个或多个标量值)的矢量化包装器。主要包括一元函数和二元函数
一元ufunc | 描述 | 调用方式 |
abs, fabs | 计算整数、浮点数或者复数的绝对值,对于非复数,可以使用更快的fabs | np.abs(arr) np.fabs(arr) |
sqrt | 计算各个元素的平方根,相当于arr ** 0.5, 要求arr的每个元素必须是非负数 | np.sqrt(arr) |
square | 计算各个元素的平方,相当于arr ** 2 | np.square(arr) |
exp | 计算各个元素的指数e的x次方 | np.exp(arr) |
log、log10、log2 | 分别计算自然对数、底数为10的log、底数为2的log;要求arr中的每个元素必须为正数(np.log(arr)/np.log(x)) | np.log(arr) np.log10(arr) np.log2(arr) |
sign | 计算各个元素的正负号: 1 正数,0:零,-1:负数 | np.sign(arr) |
ceil | 计算各个元素的ceiling值,即大于等于该值的最小整数 | np.ceil(arr) |
floor | 计算各个元素的floor值,即小于等于该值的最大整数 | np.floor(arr) |
rint | 将各个元素值四舍五入到最接近的整数,保留dtype的类型 | np.rint(arr) |
一元ufunc | 描述 | 调用方式 |
modf | 将数组中元素的小数位和整数位以两部分独立数组的形式返回 | np.modf(arr) |
isnan | 返回一个表示“那些值是NaN(不是一个数字)”的布尔类型数组 | np.isnan(arr) |
isfinite、isinf | 分别一个表示”那些元素是有穷的(非inf、非NaN)”或者“那些元素是无穷的”的布尔型数组 | np.isfinite(arr) np.isinf(arr) |
cos、cosh、sin、sinh、tan、tanh | 普通以及双曲型三角函数 | np.cos(arr) np.sin(arr) np.tan(arr) |
arccos、arccosh、arcsin、arcsinh、arctan、arctanh | 反三角函数 | np.arccos(arr) np.arcsin(arr) np.arctan(arr) |
二元ufunc | 描述 | 调用方式 |
mod | 元素级的求模计算(除法取余) | np.mod(arr1,arr2) |
dot | 求两个数组的点积 | np.dot(arr1,arr2) |
greater、greater_equal、less、less_equal、equal、not_equal | 执行元素级别的比较运算,最终返回一个布尔型数组 | np.greater(arr1, arr2) np.less(arr1, arr2) np.equal(arr1, arr2) |
logical_and、logical_or、logical_xor | 执行元素级别的布尔逻辑运算,相当于中缀运算符&、|、^ | np.logical_and(arr1,arr2) np.logical_or(arr1,arr2) np.logical_xor(arr1,arr2) |
power | 求解对数组中的每个元素进行给定次数的指数值,类似于: arr ** 3 | np.power(arr, 3) |
聚合函数是对一组值(eg一个数组)进行操作,返回一个单一值作为结果的函数。当然聚合函数也可以指定对某个具体的轴进行数据聚合操作;常见的聚合操作有:平均值、最大值、最小值、总体标准偏差等等
3.Pandas
pandas是一种Python数据分析的利器,是一个开源的数据分析包,最初是应用于金融数据分析工具而开发出来的,因此pandas为时间序列分析提供了很好的支持。pandas是PyData项目的一部分。
Python版本要求:2.7、3.4、3.5、3.6
依赖Python库:setuptools、NumPy、python-dateutil、pytz
pandas中主要有两种数据结构,分别是:Series和DataFrame。
Series:一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series对象。注意:Series中的索引值是可以重复的。
DataFrame:一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。
Series获取多个值的方式类似NumPy中的ndarray的切片操作,通过方括号+下标值([x]) /索引值+冒号(:)的形式截取series对象中的一部分
Series值的获取主要有两种方式:
通过方括号+索引([x])的方式读取对应索引的数据,可回多条数据(重复idx)
通过方括号+下标值的方式读取对应下标值的数据,下标值的取值范围为:[0,len(Series.values));另外下标值也可以是负数,表示从右往左获取数据
NumPy中的数组运算,在Series中都保留了,均可以使用,并且Series进行数组运算的时候,索引与值之间的映射关系不会发生改变。
注意:其实在操作Series的时候,基本上可以把Series看成NumPy中的ndarray数组来进行操作。ndarray数组的绝大多数操作都可以应用到Series上。
当多个series对象之间进行运算的时候,如果不同series之间具有不同的索引值,那么运算会自动对齐相同索引值的数据,如果某个series没有某个索引值,那么最终结果会赋值为NaN。
不管是Series还是DataFrame对象,都有索引对象。
索引对象负责管理轴标签和其它元数据(eg:轴名称等等)
通过索引可以从Series、DataFrame中获取值或者对某个索引值进行重新赋值
Series或者DataFrame的自动对齐功能是通过索引实现的
可以直接通过列索引获取指定列的数据, eg: df[column_name]
如果需要获取指定行的数据的话,需要通过ix方法来获取对应行索引的行数据,eg: df.ix[index_name] loc、iloc【0-9】
Pandas基本功能:
数据文件读取/文本数据读取与文本存储
索引、选取和数据过滤
算法运算和数据对齐
函数的应用
层次索引
排序
时间序列
数据合并
分组聚合
数据透视
通过pandas提供的read_xxx相关的函数可以读取文件中的数据,并形成DataFrame,常用的数据读取方法为:read_csv,主要可以读取文本类型的数据
通过DataFrame的相关方式可以获取对应的列或者数据形成一个新的DataFrame, 方便后续进行统计计算。
对于DataFrame/Series中的NaN一般采取的方式为删除对应的列/行或者填充一个默认值
Pandas常用数学统计方法:
方法 | 说明 |
count | 计算非NA值的数量 |
describe | 针对Series或各DataFrame列计算总统计值 |
min/max | 计算最大值、最小值 |
idxmin、idxmax | 计算能够获取到最小值和最大值的索引位置(index整数) |
quantile | 计算样本的分位数(0到1) |
sum | 值的总和 |
mean | 值的平均数 |
median | 值的中位数 |
方法 | 说明 |
mad | 根据平均值计算平均绝对距离差 |
var | 样本数值的方差 |
std | 样本标准偏差 |
cumsum | 样本值的累计和 |
cummin、cummax | 样本的累计最小值、最大值 |
cumprod | 样本值的累计积 |
pct_change | 计算百分数变化 |
相关系数(Correlation coefficient):反映两个样本/样本之间的相互关系以及之间的相关程度。在COV的基础上进行了无量纲化操作,也就是进行了标准化操作。
协方差(Covariance, COV):反映两个样本/变量之间的相互关系以及之间的相关程度。如果有X,Y两个变量,每个时刻的“X值与其均值之差”乘以“Y值与其均值之差”得到一个乘积,再对这每时刻的乘积求和并求出均值。如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高。
相关系数:corr()
就是用X、Y的协方差除以X的标准差和Y的标准差。所以,相关系数也可以看成协方差:一种剔除了两个变量量纲影响、标准化后的特殊协方差。
1.也可以反映两个变量变化时是同向还是反向,如果同向变化为正,反向变化为负
2.由于它是标准化后的协方差,因此更重的特性是,它消除了两个变量变化幅度的影响,而只是单纯反应两个变量单位变化的相似程度。
注意:相关系数不像协方差一样可以在+\infty 到-\infty 间变化,它只能在+1到-1之间变化
当相关系数为1的时候两者相识度最大,同向正相关
当相关系数为0的时候两者没有任何相似度,两个变量无关
当相关系数为-1的时候两者变化的反向相似度最大,完全反向负相关
unique方法用于获取Series中的唯一值数组(去重数据后的数组)
value_counts()返回得到每个值出现的个数,次序按照出现的频率由高到低排序.
isin()用于判断矢量化集合的成员资格[1,2],可用于选取Series中或者DataFrame中列中数据的子集,得到布尔索引.
在某一个方向拥有多个(两个及两个以上)索引级别
通过层次化索引,pandas能够以较低维度形式处理高纬度的数据
通过层次化索引,可以按照层次统计数据
层次索引包括Series层次索引和DataFrame层次索引
sort_index 对行或列索引进行排序。
Series 的 sort_index(ascending=True) 方法可以对 index 进行排序操作,ascending 参数用于控制升序或降序,默认为升序。
在 DataFrame 上,.sort_index(axis=0, ascending=True) 方法多了一个轴向的选择参数
排名(ranking ) 跟排序关系密切, 且它会增设一个排名值(从1开始, 一直到数组中有效数据的数量)。
默认情况下, rank是通过”为各组分配一个平均排名“的方式破坏平级关系的。
在pandas中有一个非常常用的函数date_range,尤其是在处理时间序列数据时,这个函数的作用就是产生一个DatetimeIndex,就是时间序列数据的索引
pandas.merge 可根据一个或多个键将不同 DataFrame 中的行连接起来。
pandas.concat 可以沿着一条轴将多个对象堆叠到一起
groupby 对DataFrame进行数据分组,传入列名列表或者Series序列对象,返回生成一个GroupBy对象。它实际上还没有进行任何计算。
GroupBy对象是一个迭代对象,每次迭代结果是一个元组。
元组的第一个元素是该组的名称(就是groupby的列的元素名称)。
第二个元素是该组的具体信息,是一个数据框。
索引是以前的数据框的总索引。
apply 是 pandas 库的一个很重要的函数,多和 groupby 函数一起用,也可以直接用于 DataFrame 和 Series 对象。主要用于数据聚合运算,可以很方便的对分组进行现有的运算和自定义的运算。
数据透视表pivot_table,根据一个或多个键中的值进行聚合,并根据行列上的分组键将数据分配到各个矩形区域中。
DataFrame.pivot_table(data, values=None, index=None, columns=None, aggfunc=’mean’)
data: DataFrame对象
values: 显示的列的名字,可以应用aggfunc中的函数
index: 索引
columns: 可选的, 通过额外的方法来分割你所关心的实际值,然而aggfunc被应用到values上, aggfunc默认的是mean
4.matplotlib
Python最常用的绘图库,提供了一整套十分适合交互式绘图的命令API,比较方便的就可以将其嵌入到GUI应用程序中。
figure:图形,matplotlib中的所有图像都是位于figure对象中,一个图像只能有一个figure对象。matplotlib 的 figure 就是一个 单独的 figure 小窗口, 小窗口里面还可以有更多的小图片.
语法:plot(x,y,color='red', linestyle='dashed', marker='o'.....)
绘图中用到的直线属性包括:
(1)LineStyle:线形
(2)LineWidth:线宽
(3)Color:颜色
(4)Marker:标记点的形状
(5)label:用于图例的标签
legend ():生成默认图例, matplotlib 中的 legend 图例就是为了帮我们展示出每个数据对应的图像名称. 更好的让读者认识到你的数据结构.
xlabel、ylabel:设置X轴Y轴标签
title:设置标题
xlim、ylim:控制图标的范围
xticks、yticks: 控制图标的刻度
gca获取当前坐标轴信息。使用spines设置边框,使用set_color设置边框颜色:默认白色
Subplot:子图,figure对象下创建一个或多个subplot对象(即axes)用于绘制图像。
语法:subplot(numRows, numCols, plotNum)
面向对象的形式:
fig = plt.figure()
Figure实例
可以添加Axes实例
ax = fig.add_subplot(111)
返回Axes实例
参数1,子图的总行数
参数2,子图的总列数
参数3,子图位置
在Figure上添加子图的常用方法
柱状图语法:
matplotlib.pyplot. bar (*args, **kwargs)
bar(left, height, width, bottom, * args, align='center', **kwargs)
参数: left:数据标量 height:高 width:款 bottom:底端对应Y轴align:对齐如果为 "居中", 则将x参数解释为条形中心的坐标。如果 "边缘", 将条形按其左边缘对齐要对齐右边缘的条形图, 可传递负的宽度和对align='edge'
直方图语法:
matplotlib.pyplot.hist(
x,bins=10,range=None,normed=False,weights=None,cumulative=False,
histtype='bar', align='mid',orientation=u'vertical', log=False,color=None, label=None,stacked=False,hold=None,**kwargs)
– x: 一个列表或者多个列表(表示不同数据集,长度可以不一致)
– range: 元组
– weights: x里每个元素对bin高度的贡献(默认为1)
– histtype: ['bar' | 'barstacked' | 'step' | 'stepfilled']
– align: ['left' | 'mid' | 'right']
– orientation: ['horizontal' | 'vertical']
– color: 一种颜色或者颜色列表(针对不同数据集)
散点图语法:
matplotlib.pyplot. scatter (x, y, s=none, c=none, marker=none, cmap= None,
norm=none, vmin=none, vmax=none, alpha=none, Linewidths=none,
verts=none, edgecolors=none, hold=none, data= None, **kwargs)
参数:
x,y:相同长度的数组序列
s :散点的大小标量或形同数组,可选参数,默认20
c :散点的色彩或颜色序列,可选
maker:标记风格,可选,默认是‘o’
alpha:散点的透明度
饼图语法:
matplotlib.pyplot. pie(x, explode=None, labels=None, colors=('b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'), autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None, counterclock=True, wedgeprops=None, textprops=None, center = (0, 0), frame = False )
参数:
x (每一块)的比例(numpy.array)
explode [每一块]离开中心距离
labels [每一块]饼图外侧显示的说明文字
startangle 起始绘制角度,默认图是从x轴正方向逆时针画起,如设定=90则从y轴正方向画起
shadow 是否阴影
labeldistance label绘制位置,相对于半径的比例, 如<1则绘制在饼图内侧
autopct 控制饼图内百分比设置,可以使用format字符串或者format function
'%.2f%%'指小数点后位数
pctdistance 类似于labeldistance,指定autopct的位置刻度
radius 控制饼图半径