汇总和计算描述统计
学习Pandas就像是学习SQL,虽然他们并没有什么直接的关系,但无论先学习哪一种,都会对另一种产生有益的作用,Pandas对象拥有一组常用的数学和统计方法,正如sql语句中的分组与聚合函数。Pandas中的大部分都属于约简和汇总统计,用于从Series中提取单个值或者从DataFrame的行或列中提取一个Series。跟对应的NumPy数值方法相比,它们都是基于没有缺失数据的假设而构建的。
- 调用DataFrame的Sum方法将会返回一个含有列小计的Series
- 传入axis=1将会按行进行求和运算
- NA值会自动被排除,除非整个切片(这里指的是行或列)都是NA。通过skipna选项可以禁用该功能
约简方法的选项(参数)
选项 | 说明 |
---|---|
axis | 约简的轴。DataFrame的行用0,列用1 |
skipna | 排除缺失值,默认值为True |
level | 如果轴是层次化索引的(即MultiIndex),则根据level分组约简 |
有些方法(如idxmin和idxmax)返回的是间接统计(比如达到最小值或最大值的索引),另一些方法(如cumsum)则是累计性的,但是还有特殊的describe,它用于一次性产生多个汇总统计,对于非数值型数据,describe会产生另外一种汇总统计
描述和汇总统计的方法
方法 | 说明 |
---|---|
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 | 计算百分数变化 |
相关系数与协方差
有些汇总统计(如相关系数和协方差)是通过参数对计算出来的。
Series的corr方法用于计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数。与此类似的cov用于计算协方差
DataFrame的corr和cov方法将以DataFrame的形式返回完整的相关系数或协方差矩阵;
利用DataFrame的corrwith放法,你可以计算其列或行跟另一个Series或DataFrame之间的相关系数。传入一个Series将会返回一个相关系数值Series(针对各列进行计算),传入一个DataFrame则会计算按列名匹配的相关系数,传入axis=1即可按行进行计算。无论如何,在计算相关系数之前,所有的数据项都会按标签对齐。
唯一值、值计数以及成员资格
- unique函数可以得到Series中的唯一值数组,返回的唯一值是未经过排序的,如果需要的话,可以对结果再次进行排序(uniques.sort())。
- value_counts函数用于计算一个Series中各值出现非的频率,为了便于查看,结果Series是按值频率降序排序的。value_counts还是一个顶级pandas方法,可用于任何数组或序列
- 最后是isin,它用于判断矢量化集合的成员资格,可用于选取Series中或DataFrame列中数据的子集
方法 | 说明 |
---|---|
isin | 计算一个表示“Series各值是否包含于传入的值序列中”的布尔型数组 |
unique | 计算Series中的唯一值数组,按发现的顺序返回 |
value_counts | 返回一个Series,让其索引为唯一值,其值为频率,按计数值降序排列 |