Pandas的使用总结

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开始 

 

posted @ 2020-04-03 10:37  nanmi  阅读(266)  评论(0编辑  收藏  举报