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

01

回顾

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

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

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的结构,索引,增加,删除操作,如有问题,请指正。

下载源码,请在公众号后台回复: pandas

更多文章:

深度学习|大师之作,必是精品

算法channel关键词和文章索引

算法优化|说说哨兵(sentinel value)

Numpy|需要信手拈来的功能

机器学习|快速排序思想求topk

机器学习|支持向量机参数求解

本文分享自微信公众号 - Python与机器学习算法频道(alg-channel)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏青玉伏案

iOS开发之Masonry框架源码解析

Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁。Masonry简化了NSLay...

23380
来自专栏Java帮帮-微信公众号-技术文章全总结

【Java案例】余弦函数

案例描述 在屏幕上画出余弦函数cos(x)曲线,如图1.6所示。 ? 图1.6 余弦函数cos(x)曲线 案例分析 连续的曲线是由点组成的,点与点之间距离比较...

59260
来自专栏数据结构与算法

11:大整数减法

11:大整数减法 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB描述 求两个大的正整数相减的差。 输入共2行,第1行是被减...

301100
来自专栏深度学习之tensorflow实战篇

网页爬虫-R语言实现基本函数

#*************网页爬虫-R语言实现,函数库文件*******# #****作者:H********************************...

33770
来自专栏章鱼的慢慢技术路

OpenGL中的二维编程——从简单的矩形开始

20640
来自专栏落影的专栏

Metal入门教程总结

本文介绍Metal和Metal Shader Language,以及Metal和OpenGL ES的差异性,也是实现入门教程的心得总结。

1.4K60
来自专栏PPV课数据科学社区

【学习】数据分析之Excel数据分组案例详解

提示:使用EXCEL进行数据分组的案例详解,三种方法:IF函数,VLOOKUP函数,LOOKUP函数,回复给邮箱,友情赠送EXCEL文档实例,以后自己套用即可。...

31160
来自专栏蜉蝣禅修之道

Max-Min Fairness带宽分配算法

28060
来自专栏chenjx85的技术专栏

leetcode-201-数字范围按位与

给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。

49420
来自专栏小狼的世界

Leetcode刷题记录:计算复数乘法

11510

扫码关注云+社区

领取腾讯云代金券