排序
根据条件对结果进行排序,是pandas当中的一个重要方法,pandas提供了两种排序方式,根据index值,或是根据其中的value进行排序
Series
In [192]: obj Out[192]: d 7 a 1 b 2 c 3 e 9 f 4 dtype: int64 In [193]: obj.sort_index() Out[193]: a 1 b 2 c 3 d 7 e 9 f 4 dtype: int64 In [194]: obj.sort_values() Out[194]: a 1 b 2 c 3 f 4 d 7 e 9 dtype: int64
Dataframe
dataframe作为二维数据结构在排序时,可根据行或者列进行排序,传入axis参数,默认是根据axis=0进行排序
sort_index
In [215]: frame Out[215]: a b d c three 0 1 4 7 one 2 1 4 3 In [216]: frame.sort_index() Out[216]: a b d c one 2 1 4 3 three 0 1 4 7 In [217]: frame.sort_index(axis=1) Out[217]: a b c d three 0 1 7 4 one 2 1 3 4
sort_values
dataframe也可以根据值进行排序,但是dataframe当中的行与列一般都是多行或者多列,所以需要通过by参数指定具体的列名或者行名
In [219]: frame.sort_values(by='one',axis=1) Out[219]: b a c d three 1 0 7 4 one 1 2 3 4 In [220]: frame.sort_values(by='c') Out[220]: a b d c one 2 1 4 3 three 0 1 4 7
描述和统计方法
pandas提供了多种统计方法,如同
In [227]: frame.sum() Out[227]: a 2 b 2 d 8 c 10 dtype: int64 In [228]: frame.count() Out[228]: a 2 b 2 d 2 c 2 dtype: int64 In [229]: frame.sum(axis=1) Out[229]: three 12 one 10 dtype: int64 In [230]: frame.var() Out[230]: a 2.0 b 0.0 d 0.0 c 8.0 dtype: float64
其中的describe方法,能够一次性产生多个类型的统计信息,用以描述一个数据
In [231]: frame.describe() Out[231]: a b d c count 2.000000 2.0 2.0 2.000000 mean 1.000000 1.0 4.0 5.000000 std 1.414214 0.0 0.0 2.828427 min 0.000000 1.0 4.0 3.000000 25% 0.500000 1.0 4.0 4.000000 50% 1.000000 1.0 4.0 5.000000 75% 1.500000 1.0 4.0 6.000000 max 2.000000 1.0 4.0 7.000000
唯一值,值计数以及成员资格
之前我们介绍的方法,都是可以用于dataframe以及series的,但是有一些方法是仅series拥有这些方法
unique
unique方法,用于获取series当中的唯一值,类似于python当中的set(list_obj)操作,去除其中的重复值,返还一个只含有唯一值的数组。
In [238]: frame Out[238]: a b d c three 0 1 4 7 one 2 1 4 3 In [239]: frame.d.unique() Out[239]: array([4], dtype=int64) In [240]: frame.c.unique() Out[240]: array([7, 3], dtype=int64)
value_counts
记录series各个值出现的次数
In [242]: obj = pd.Series(['c', 'a', 'd', 'a', 'a', 'b', 'b', 'c', 'c']) In [243]: obj Out[243]: 0 c 1 a 2 d 3 a 4 a 5 b 6 b 7 c 8 c dtype: object In [244]: obj.value_counts() Out[244]: c 3 a 3 b 2 d 1 dtype: int64
is_in
判断series的成员资格,返还一个布尔数组,常用于过滤series和dataframe的数据
In [249]: obj Out[249]: 0 c 1 a 2 d 3 a 4 a 5 b 6 b 7 c 8 c dtype: object In [250]: obj.isin(['a','c']) Out[250]: 0 True 1 True 2 False 3 True 4 True 5 False 6 False 7 True 8 True dtype: bool In [251]: obj[obj.isin(['a','c'])] Out[251]: 0 c 1 a 3 a 4 a 7 c 8 c dtype: object