pandas(三)

作者: 红炉点雪hi | 来源:发表于2017-09-14 14:09 被阅读58次
  • 汇总和计算描述统计

调用DataFrame的sum方法将会返回一个含有列小计的Series:

df = DataFrame([[1.4,np.nan],[7.1,-4.5],
                [np.nan,np.nan],[0.75,-1.3]],
               index=['a','b','c','d'],
               columns=['one','two'])
print df.sum()
'''
输出结果是:
one    9.25
two   -5.80
dtype: float64
'''

传入axis=1将会按行进行求和运算:

print df.sum(axis = 1)
'''
输出结果为:
a    1.40
b    2.60
c     NaN
d   -0.55
dtype: float64
'''

NA值将会自动被排除(除非整个切片都是NA),通过skipna选项可以禁用该功能:

print df.sum(axis = 1,skipna=False)
'''
输出结果为:
a     NaN
b    2.60
c     NaN
d   -0.55
dtype: float64
'''

类似的方法还有mean
这类方法常用参数如下:

常用参数.png

还存在一些方法是间接统计,比如返回最大值和最小值的索引(idxmax和idxmin)

print df.idxmax()
print '--------------------'
print df.cumsum() #上下累加,这是一种累计型方法
'''
输出结果如下:
one    b
two    d
dtype: object
--------------------
    one  two
a  1.40  NaN
b  8.50 -4.5
c   NaN  NaN
d  9.25 -5.8
'''

DataFrame中存在一种既不是简约型也不是累计型的方法,比如describe,它可以用于一次性产生多个汇总统计:

print df.describe()
'''
输出结果为:
            one       two
count  3.000000  2.000000
mean   3.083333 -2.900000
std    3.493685  2.262742
min    0.750000 -4.500000
25%    1.075000 -3.700000
50%    1.400000 -2.900000
75%    4.250000 -2.100000
max    7.100000 -1.300000
'''

以下是pandas中常用的描述和汇总统计的方法:

方法图1.png 方法图2.png
  • 唯一值、值计数以及成员资格

第一个函数是unique,它可以得到Series中唯一值数组:

obj= Series(['c','a','d','d','a','c','v','t','t','c'])
uniques = obj.unique()
print uniques
'''
输出结果为:
['c' 'a' 'd' 'v' 't']
'''

这种方式返回的是没有经过排序的,如果需要的话可以使用uniques.sort()方法返回排序的数组。
values_counts用于计算一个Series中各值出现的频率:

print obj.value_counts()
'''
返回结果为:
c    3
d    2
t    2
a    2
v    1
dtype: int64
'''

value_counts还是一个顶级pandas方法,可用于任何数组或序列:

print pd.value_counts(obj.values,sort=False)

最后是isin,它用于判断适量话集合的成员资格,可用于选取Series中或DataFrame列中数据的子集:

mask = obj.isin(['a','c'])
print obj[mask]
'''
输出结果为:
0    c
1    a
4    a
5    c
9    c
dtype: object
'''

以下是常用方发表:

常用方法表.png

得到每一个元素在每一列中出现的次数:

data = DataFrame({'Qu1':[1, 3, 4, 3, 4],
                  'Qu2':[2,3,1,2,3],
                  'Qu3':[1,5,2,4,4]})
print data.apply(pd.value_counts).fillna(0)
'''
输出结果为:
   Qu1  Qu2  Qu3
1  1.0  1.0  1.0
2  0.0  2.0  1.0
3  2.0  2.0  0.0
4  2.0  0.0  2.0
5  0.0  0.0  1.0
'''

相关文章

网友评论

    本文标题:pandas(三)

    本文链接:https://www.haomeiwen.com/subject/oocdsxtx.html