利用Python进行数据分析——pandas入门(6)

2.3 描述性统计的概述与计算

  pandas对象装配了一个常用数学、统计学方法的集合。

In [134]: df = pd.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'])

In [135]: df
Out[135]:
    one  two
a  1.40  NaN
b  7.10 -4.5
c   NaN  NaN
d  0.75 -1.3

In [136]: df.sum() # 列求和
Out[136]:
one    9.25
two   -5.80
dtype: float64

In [137]: df.sum(axis='columns') # 行求和
Out[137]:
a    1.40
b    2.60
c    0.00
d   -0.55
dtype: float64

In [6]: df.mean(axis='columns') # 除非整个切片上都是NA,否则NA将会被排除
Out[6]:
a    1.40
b    1.30
c     NaN
d   -0.28
dtype: float64

In [6]: df.mean(axis='columns') # 可以通过skipna排除
Out[6]:
a    1.40
b    1.30
c     NaN
d   -0.28
dtype: float64

  还有一类方法既不是归约型方法也不是积累型方法。describe就是其中之一,它一次性产生多个汇总统计:

In [7]: df.describe()
D:\Anaconda3\lib\site-packages\numpy\lib\function_base.py:3834: RuntimeWarning: Invalid value encountered in percentile
  RuntimeWarning)
Out[7]:
            one       two
count  3.000000  2.000000
mean   3.080000 -2.900000
std    3.497027  2.262742
min    0.740000 -4.500000
25%         NaN       NaN
50%         NaN       NaN
75%         NaN       NaN
max    7.100000 -1.300000

In [8]: obj = pd.Series(['a', 'b', 'c', 'd'] * 4)

In [9]: obj
Out[9]:
0     a
1     b
2     c
3     d
4     a
5     b
6     c
7     d
8     a
9     b
10    c
11    d
12    a
13    b
14    c
15    d
dtype: object

In [10]: obj.describe() # 对于非数值型数据,describe产生另一种汇总统计:
Out[10]:
count     16
unique     4
top        c
freq       4
dtype: object

2.3.1 唯一值、计数和成员属性

In [7]: obj = pd.Series(['c', 'd', 'c', 's', 'a', 'a', 'q', 'q'])

In [8]: obj
Out[8]:
0    c
1    d
2    c
3    s
4    a
5    a
6    q
7    q
dtype: object

In [9]: obj.unique()
Out[9]: array(['c', 'd', 's', 'a', 'q'], dtype=object)

In [10]: obj.value_counts()
Out[10]:
a    2
q    2
c    2
s    1
d    1
dtype: int64

  isin执行向量化的成员属性检查,还可以将数据集以SeriesDataFrame一列的形式过滤为数据集的值子集:

In [11]: obj
Out[11]:
0    c
1    d
2    c
3    s
4    a
5    a
6    q
7    q
dtype: object

In [12]: mask = obj.isin(['b', 'c'])

In [13]: mask
Out[13]:
0     True
1    False
2     True
3    False
4    False
5    False
6    False
7    False
dtype: bool

In [14]: obj[mask]
Out[14]:
0    c
2    c
dtype: object

  与isin相关的Index.get_indexer方法,可以提供一个索引数组,这个索引数组可以将可能非唯一值数组转换为另一个唯一值数组:

In [16]: to_match = pd.Series(['c', 'a', 'b', 'b', 'c', 'a'])

In [17]: unique_vals = pd.Series(['c', 'b', 'a'])

In [18]: pd.Index(unique_vals).get_indexer(to_match)
Out[18]: array([0, 2, 1, 1, 0, 2], dtype=int64)

唯一值、计数和集合成员属性方法

利用Python进行数据分析——pandas入门(6)_第1张图片

In [24]: data = pd.DataFrame({'Qu1' : [1,4,3,4,4], 'Qu2' : [2,3,1,2,3], 'Qu3' : [1,5,2,4
    ...: ,4,]})

In [25]: data
Out[25]:
   Qu1  Qu2  Qu3
0    1    2    1
1    4    3    5
2    3    1    2
3    4    2    4
4    4    3    4

In [26]: result = data.apply(pd.value_counts).fillna(0)

In [27]: result
Out[27]:
   Qu1  Qu2  Qu3
1  1.0  1.0  1.0
2  0.0  2.0  1.0
3  1.0  2.0  0.0
4  3.0  0.0  2.0
5  0.0  0.0  1.0


  这里,结果中的行标签是所有列中出现的不同值,数值则是这些不同值在每个列中出现的次数。

你可能感兴趣的:(Python)