首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

玩转Pandas,让数据处理更easy系列2

01

回顾

上一篇总结了Pandas中最重要的两个数据结构:Series和DataFrame,前者相当于更加强大的一维数组,是数组和字典的组合,因为既可以按照位置,也能通过键获取访问元素;而DataFrame是Series的容器,二维的数组,有行、列标签。正是通过这两个强大的数据结构和基于它们建立的各种操作,才使得Pandas称霸数据处理领域工具库,关于这篇请参考:

02

DataFrame结构剖析

因为DataFrame本质上是二维数组,其中values是Numpy,行索引是index,列索引是 columns的组合。接下来,创建一个pd_data,分别作如下操作:

#创建pd_data,values是二维list,index默认(0,1,2,...),columns: ['A','B','C']

pd_data = pd.DataFrame([ [4, 9, 1], [3, 5, 2] ], columns = list('ABC') )

获取values,可以看出是ndarray的Numpy数组,因此可以使用ndarray实例的一切API:

pd.values

获取index,可以看到返回RangeIndex实例,是默认的行索引,查源码可以看出继承关系如下:

Index

|

NumericIndex

|

Int64Index

|

RangeIndex

pd_data.index

获取columns,直接返回Index实例,可以看到pd_data的列索引:

pd_data.columns

以上,可以看出pd_data的基本组成结构,以及如何拆分出所需要的values和索引(index,columns)结构。

03

DataFrame索引

DataFrame的索引可以按照一维索引方式,或二维索引方式。

一维索引方式,类似于numpy等的冒号直接索引,但是这种方法只能通过列索引标签获取,如下,返回的是一个Series实例,name是索引的列标签名称。

pd_data['B']

二维索引常用的loc接口,提供二维的访问方法,用法如下:

pd_data.loc[1,'B']

得到是元素5,即行索引标签为1,列标签为‘B’的元素

插播:

loc的作用不是仅仅用作访问某个已存在的元素。

因为说过,columns, index的作用类似于字典,言外之意,如果访问的标签不存在,它会自动添加进去,如下:

pd_data.loc[:,'D'] = 10#增加一列,列标签是'D'

pd_data['D'] = 10# 直接这样写更精简,但是默认必须为添加列标签

pd_data.loc[-1,:] = 0#增加一行,行标签是 -1

pd_data[-1] = -11# No! 这样写不是添加一行

04

DataFrame删除某列或某行

删除DataFrame的某行或某列,调用drop(),参数是标签值,如下:

现在的pd_data:

删除'E'列,ok, 调用 drop('E',axis=1),axis参数必须给出!

pd_data= pd_data.drop('E',axis=1)#注意必须赋值给pd_data,因为这不是in-place drop

删除标签为-1的行:

pd_data = pd_data.drop(-1,axis=0)

测试如果标签为-1的行有多个,删除会发生,再构造标签为-1的行:

pd_data = pd_data.append(pd.Series([1]*5, index=['A,'B','C','D',-1], name=1))

pd_data

删除标签为1的行,可以看到同时删除了两行。

pd_data = pd_data.drop(1,axis=0)

pd_data

以上总结了,DataFrame的结构,索引,增加,删除操作,如有问题,请指针。

算法channel∣原创干货分享

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180324G0SLMT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券