2018年4月20日

Pandas数据处理入门1————切片的几种方式

下面介绍一下pandas切片的几种方式

数据来源:
dates = pd.date_range('20130101',periods=6)
df = pd.DataFrame(np.random.randn(6,6),index = dates,columns=list('ABCEFG'))

现在下面有一组通过上面两行代码产生的数据,通过对这组数据进行切片处理来入门pandas切片的几种方式

下面我们对这组随机数据进行切片:

1. 获取第三行和ABCDEFG标签的交叉区域:

df.loc[dates[3]]
这样会获取到ABCDEFG所对应的第四行的数据(除了标签行)。
这样处理出来的数据数值上和df.loc[3:4]这样行切片得到的相同,但是两者的格式不相同。后者会把时间标签加入进来。如下图所示:

这样同时数值等价于df['20130104':'20130104']如果不能理解的话推荐看一下python切片。

2 . 我们还可以通过标签对多个轴进行选择:

例如现在我们要对标签A和标签B所对应的轴进行选择:
df.loc[:,['A','B']]
这样就会把A和B标签所对应的轴的数据提取出来:如下图所示:

我们可以推广到df.loc['20130101':'20130102',['A','B']]

这样则是对20130101和20130102这两天指定的A和B数据进行切片。

倘若我们对该数据进行维度缩减的话:
df.loc['20130101',['A','B']]
这样即可得到20130101这一天A和B对应的数据

通过对此方法推广,我们可以快速获取所对应的一个标量,例如我们想获取20130101这天A的数据:
df.loc['20130101','A'] 这种访问方法和df.at[dates[0],'A']等价,(注意不能写为df.at['20130101','A'])

3 .我们通过传递的数值进行行选择:

例如我们要提取出第四行的数据,我们可以通过df.iloc[3]进行快速行选择,得到的结果与上述的
df.loc[dates[3]]得到的结果一致。对了注意从0开始的而不是1,所以对第四行提取应该是df.iloc[3]

我们对该方法进行推广我们可以这样用提取4到5行以及0到3列:df.iloc[3:5,0:2]
可以得到:

还可用df.iloc[[1,2,4],[0,2]]获取指定行和列的数据,以及用df.iloc[1:3,:]获取第二到第三行所有列的数据。
结合上述用法即可高效的使用切片获取指定的数据。

谢谢能忍受我这么惨烈的文字看到这里,谢谢你们陪我一同成长!!!

stupid0121

我是热爱生活热爱运动的程序员----stupid,谢谢大家陪伴我一起成长。

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注