NumPy是一个开源的Python科学计算基础库
提供了一个强大的N维数组对象nadrray
广播功能函数(用来在数组之间进行计算)
整合C/C++/Fortran代码的工具
线性代数、傅里叶变换、随机数生成等功能
Numpy是SciPy、Pandas等数据处理或科学计算库的基础
1.N维数组对象:ndarray
数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
设置专门的数组对象,经过优化,可以提升这类应用的运算速度
ndarray是一个多维数组对象,由两部分构成:
实际的数据
描述这些数据的元数据(数据维度、数据类型等)
ndarray数组一般要求所有元素类型相同,数组下标从0开始
np.array()生成一个ndarray数组
np.array()输出成[]形式,元素由空格分割
轴(axis):保存数据的维度
秩(rank):轴的数量
ndarray对象的属性
.ndim 秩,即轴的数量或维度的数量
.shape ndarray对象的尺度,对于矩阵,n行m列
.size ndarray对象元素的个数,相当于.shape中n*m的秩
.dtype ndarray对象的元素类型
.itemsize ndarray对象中每个元素的大小,以字节为单位
ndarray的元素类型
bool 布尔类型,True或False
intc 与C语言中的int类型一致,一般是int32或int64
intp 用于索引的整数,与C语言中ssize_t一致,int32或int64
int8 字节长度的整数,取值:[-128, 127]
int16 16位长度的整数,取值:[-32768, 32767]
int32 32位长度的整数,取值:[-2^31, 2^31-1]
int64 64位长度的整数,取值:[-2^63, 2^63-1]
uint8 8位无符号整数,取值:[0, 255]
uint16 16位无符号整数,取值:[0, 65535]
uint32 32位无符号整数,取值:[0, 2^32-1]
uint64 64位无符号整数,取值:[0, 2^64-1]
float16 16位半精度浮点数:1位符号位,5位指数,10位尾数
float32 32位半精度浮点数:1位符号位,8位指数,23位尾数
float64 64位半精度浮点数:1位符号位,11位指数,52位尾数
complex64 复数类型,实部和虚部都是32位浮点数
complex128 复数类型,实部和虚部都是64位浮点数
ndarray数组的创建方法
(1)从Python中的列表、元组等类型创建ndarray数组
(2)使用NumPy中函数创建ndarray数组,如:arange,ones,zeros等(ones,zeros,eyes生成数组的元素都是浮点数类型,arange生成为整数类型)
np.arange(n) 类似range()函数,返回ndarray类型,元素从0到n-1
np.ones(shape) 根据shape生成一个全1数组,shape是元组类型
np.zeros(shape) 根据shape生成一个全0数组,shape是元组类型
np.full(shape, val) 根据shape生成一个数组,每个元素值都是val
np.eye(n) 创建一个正方的n*n单位矩阵,对角线为1,其余为0
np.ones_like(a) 根据数组a的形状生成一个全1数组
np.zeros_like(a) 根据数组a的形状生成一个全0数组
np.full_like(a, val) 根据数组a的形状生成一个数组,每个元素值都是val
(3)使用NumPy中其他函数创建ndarray数组
np.linspace() 根据起止数据等间距地填充数据,形成数组
a = np.linspace(1, 10, 4, dtype=np.int32) # 1为起始位置,10为终止位置,4表示4个元素
b = np.linspace(1, 10, 4, endpoint=False) # endpoint代表终止元素是否作为最后一个元素
np.concatenate() 将两个或多个数组合并一个新的数组
ndarray数组的变换:对于创建后的ndarray数组,可以对其进行维度变换和元素类型变换
.reshape(shape) 不改变数组元素,返回一个shape形状的数组,原数组不变
.resize(shape) 与.reshape()功能一致,但修改原数组
.swapaxes(ax1, ax2) 将数组n个维度中两个维度进行调换
.flattten() 对数组进行降维,返回折叠后的一维数组,原数组不变
.astype() 创建新的数组(原始数据的一个拷贝),即使两个类型一致
.tolist() ndarray数组向列表的转换
ndarray数组的索引和切片:
一维数组的索引和切片:与Python的列表类似(a[1 : 4 : 2] # 起始编号:终止编号(不含):步长)
多维数组的索引:
a = np.arange(24).reshape((2, 3, 4))
a[1, 2, 3] --> 23
a[0, 1, 2] --> 6
a[-1, -2, -3] -->17
ndarray数组的运算:
数组与标量之间的运算:数组与标量之间的运算作用于数组的每一个元素
NumPy一元函数:(对ndarray中的数据执行元素级运算的函数)
np.abs(x) np.fabs(x) 计算数组各元素的绝对值
np.sqrt(x) 计算数组各元素的平方根
np.square(x) 计算数组各元素的平方
np.log(x) np.log10(x) np.log2(x) 计算数组各元素的自然对数、10底对数和2底对数
np.ceil(x) np.floor(x) 计算数组各元素的ceiling值或floor值
np.rint(x) 计算数组各元素的四舍五入值
np.modf(x) 将数组各元素的小数和整数部分以两个独立数组形式返回
np.cos(x) np.cosh(x)
np.sin(x) np.sinh(x) 计算数组各元素的普通型和双曲型三角函数
np.tan(x) np.tanh(x)
np.exp(x) 计算数组各元素的指数值
np.sign(x) 计算数组各元素的符号值,1(+),0,-1(-)
NumPy二元函数
+ - * / ** 两个数组各元素进行对应计算
np.maximum(x,y) np.fmax() 元素级的最大值/最小值计算
np.minimum(x,y) np.fmin()
np.mod(x,y) 元素级的模运算
np.copysign(x,y) 将数组y中各元素值的符号赋值给数组x对应元素
> < >= <= == != 算数比较,产生布尔型数组
2.CSV文件:(Comma-Separated Value,逗号分隔值)是一种常见的文件格式,用来存储批量数据(只能有效存储一维和二维数组)(np.savetxt()、np.loadtxt()只能有效存取一维和二维数组)
np.savetxt(frame, array, fmt='%.18e', delimiter=None) # 将数据保存为CSV文件
frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件
array:存入文件的数组
fmt:写入文件的格式,例如:%d %.2f %.18e
delimiter:分隔字符串,默认是任何空格
a = np.arange(100).reshape(5, 20)
np.savetxt('a.csv', a, fmt='%d', delimiter=',')
np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False) # 将CSV文件中的数据读入到numpy数组中
frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件
dtype:数据类型,可选
delimiter:分隔字符串,默认是任何空格
unpack:如果True,读入属性将分别写入不同变量
多维数据的存取:
a.tofile(frame, sep='', format='%s')
frame:文件、字符串
sep:数据分隔字符串,如果是空串,写入文件为二进制
format:写入数据的格式
a.fromfile(frame, dtype=float, count=-1, sep='') # 读取时需要知道存入文件时数组的维度和元素类型
frame:文件、字符串
dtype:读取的数据类型
count:读入元素个数,-1表示读入整个文件
sep:数据分隔字符串,如果是空串,写入文件为二进制
NumPy的便捷文件存取:
np.save(fname, array) 或 np.savez(fname, array)
frame:文件名,以.npy为扩展名,压缩扩展名为.npz
array:数组变量
np.load(fname)
frame:文件名,以.npy为扩展名,压缩扩展名为.npz
3.NumPy的随机数函数子库
NumPy的random子库:为数组类型提供随机数的相关功能,若想使用其中的函数,需 np.random.*
rand(d0, d1,……, dn) 根据d0-dn创建随机数数组,浮点数,[0, 1),均匀分布
randn(d0, d1, ……, dn) 根据d0-dn创建随机数数组,标准正态分布
randint(low[,high, shape]) 根据shape创建随机整数或整数数组,范围是[low, high)
seed(s) 随机数种子,s是给定的种子值
shuffle(a) 根据数组a的第1轴进行随排列,改变数组x
permutation(a) 根据数组a的第1轴产生一个新的乱序数组,不改变数组x
choice(a[, size, replace, p]) 从一维数组a中以概率p抽取元素,形成size形状新数组replace表示是否可以重用元素,默认为False
uniform(low, high, size) 产生具有均匀分布的数组,low起始值,high结束值,size形状
normal(loc, scale, size) 产生具有正态分布的数组,loc均值,scale标准差,size形状
poisson(lam, size) 产生具有泊松分布的数组,lam随机事件发生率,size形状
4.NumPy的统计函数
NumPy直接提供的统计类函数,通过使用np.* 来调用
sum(a, axis=None) 根据给定轴axis计算数组a相关元素之和,axis整数或元组
mean(a, axis=None) 根据给定轴axis计算数组a相关元素的期望,axis整数或元组
a = np.arange(15).reshape(3, 5)
np.mean(a, axis=1)
--> array([ 2., 7., 12.])
np.mean(a, axis=0)
--> array([5., 6., 7., 8., 9.])
average(a, axis=None, weights=None) 根据给定轴axis计算数组a相关元素的加权平均值
std(a, axis=None) 根据给定轴axis计算数组a相关元素的标准差
var(a, axis=None) 根据给定轴axis计算数组a相关元素的方差
min(a) max(a) 计算数组a中元素的最小值、最大值
argmin(a) argmax(a) 计算数组a中元素最小值、最大值的降一维后下标
unravel_index(index, shape) 根据shape将一维下标index转换成多维下标
ptp(a) 计算数组a中元素最大值与最小值的差
median(a) 计算数组a中元素的中位数(中值)
5.NumPy的梯度函数
np.gradient(f) 计算数组f中元素的梯度,当f为多维时,返回每个维度梯度(梯度:连续值之间的变化率,即斜率)
a=np.random.randint(0,20,(5))
np.gradient(a)
--> array([ 4. , 5.5, -1.5, -6.5, -3. ])
存在两侧值:(12-15)/2 = -1.5
只有一侧值:(14-13)/1 = 1
当原始数据为多维数据时,会返回n个数组,第一个数组为最外层维度的梯度
PIL库:PIL,Python Image Library
PIL库是一个具有强大图像处理能力的第三方库
from PIL import Image # Image是PIL库中代表一个图像的类(对象)
图像是一个由像素组成的二维矩阵,每个元素是一个RGB值
1.图像的变换:
读入图像后,获得像素RGB值,修改后保存为新的文件
2.图像的手绘效果:
手绘效果的几个特征:(黑吧灰色、边界线条较重、相同或相近色彩趋于白色、略有光源效果)
在对图像进行灰度化的基础上,由立体效果和叠加效果而成,灰度代表了图像的明暗变化,而梯度值表示的是灰度的变化率,所以通过调整像素的梯度值,来进阶改变图片的明暗程度,立体效果则通过添加虚拟深度值
Matplotlib库:数据可视化第三方库(将数据以特定的图形、图像形式展现出来,使得数据更加直观、明了)
matplotlib.pyplot是绘制各类可视化图形的命令字库,相当于快捷方式
import matplotlib.pyplot as plt
plt.savefig('test', dpi=600) # 将输出图形存储为文件,默认为PNG格式,可以通过dpi修改输出质量(每一英寸空间内点的数量,600相当高了已经)
plt.axis([-1, 10, 0, 6])限定了x轴的范围从-1到10,y轴坐标从0到6
pyplot的绘图区域
plt.subplot(nrows, ncols, plot_number)在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域(将绘制区域分割成以第一个参数为横轴数量,第二个参数为纵轴数量的子区域,plot_number指出了当前的绘图区在哪块(编号从1开始))
plt.plot(x, y, format_string, **kwargs)
x:X轴数据,列表或数组,可选
y:Y轴数据,列表或数组
format_string:控制曲线的格式字符串,可选(由颜色字符、风格字符和标记字符组成)
color='green'控制颜色
linestyle='dashed'控制线条风格
marker='o'标记风格
markerfacecolor='blue'控制标记颜色
markersize=20:标记尺寸
……
'b' 蓝色 'y' 黄色
'g' 绿色 'k' 黑色
'r' 红色 'w' 白色
'c' 青绿色 cyan '#008000' RGB某颜色
'm' 洋红色 magenta '0.8' 灰度值字符串
=========================================================================
'-' 实线
'--' 破折线
'-.' 点划线
':' 虚线
'''' 无线条
=========================================================================
'.' 点标记 '1' 下花三角标记 'h' 竖六边形标记
',' 像素标记(极小点) '2' 上花三角标记 'H' 横六边形标记
'o' 实心圈标记 '3' 左花三角标记 '+' 十字标记
'v' 倒三角标记 '4' 右花三角标记 'x' x标记
'^' 上三角标记 's' 实心方形标记 'D' 菱形标记
'>' 右三角标记 'p' 实心五角标记 'd' 瘦菱形标记
'<' 左三角标记 '*' 星型标记 '|' 垂直线标记
**kwargs:第二组或更多(x, y, format_string)(当绘制多条曲线时,各条曲线的X不能省略)
pyplot的中文显示:
pyplot并不默认支持中文显示,需要rcParams修改字体实现(全局字体修改)
'font.family' 用于显示字体的名字
'font.style' 字体风格,正常'normal'或斜体'italic'
'font.size' 字体大小,整数字号或'large'、'x-small'
'SimHei' 中文黑体
'Kaiti' 中文楷体
'LiSu' 中文隶书
'FangSong' 中文仿宋
'YouYuan' 中文幼圆
'STSong' 华文宋体
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family'] = 'SimHei' # 修改字体为黑体(SimHei)
plt.plot([3, 1, 4, 5, 2])
plt.ylabel('纵轴(值)')
plt.savefig('test', dpi=600)
plt.show()
在有中文输出的地方,增加一个属性:fontproperties
plt.xlabel('横轴:时间', fontproperties='SimHei', fontsize=20)
pyplot的文本显示函数
plt.xlabel() 对X轴增加文本标签
plt.ylabel() 对Y轴增加文本标签
plt.title() 对图形整体增加文本标签
plt.text() 对任意位置增加文本
plt.annotate() 在图形中增加带箭头的注解
import matplotlib.pyplot as plt
import numpy as np
a = np.arange(0.0, 5.0, 0.02)
plt.plot(a, np.cos(2 * np.pi * a), 'r--')
plt.xlabel('横轴:时间', fontproperties='SimHei', fontsize=15, color='green')
plt.xlabel('纵轴:振幅', fontproperties='SimHei', fontsize=15)
plt.title(r'正弦波实例$y=cos(2\pi x)$', fontproperties='SimHei', fontsize=25)
plt.text(2, 1, r'$\mu=100$', fontsize=15) # 2表示横坐标,1表示纵坐标
plt.axis([-1, 6, -2, 2])
plt.grid(True)
plt.show()
plt.annotate(s, xy=arrow_crd,xytext=text_crd,arrowprops=dict)
s:要注解的字符串
xy:箭头所在的位置
xytext:文本显示的位置
arrowprops:字典类型,定义了箭头显示的一些属性
plt.annotate(r'$\mu=100$', xy=(2, 1), xytext=(3, 1.5),
arrowprops=dict(facecolor='black', shrink=0.1, width=2)) # shrink:箭头从指的位置到文本位置的两侧留有位置的缩进
pyplot的子绘图区域
plt.subplot2grid():设定网格,选中网格,确定选中行列区域数量,编号从0开始
plt.subplot2grid(GridSpec, CurSpec, colspan=1, rowspan=1)
plt.subplot2grid((3, 3), (1, 0), colspan=2) 将整个绘图分成3*3,(1,0)表示当前被选定的位置,colspan表示列的延伸
import matplotlib.gridspec as gridspec # 进行子区域设计和选定的类
gs = gridspec.GridSpec(3, 3)
ax1 = plt.subplot(gs[0, :])
ax2 = plt.subplot(gs[1, :-1])
ax3 = plt.subplot(gs[1:, -1])
ax4 = plt.subplot(gs[2, 0])
ax5 = plt.subplot(gs[2, 1])
plt.grid(True) # 在图形中加入网格曲线
pyplot的基础图标函数
plt.plot(x, y, fmt, ……) 绘制一个坐标图
plt.boxplot(data, notch, position) 绘制一个箱型图
plt.bar(left, height, width, bottom) 绘制一个条形图
plt.barh(width, bottom, left, height) 绘制一个横向条形图
plt.polar(theta, r) 绘制极坐标图
plt.pie(data, explode) 绘制饼图
plt.psd(x, NFFT=256, pad_to, Fs) 绘制功率谱密度图
plt.specgram(x, NFFT=256, pad_to, F) 绘制谱图
plt.cohere(x, y, NFFT=256, Fs) 绘制X-Y的相关性函数
plt.scatter(x, y) 绘制散点图,其中,x和y长度相同
plt.step(x, y, where) 绘制布阶图
plt.hist(x, bins, normed) 绘制直方图
plt.contour(X, Y, Z, N) 绘制等值图
plt.vlines() 绘制垂直图
plt.stem(x, y, linefmt, markerfmt) 绘制柴火图
plt.plot_date() 绘制数据日期
plt.pie()
import matplotlib.pyplot as plt
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0) # 0.1是将第二块分离突出,0.1表示距离
plt.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=90)#autopct表示中间显示百分数的方式,shadow表示饼图是二维饼图,还是带有阴影效果的,startangle表示饼图起始的角度
plt.axis('equal') # 绘图时x和y方向的尺寸是相等的
plt.show()
plt.hist()
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
mu, sigma = 100, 20 # 均值和标准差
a = np.random.normal(mu, sigma, size=100)
plt.hist(a, 20, normed=1, histtype='stepfilled', facecolor='b', alpha=0.75)#bin=20:直方图的个数normed=1 表示区间内出现的概率 normed=0 表示区间内出现的个数 alpha:尺寸比例
plt.title('Histogram')
plt.show()
plt.polar()
import numpy as np
import matplotlib.pyplot as plt
N = 20 # 绘制极坐标中数据的个数
theta = np.linspace(0.0, 2 * np.pi, N, endpoint=False)
radii = 10 * np.random.rand(N)
width = np.pi / 4 * np.random.rand(N)
ax = plt.subplot(111, projection='polar') # 使用面向对象的方式绘制图形
bars = ax.bar(theta, radii, width=width, bottom=0.0)#theater,radii,width对应polar(left,height,width) left指绘制极坐标中颜色区域从哪开始,heigth从中心点到边缘的长度,width指绘图区域角度范围辐射的范围
for r, bar in zip(radii, bars):
bar.set_facecolor(plt.cm.viridis(r / 10.))
bar.set_alpha(0.5)
plt.show()
使用面向对象的方法绘制散点图
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots() # 将subplots()函数变成对象,fig,ax分别对应函数生成的图标和图标相关的区域
ax.plot(10 * np.random.randn(100), 10 * np.random.randn(100), 'o')
ax.set_title('Simple Scatter')
plt.show()
Pandas库:是Python第三方库,提供高性能易用数据类型和分析工具 import pandas as pd
两个数据类型:Series(相当于一维数据类型), DataFrame(相当于二维到多维的数据类型)
基于上述数据类型的各类操作(基本操作、运算操作、特征类操作、关联类操作)
NumPy Pandas
基础数据类型 扩展数据类型
关注数据的结构表达(数据之间构成的维度) 关注数据的应用表达(如何有效的提取数据,以及对数据进行运算)
维度:数据间的关系 数据与索引间关系
Series类型:由一组数据及与之相关的数据索引组成
import pandas as pd
a = pd.Series([9, 8, 7, 6])
print(a)
0 9 # 0 1 2 3为Pandas为数据自动增加的索引(自动索引)
1 8
2 7
3 6
dtype: int64 # NumPy中数据类型
===============================================================
import pandas as pd
a = pd.Series([9, 8, 7, 6], index=['a', 'b', 'c', 'd']) # 自定义索引(可以省略index=)
print(a)
a 9
b 8
c 7
d 6
dtype: int64
Series类型可以由如下类型创建
Python列表 标量值 Python字典 ndarray 其他函数
从标量值创建(index表达Series类型的尺寸)
import pandas as pd
s = pd.Series(25, index=['a', 'b', 'c']) # 此时不能省略index=
print(s)
a 25
b 25
c 25
dtype: int64
从字典类型创建
import pandas as pd
d = pd.Series({'a':9, 'b':8, 'c':7})
print(d)
a 9
b 8
c 7
dtype: int64
======================================================
import pandas as pd
d = pd.Series({'a':9, 'b':8, 'c':7}, index=['c', 'a', 'b', 'd']) # index从字典中进行选择操作
print(d)
c 7.0
a 9.0
b 8.0
d NaN
dtype: float64
从ndarray类型创建
import pandas as pd
import numpy as np
n = pd.Series(np.arange(5))
print(n)
0 0
1 1
2 2
3 3
4 4
dtype: int32
=========================================================
import pandas as pd
import numpy as np
n = pd.Series(np.arange(5), index=np.arange(9, 4, -1))
print(n)
9 0
8 1
7 2
6 3
5 4
dtype: int32
Series类型的基本操作
Series类型包括index和values两部分
Series类型的操作类似ndarray类型
Series类型的操作类似Python字典类型
Series类型对齐操作:Series + Series 索引值相同的值进行运算,不同的值不进行运算
Series类型的name属性
Series对象和索引都可以有一个名字,存储在属性.name中
Series类型的修改
Series对象可以随时修改并即可生效
DataFrame类型:由共用相同索引的一组列组成
DataFrame是一个表格型的数据类型,每列值类型可以不同
DataFrame既有行索引、也有列索引
DataFrame常用于表达二维数据,但也可以表达多维数据
→ column axis=1
↓ index_0 → data_a data_1 data_w
index index_1 → data_b data_2 data_x
axis=0 index_2 → data_c data_3 …… data_y
index_3 → data_d data_4 data_z
索引 多列数据
DataFrame类型可以由如下类型创建
d.ix['行索引'] 会生成这行的Series
二维ndarray对象
import pandas as pd
import numpy as np
d = pd.DataFrame(np.arange(10).reshape(2, 5))
由一维ndarray、列表、字典、元组或Series构成的字典(字典中的键默认设置为列索引)
dt = {'one':pd.Series([1, 2, 3], index=['a', 'b', 'c']), 'two':pd.Series([9, 8, 7, 6], index=['a', 'b', 'c', 'd'])}
d = pd.DataFrame(dt)
=====================================================================================
d1 = {'one':[1, 2, 3, 4], 'two':[9, 8, 7, 6]}
d = pd.DataFrame(d1, index = ['a', 'b', 'c', 'd'])
Series类型
其他的DataFrame类型
数据类型操作(Series和DataFrame的索引都是Index类型,Index对象是不可修改类型)
改变Series和DataFrame对象
增加或重排:重新索引
.reindex(index=None, columns=None,……)能够改变或重排Series和DataFrame索引
index, columns 新的行列自定义索引
fill_value 重新索引中,用于填充缺失位置的值
method 填充方法,ffill当前值向前填充(缺失位置的值由临近的前面的值填充),bfill向后填充
limit 最大填充量
copy 默认True,生成新对象,False时,新旧相等不赋值
索引类型的常用方法
.append(idx) 连接另一个Index对象,产生新的Index对象
.diff(idx) 计算差集,产生新的Index对象
.intersection(idx) 计算交集
.union(idx) 计算并集
.delete(loc) 删除loc位置处的元素
.insert(loc, e) 在loc位置增加一个元素e
删除:.drop()能够删除Series和DataFrame指定行或列索引(在删除列索引时,后面要加上axis=1,默认为0轴上元素)
数据类型运算
算术运算法则:根据行列索引,补齐后运算,运算默认产生浮点数
补齐时缺项填充NaN(空值)
二维和一维、一维和零维间为广播运算(不同维度间为广播运算,一维Series默认在轴1参与运算,若要想在0轴上运算,需要设定axis=0)
采用+ - * / 符号进行的二元运算产生新的对象
.add(d, **argws) 类型间加法运算,可选参数
.sub(d, **argws) 类型间减法运算,可选参数
.mul(d, **argws) 类型间乘法运算,可选参数
.div(d, **argws) 类型间除法运算,可选参数
比较运算法则:比较运算只能比较相同索引的元素,不进行补齐
二维和一维、一维和零维间为广播运算(默认在1轴)
采用> < >= <= == !=等符号进行的二元运算产生布尔对象
Pandas库的数据排序(NaN统一放到排序末尾)
.sort_index()方法在指定轴上根据索引进行排序,默认升序
.sort_index(axis=0, ascending=True) ascending=True 递增排序
.sort_values()方法在指定轴上根据数值进行排序,默认升序
Series.sort_values(axis=0, ascending=True)
DataFrame.sort_values(by, axis=0, ascending=True) 默认在0轴上排序 by:axis轴上的某个索引或索引列表
Pandas库基本的统计分析函数(适用于Series和DataFrame类型)
.sum() 计算数据的总和,按0轴计算,下同
.count() 非NaN值的数量
.mean() .median() 计算数据的算术平均值、算数中位数
.var() .std() 计算数据的方差、标准差
.min() .max() 计算数据的最小值、最大值
=================================================================
适用于Series类型
.argmin() .argmax() 计算数据最大值、最小值所在位置的索引的位置(自动索引)
.idxmin() .idxmax() 计算数据最大值、最小值所在位置的索引(自定义索引)
====================================================================
.describe() 针对0轴(各列)的统计汇总(适用于Series和DataFrame类型)
Pandas库基本的累计统计分析函数(适用于Series和DataFrame类型)
.cumsum() 依次给出前1、2、……、n个数的和
.cumprod() 依次给出前1、2、……、n个数的积
.cummax() 依次给出前1、2、……、n个数的最大值
.cummin() 依次给出前1、2、……、n个数的最小值
滚动计算(窗口计算)(适用于Series和DataFrame类型)
.rolling(w).sum() 依次计算相邻w个元素的和
.rolling(w).mean() 依次计算相邻w个元素的算术平均值
.rolling(w).var() 依次计算相邻w个元素的方差
.rolling(w).std() 依次计算相邻w个元素的标准差
.rolling(w).min() .max() 依次计算相邻w个元素的最小值和最大值
数据的相关性分析
协方差 > 0,X和Y正相关
协方差 < 0,X和Y负相关
协方差 = 0,X和Y独立无关
Pearson相关系数:
r取值范围[-1, 1]
0.8 ~1.0 极强相关
0.6 ~0.8 强相关
0.4 ~0.6 中等程度相关
0.2 ~0.4 弱相关
0.0 ~0.2 极弱相关或无相关
相关分析函数(适用于Series和DataFrame类型)
.cov() 计算协方差矩阵
.corr() 计算相关系数矩阵,Pearson、Spearman、Kendall等系数