从一维 Series 包含的数值中提取信息
In [11]: obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c'])
In [12]: uniques = obj.unique()
In [13]: uniques
Out[13]: array(['c', 'a', 'd', 'b'], dtype=object)
value_counts 计算 Series 包含的值的个数
In [14]: obj.value_counts()
Out[14]:
a 3
c 3
b 2
d 1
dtype: int64
降序排列
In [16]: pd.value_counts(obj.values, sort=False)
Out[16]:
d 1
c 3
a 3
b 2
dtype: int64
isin 执行向量化成员属性检查
In [17]: obj
Out[17]:
0 c
1 a
2 d
3 a
4 a
5 b
6 b
7 c
8 c
dtype: object
In [18]: mask = obj.isin(['b', 'c'])
In [19]: mask
Out[19]:
0 True
1 False
2 False
3 False
4 False
5 True
6 True
7 True
8 True
dtype: bool
In [20]: obj[mask]
Out[20]:
0 c
5 b
6 b
7 c
8 c
dtype: object
与 isin 相关的 Index.get_indexer 方法,提供一个索引数组,这个索引数组将可能非唯一值数组转换为另一个唯一值数组
In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: to_match = pd.Series(['c', 'a', 'b', 'b', 'c', 'a'])
In [4]: unique_vals = pd.Series(['c', 'b', 'a'])
In [5]: pd.Index(unique_vals).get_indexer(to_match)
Out[5]: array([0, 2, 1, 1, 0, 2], dtype=int64)
唯一值、计数和集合成员属性方法
方法 |
描述 |
isin |
计算表征 Series 中每个值是否包含于传入序列的布尔值数组 |
match |
计算数组中每个值的整数索引,形成一个唯一值数组。有助于数据对齐和 join 类型的操作 |
unique |
计算 Series 值中的唯一值数组,按照观察顺序返回 |
value_counts |
返回一个 Series,索引是唯一值序列,值是计数个数,按照个数降序排列 |
计算DataFrame 多个相关列的直方图
In [6]: data = pd.DataFrame({'Out1': [1, 3, 4, 3, 4],
...: 'Out2': [2, 3, 1, 2, 3],
...: 'Out3': [1, 5, 2, 4, 4]})
In [7]: data
Out[7]:
Out1 Out2 Out3
0 1 2 1
1 3 3 5
2 4 1 2
3 3 2 4
4 4 3 4
In [8]: result = data.apply(pd.value_counts).fillna(0)
In [9]: result
Out[9]:
Out1 Out2 Out3
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
行标签是所有列中出现的不同值,数值则是这些不同值在每个列中出现的次数