您当前的位置: 首页 >  Python

嗨学编程

暂无认证

  • 0浏览

    0关注

    1405博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

嗨学编程 发布时间:2019-10-04 15:49:58 ,浏览量:0

Series对象介绍

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

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

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

灵活使用Series

这部分的总结思路如下:

i.如何创建Series; ii.Series索引; iii.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’开始。

这样,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 查找

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

DataFrame

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的两种最重要的数据结构,弄明白了其原理,用起来便能顺手些,如有疏漏或错误,请指针。

关注
打赏
1663681728
查看更多评论
立即登录/注册

微信扫码登录

0.0529s