前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转Pandas,让数据处理更easy系列1

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

作者头像
double
发布2018-07-25 18:11:23
1.1K0
发布2018-07-25 18:11:23
举报
文章被收录于专栏:算法channel算法channel
1Series对象介绍

Series 是pandas两大数据结构中(DataFrame,Series)的一种,我们先从Series的定义说起,Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。

Series对象本质上是一个NumPy的数组,因此NumPy的数组处理函数可以直接对Series进行处理。但是Series除了可以使用位置作为下标存取元素之外,还可以使用标签下标存取元素,这一点和字典相似,每个Series对象都由两个数组组成: 1) index: 它是从NumPy数组继承的Index对象,保存标签信息。 2) values: 保存值的NumPy数组。

了解Series的这种数据结构,对于接下来使用Series至关重要。

2灵活使用Series

这部分的总结思路如下:

  1. 如何创建Series;
  2. Series索引;
  3. Series的增删改查

2.1 创建Series

创建Series,直接调用Series的构造函数,如下:

#只指定values s1 = pd.Series( [3,5,7]) #还指定index s2 = pd.Series( [3,5,7], index = list('ABC') ) #再指定name s3 = pd.Series( [3,5,7], index = list('ABC'),name='s3' ) #指定name的作用:append到pd中的行索引标签

  • 单独说明一点:
  • Series的元素类型可以是不同的,比如:

mix = pd.Series( [3, '5', 7.0] ) # 此时的mix的类型为object,而不是像上面的int64

2.2 Series索引

创建Series时,如果不指定index,默认索引从0开始。如果创建完Series后,想修改索引,可以这样:

s1.index = ['a', 'b', 'c']

这样,s1的索引变为从'a'开始。

2.3 Series增删改查

2.3.1增加

Series的增加有两个类似的API,但是不要混淆了啊,一个是add,它的效果是元素对应相加,另一个是append,才是将元素拼接到原series后。

s3.add(s2)

元素的个数还是3个,只不过元素大小变为[6,10,14],注意如果索引不相同的add,会增加元素个数,但是所有元素都变为Nan

那append的呢?

s3.append(s2) #元素个数变为6个,并且索引可以允许重复,记住pandas中是允许出现重复的索引标签的。

2.3.2 删除

如何删除series的一个元素呢,调用drop,接口中传入一个索引标签。

s3.drop('A')

删除后如果再想恢复怎么办呢?因为series的index是一个list,所以先添加一个pd.Index()实例,然后再充填上值就行:

s3.index.append(pd.Index(['A']) )

2.3.3 修改

想修改某个元素,直接找到对应的标签(按照字典的方式),或找到对应的values的索引,

s3['B'] = 6

或者,

s3[1] = 6

2.3.4 查找

查找某个元素,可以通过标签或索引,见如上的修改方法,不再详述。

3DataFrame

DataFrame是pandas的两个重要数据结构的另一个,可以看做是Series的容器,看早一个DataFrame实例的方法也很简单:

pd_data = pd.DataFrame([ [9,0,1],[7,3,10] ] )

这种方法默认下行索引标签和列索引标签都是从0开始。注意这是DataFrame的重要特性之一,同时具有行列标签,如果Series是一维的数组,那么作为其容器的DataFrame自然是二维的数组,其中行的axis=0, 列的axis=1.

既然DataFrame和Series如此紧密,那么它们之间又是如何通信的呢? 下面看下如何将一个Series转载到一个DataFrame的实例中。

3.1 装载Series

先看一个没达到预期的装载,我们想把s3装载到pd_data中,调用append,API调对了,但是错误的是它们的索引不对应,所以:

pd_data.append(s3)

因此,以上的DataFrame实例pd_data,修改其columns与s3对应,

pd_data.columns = list('ABC') pd_data.append(s3)

插播:

  • 上面也涉及到DataFrame的行列标签属性设置,分别为index, columns,可以先创建后设置标签,如上所示。
  • 可以观察到s3的name变为了加入后的行标签

以上,pandas的两种最重要的数据结构,弄明白了其原理,用起来便能顺手些,如有疏漏或错误,请指针。

更多文章:

NLP入门:CNN,RNN应用文本分类,个性化搜索,苹果和乔布斯关系抽取(2)

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

算法channel关键词和文章索引

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档