Pandas的使用总结-1
更新:在pandas的1.0.0版本开始,移除了Series.ix
and DataFrame.ix
方法
样例DataFrame:
>>> df A B C D 0 a1 b1 c1 d1 1 a2 b2 c2 d2 2 a3 b3 c3 d3 3 a4 b4 c4 d4 4 a5 b5 c5 d5 5 a6 b6 c6 d6
1.选取,切片
pandas中选取方式有很多种,最常用的是一下几种:直接选取(单维度选取)、iloc();loc();ix()函数选取(区域选区),at();iat()函数选取(单元格选取)。
1.1直接选取
选取行:直接在定义的df后加[ ],然后输入数字索引或者定义的行标签,可以使用切片。
选取列:直接在定义的df后加[ ],然后输入定义的列标签,不能使用切片。
选取行使用切片时应注意,数字索引为左闭右开,自己定义的标签索引为左闭右闭。
#选取行 df[0 : 2]#左闭右开 df['a' : 'c']#左闭右闭 #选取列 df['A'] df[['A', 'C']]#多个列的时候要用两个[] #注意选取列不能切片方法,如 #df['A':'C'] #条件选取 df[[i > 30 for i in df['age']]] df[df['age'] > 30] #当条件有多个时,可以用& | !=等连接多个条件,但是每个条件都要被()包括 #筛选出年龄大于30且未婚的人 df[(df['age'] > 30) & (df['isMarried'] == 'no')]#多个条件,每个条件要用()括起来
1.2 loc[]、iloc[]、ix[]方法(属性)选取区域
loc[],只能用标签选取,前闭后闭
iloc[],只能用整数选取,前闭后开
ix[], 可以使用标签和整数。不管用哪个索引,均为左闭右闭。
三种方法都可以时用切片,也可以进行条件选取。
1.2.1 loc[]
1 #.loc[],只能用标签选取,前闭后闭 2 #选取行 3 df.loc[2, :] 4 df.loc[2]#默认所有列,这俩种方式等价 5 6 df.loc[2:5, :]#使用切片时不用加[ ] 7 df.loc[[2, 4], ['B', 'D']]#选择多个单独的行时,要加[ ],相当于创建一个所选行或列的列表 8 df.loc[df['age'] > 30, : ]#条件选取 9 10 #选择列 11 df.loc[:, 'B'] 12 df.loc[:, 'B' : 'D']#使用切片时不用加[ ] 13 df.loc[:, ['B', 'D']]#选择多个单独的列时,要加[ ] 14 df.loc[df['age'] > 30, ['name', 'age']]#条件选取
1.2.2 iloc[]
1 #iloc[],只能用整数选取,前闭后开 2 #选取行 3 df.iloc[0, :] 4 df.iloc[0]#默认所有列 5 df.iloc[0 : 3, :]#使用切片时不用加[ ] 6 df.iloc[[0, 3], :]##选择某个区域,选择多个单独的行时,要加[ ] 7 #df.iloc[df.iloc[0] > 30, :]不可行 8 9 #选取列 10 df.iloc[:, 0] 11 df.iloc[:, 0 : 3]#不包含第四列 12 df.iloc[:, [0, 3]]#第一列和第四列 13 14 15 #同时选取行和列(选取区域) 16 df.iloc[1, [0, 2, 3]] 17 df.iloc[: 3, : 3]
1.2.3 ix[]
实际上是上面俩种方式的综合,无论使用整数还是标签都可以,混合使用都可以。
1.2.4 at[]与iat[]选取具体某一个单元格
既可以类比啦,一种是只能用标签、一种是只能用整数选取,只不过是选取单元格数据的方法。
1 df.at[1,'B'] 2 #此处注意,第一个标签之所以是数字1,是因为此df正好是整数1 3 4 df.iat[1,1] 5 #此处注意,一个参数和上面都是1,但是意义不一样,此处为数字1,上面的是标签1
2. DataFrame和Series的索引重置
1 #重新从0开始排序设置索引 2 df.reset_index() 3 4 #暴力指定索引 5 df.index = range(1,7,1)) #索引从1开始