排序
根据条件对结果进行排序,是pandas当中的一个重要方法,pandas提供了两种排序方式,根据index值,或是根据其中的value进行排序
Series
In [192]: obj
Out[192]:
d7a1b2c3e9f4dtype: int64
In [193]: obj.sort_index()
Out[193]:
a1b2c3d7e9f4dtype: int64
In [194]: obj.sort_values()
Out[194]:
a1b2c3f4d7e9dtype: int64
Dataframe
dataframe作为二维数据结构在排序时,可根据行或者列进行排序,传入axis参数,默认是根据axis=0进行排序
sort_index
In [215]: frame
Out[215]:
a b d c
three 01 4 7one2 1 4 3In [216]: frame.sort_index()
Out[216]:
a b d c
one2 1 4 3three 01 4 7In [217]: frame.sort_index(axis=1)
Out[217]:
a b c d
three 01 7 4one2 1 3 4
sort_values
dataframe也可以根据值进行排序,但是dataframe当中的行与列一般都是多行或者多列,所以需要通过by参数指定具体的列名或者行名
In [219]: frame.sort_values(by='one',axis=1)
Out[219]:
b a c d
three1 0 7 4one1 2 3 4In [220]: frame.sort_values(by='c')
Out[220]:
a b d c
one2 1 4 3three 01 4 7
描述和统计方法
pandas提供了多种统计方法,如同
In [227]: frame.sum()
Out[227]:
a2b2d8c10dtype: int64
In [228]: frame.count()
Out[228]:
a2b2d2c2dtype: int64
In [229]: frame.sum(axis=1)
Out[229]:
three12one10dtype: int64
In [230]: frame.var()
Out[230]:
a2.0b0.0d0.0c8.0dtype: float64
其中的describe方法,能够一次性产生多个类型的统计信息,用以描述一个数据
In [231]: frame.describe()
Out[231]:
a b d c
count2.000000 2.0 2.0 2.000000mean1.000000 1.0 4.0 5.000000std1.414214 0.0 0.0 2.828427min0.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.000000max2.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 01 4 7one2 1 4 3In [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 c1a2d3a4a5b6b7c8c
dtype: object
In [244]: obj.value_counts()
Out[244]:
c3a3b2d1dtype: int64
is_in
判断series的成员资格,返还一个布尔数组,常用于过滤series和dataframe的数据
In [249]: obj
Out[249]:
0 c1a2d3a4a5b6b7c8c
dtype: object
In [250]: obj.isin(['a','c'])
Out[250]:
0 True1True2False3True4True5False6False7True8True
dtype: bool
In [251]: obj[obj.isin(['a','c'])]
Out[251]:
0 c1a3a4a7c8c
dtype: object