数据分析框架Pandas进阶

广播运算

多维数据和一维数据进行运算称为广播,会自动按标签匹配对每个元素执行运算。

In [13]: frm
Out[13]:
   0  1  2
a  0  1  2
b  3  4  5
c  6  7  8
In [16]: sr2 = Series([3,2,4],index = range(3))

In [17]: frm + sr2
Out[17]:
   0  1   2
a  3  3   6
b  6  6   9
c  9  9  12

如果有不能匹配的标签,值均为NaN

In [18]: sr3 = Series([3,2,4],index =[0,2,3])

In [19]: frm + sr3
Out[19]:
     0   1     2   3
a  3.0 NaN   4.0 NaN
b  6.0 NaN   7.0 NaN
c  9.0 NaN  10.0 NaN

如果要在行上做广播,需要调用方法,并指定axis。这些运算都是在副本上进行,不会影响原始数据。

In [20]: sr4 = Series([3,2,4],index = list('abc'))
In [23]: frm.add(sr4,axis = 0)
Out[23]:
    0   1   2
a   3   4   5
b   5   6   7
c  10  11  12

使用函数

apply函数对每一列(或行)执行指定函数
applymap对每各元素执行操作

排序

sort_index可以按索引字典序排序,可以传入参数axis表示维度,ascending表示方向(True,False)
order按值排序,排序时NaN会被放到末尾
按某列值排序,使用sort_index(by = 指定列标签)

rank返回各元素在排好序后的位置,对于相等的元素,默认返回这些元素位置的平均数

In [7]: sr = Series([1,1,2,2,3])

In [8]: sr.rank()
Out[8]:
0    1.5
1    1.5
2    3.5
3    3.5
4    5.0
dtype: float64

可以使用method关键字使相等元素不返回相同rank,如min,max,first等

In [10]: sr.rank(method = 'first') Out[10]:
0    1.0
1    2.0
2    3.0
3    4.0
4    5.0
dtype: float64

汇总和计算统计

pandas提供sum,mean等多种统计方法。默认作用于每一列上,若要作用于行上需要指定axis。默认NA的值会自动排除,如果要考虑NA的值,可以设skipna = False
参数:axis,skipna

可使用的方法:
count 非NA值数量
describe 全面信息
min,max
argmin,argmax,(索引)
quantile 计算分位数
sum,mean,median
mad 平均绝对离差
var
std
skew 偏度http://baike.baidu.com/view/1216514.htm
kurt 峰度

偏度和峰度的关系:http://blog.sciencenet.cn/blog-1148346-786610.html
cumsum累积和
cummin,cummax
cumprod
diff 一阶差分http://baike.baidu.com/view/3747559.htm
pct_change 百分数变化y(i) = (x(i)-x(i-1))/x(i)

你可能感兴趣的:(数据分析)