Python笔记:pandas之数据统计

算术运算和数据对齐

pandas最重要的一个功能是,它可以对不同索引的对象进行算术运算。在将对象相加时,如果存在不同的索引对,则结果的索引就是该索引对的并集。

自动的数据对齐操作在不重叠的索引处引入NaN值,缺失值会在算术运算过程中传播。

对于DataFrame,对齐操作会同时发生在行和列上,将它们相加后将会返回一个新的DataFrame,其索引和列为原来两个DataFrame的并集。

如果DataFrame对象相加,没有共用的列或行标签,结果都会是空。

#算术运算
add, radd                   #加法
sub, rsub                   #减法
div, rdiv                   #除法
floordiv, rfloordiv         #底除
mul, rmul                   #乘法
pow, rpow                   #指数

在算术方法中填充值

在算术方法中设置参数fill_value的值,fill_value会填充到结果的缺失值。

DataFrame和Series之间的运算

默认情况下,DataFrame和Series之间的算术运算会将Series的索引匹配到DataFrame的列,然后沿着行一直向下广播。

如果某个索引值在DataFrame的列或Series的索引中找不到,则参与运算的两个对象就会被重新索引以形成并集。

如果希望匹配行且在列上广播,则必须使用算术运算方法,传入的轴号就是希望匹配的轴。

函数应用和映射

NumPy的ufuncs(元素级数组方法)也可用于操作pandas对象

DataFrame的apply方法可实现将函数应用到由各列或行所形成的一维数组上,由关键字axis进行选择轴

排序与排名

#sort_index,将返回一个已排序的新对象
#将列进行排序,数据默认是按升序排序的,但也可以通过设置关键字ascending=False进行降序排序
frame.sort_index(axis=1, ascending=False)
                    
#sort_values() 按值对Series进行排序
#在排序时,任何缺失值默认都会被放到Series的末尾
#当排序一个DataFrame时,根据一个或多个列中的值进行排序
#按B列的值进行排序
frame.sort_values(by='b')

# 先按a列的值进行排序,如a列中有相同的数据,则按b列进行排序
frame.sort_values(by=['a', 'b'])
                    
#rank()
#为各组分配一个平均排名
#根据值在原数据中出现的顺序给出排名
#设置排序方向与sert_index相同
#具有axis关键字
frame.rank(method='first')

带有重复标签的轴索引

#对于带有重复值的索引,数据选取的行为将会有些不同。如果某个索引对应多个值,则返回一个Series;而对应单个值,则返回一个标量值
#obj.index.is_unqiue 检查它的值是否是唯一的

汇总和计算描述统计

 pandas对象拥有一组常用的数学和统计方法。它们大部分属于约简和汇总统计,用于从Series中提取单个值(如sum或mean)或从DataFrame的行或列中提取一个Series。跟对应的numpy数据方法相比,它们都是基于没有缺失数据的假设而构建的。

#调用DataFrame的sum方法将会返回一个含有列的和的Series
df.sum()

#传入axis='columns'或axis=1将会按行进行求和运算
df.sum(axis=1)

#NA值会自动被排除,除非整个切片(这里指的是行或列)都是NA
#通过skipna选项可以禁用该功能
df.mean(axis='columns', skipna=False)

#约简方法的常用选项
axis        #约简的轴,DataFrame的行用0,列用1
skipna      #排除缺失值,默认值为True
level       #如果轴是层次化索引的(即MultiIndex),则根据level分组约简

#所有与描述统计相关的方法
count               #非NA值的数量
describe            #针对Series或各DataFrame列计算汇总统计
min、max            #计算最小值和最大值
argmin、argmax      #计算最小值和最大值的索引位置(整数)
idxmin、idxmax      #计算最小值和最大值的索引值
quantile            #计算样本的分位数(0到1)
sum                 #值的总和
mean                #值的平均数
median              #值的算术平均数(50%分位数)
mad                 #根据平均值计算平均绝对离差
var                 #样本值的方差
std                 #样本值的标准差
skew                #样本值的偏度(三阶矩)
kurt                #样本值的峰度(四阶矩)
cumsum              #样本值的累计和
cummin、cummax      #样本值的累计最大值和累计最小值
cumprod             #样本值的累计积
diff                #计算一阶差分(对时间序列很有用)
pct_change          #计算百分数变化

唯一值、值计数以及成员资格

#常用方法
unique                  #返回Series中的唯一值数据,按发现的顺序返回
value_counts            #用于计算一个Series中各值出现的频率,按计数值降序排列
isin                    #计算一个表示“Series各值是否包含于传入的值序列中”的布尔型数组
match                   #计算一个数组中的各值到另一个不同值数组的整数索引,对于数据对齐和连接类型的操作十分有用
posted @ 2021-07-08 10:40  游虚子  阅读(1527)  评论(0)    收藏  举报