描述性统计的概述与计算
pandas对象装配了一个常用数学。统计学方法的集合。以以下这个简单的DataFrame为例:
import pandas as pd
import numpy as np
df = pd.DataFrame([[1.4,np.nan],[7.1,4.5],
[np.nan,np.nan],[0.75,-1.3]],
index = list('abcd'),
columns=['one','tow'])
# one tow
# a 1.40 NaN
# b 7.10 4.5
# c NaN NaN
# d 0.75 -1.3
使用sum方法可以求得行上的加和,以Series的形式返回:
df.sum()
# one 9.25
# tow 3.20
# dtype: float64
如果我们在列上求和,可以加入axis参数:
df.sum(axis = 1)
# a 1.40
# b 11.60
# c 0.00
# d -0.55
# dtype: float64
NaN是被自动排除的。可以将skipna的值指定为False来选择不跳过NaN,即只要有一个NaN,那么结果就为NaN:
df.sum(axis = 1,skipna = False)
# a NaN
# b 11.60
# c NaN
# d -0.55
# dtype: float64
idxmax和idxmin方法可以得到每行或者每列最大值或者最小值的索引:
df.idxmax(axis = 1)
# a one
# b one
# c NaN
# d one
describe方法可以产生多个数值统计量:
df.describe(())
# one tow
# count 3.000000 2.000000
# mean 3.083333 1.600000
# std 3.493685 4.101219
# min 0.750000 -1.300000
# 50% 1.400000 1.600000
# max 7.100000 4.500000
常见的描述性统计和汇总统计方法:
方法 | 描述 |
---|---|
count | 非NA值的个数 |
describe | 计算Series或者DataFrame各列的汇总统计集合 |
min,max | 计算最小值,最大值 |
argmin,argmax | 分别计算最小值、最大值所在的索引位置(整数) |
idxmin,idxmax | 分别计算最小值或者最大值所在的索引标签 |
quantile | 计算样本的从0到1的分位数 |
sum | 加和 |
mean | 均值 |
median | 中位数 |
mad | 平均值的平均绝对偏差 |
prod | 所有值的积 |
var | 值的样本方差 |
std | 值的样本标准差 |
skew | 样本刻度(第三时刻)值 |
kurt | 样本峰度(第四时刻)值 |
cumsum | 累计值 |
cumin,cummax | 累计值的最大值和最小值 |
cumpord | 值的累积积 |
diff | 计算第一个算数差值(对时间序列有用) |
pct_change | 计算百分比 |
有一类方法可以从Series包含的数值中提取信息,首先考虑以下Series对象:
obj = pd.Series(list('cadaabbcc'))
# 0 c
# 1 a
# 2 d
# 3 a
# 4 a
# 5 b
# 6 b
# 7 c
# 8 c
# dtype: object
首先是unique方法,它可以给出对象中的所有值(唯一的),但是并不一定按顺序给出::
uniques = obj.unique()
# ['c' 'a' 'd' 'b']
value_counts()方法可以计算Series中某个值出现的个数:
obj.value_counts()
# a 3
# c 3
# b 2
# d 1
# dtype: int64
该方法默认会按照数量从多到少排列,也可以添加sort = False取消排列。
isin指定向量化的成员检测,即逐个判断元素是否是给定的集合中的一员,以此配合布尔值索引可以进行数值集的过滤:
obj.isin(['b','c'])
# 0 True
# 1 False
# 2 False
# 3 False
# 4 False
# 5 True
# 6 True
# 7 True
# 8 True
# dtype: bool
obj[obj.isin(['b','c'])]
# 0 c
# 5 b
# 6 b
# 7 c
# 8 c
# dtype: object
唯一值、计数和集合成员属性方法见下表:
方法 | 描述 |
---|---|
isin | 计算表征Series中每个值是否包含于传入序列的布尔值数组 |
match | 计算数组中每个值的整数索引,形成一个唯一值数组,有助于数据对其和join类型的操作 |
unique | 计算Series值中的唯一值数组,按照观察顺序返回 |
value_counts | 返回一个Series,索引是唯一值序列,值是奇数个数,按照个数降序排序 |