Pandas Series入门教程

Series结构,也称Series序列,是Pandas常用的数据结构之一,它是一种类似于一维数组的结构,由一组数据值(value)和一组标签组成,其中标签与数据值之间是一一对应的关系。

Series可以保存任何数据类型,比如整数、字符串、浮点数、Python对象等,它的标签默认为整数,从0开始依次递增。Series的结构图,如下所示:

通过标签我们可以更加直观地查看数据所在的索引位置。

创建Series对象

Pandas使用Series()函数来创建Series对象,通过这个对象可以调用相应的方法和属性,从而达到处理数据的目的:

import pandas as pd
s=pd.Series( data, index, dtype, copy)12复制代码类型:[python]

参数说明如下所示:

参数名称 描述
data 输入的数据,可以是列表、常量、ndarray 数组等。
index 索引值必须是惟一的,如果没有传递索引,则默认为 np.arrange(n)。
dtype dtype表示数据类型,如果没有提供,则会自动判断得出。
copy 表示对 data 进行拷贝,默认为 False。

我们也可以使用数组、字典、标量值或者Python对象来创建Series对象。下面展示了创建Series对象的不同方法:

1)创建一个空Series对象

使用以下方法可以创建一个空的Series对象,如下所示:

import pandas as pd#输出数据为空s = pd.Series()
print(s)1234复制代码类型:[python]

输出结果如下:

Series([], dtype: float64)1复制代码类型:[python]

2)ndarray创建Series对象

ndarray是NumPy中的数组类型,当data是ndarry时,传递的索引必须具有与数组相同的长度。假如没有给index参数传参,在默认情况下,索引值将使用是range(n)生成,其中n代表数组长度,如下所示:

[0,1,2,3…. range(len(array))-1]1复制代码类型:[python]

使用默认索引,创建Series序列对象:

import pandas as pdimport numpy as np
data = np.array(['a','b','c','d'])
s = pd.Series(data)print (s)12345复制代码类型:[python]

输出结果如下:

0   a1   b2   c3   d
dtype: object12345复制代码类型:[python]

上述示例中没有传递任何索引,所以索引默认从0开始分配,其索引范围为0到len(data)-1,即0到3。这种设置方式被称为“隐式索引”。

除了上述方法外,你也可以使用“显式索引”的方法定义索引标签,示例如下:

import pandas as pdimport numpy as np
data = np.array(['a','b','c','d'])#自定义索引标签(即显示索引)s = pd.Series(data,index=[100,101,102,103])
print(s)123456复制代码类型:[python]

输出结果:

100  a101  b102  c103  d
dtype: object12345复制代码类型:[python]

3)dict创建Series对象

您可以把dict作为输入数据。如果没有传入索引时会按照字典的键来构造索引;反之,当传递了索引时需要将索引标签与字典中的值一一对应。

下面两组示例分别对上述两种情况做了演示。

示例1,没有传递索引时:

import pandas as pdimport numpy as np
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data)
print(s)12345复制代码类型:[python]

输出结果:

a 0.0b 1.0c 2.0dtype: float641234复制代码类型:[python]

示例2,为index参数传递索引时:

import pandas as pdimport numpy as np
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data,index=['b','c','d','a'])
print(s)12345复制代码类型:[python]

输出结果:

b 1.0c 2.0d NaN
a 0.0dtype: float6412345复制代码类型:[python]

当传递的索引值无法找到与其对应的值时,使用NaN(非数字)填充。

4)标量创建Series对象

如果data是标量值,则必须提供索引,示例如下:

import pandas as pdimport numpy as np
s = pd.Series(5, index=[0, 1, 2, 3])
print(s)1234复制代码类型:[python]

输出如下:

0  51  52  53  5dtype: int6412345复制代码类型:[python]

标量值按照index的数量进行重复,并与其一一对应。

访问Series数据

上述讲解了创建Series对象的多种方式,那么我们应该如何访问Series序列中元素呢?分为两种方式,一种是位置索引访问;另一种是索引标签访问。

1)位置索引访问

这种访问方式与ndarray和list相同,使用元素自身的下标进行访问。我们知道数组的索引计数从0开始,这表示第一个元素存储在第0个索引位置上,以此类推,就可以获得Series序列中的每个元素。下面看一组简单的示例:

import pandas as pd
s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
print(s[0])  #位置下标print(s['a']) #标签下标1234复制代码类型:[python]

输出结果:

1112复制代码类型:[java]

通过切片的方式访问Series序列中的数据,示例如下:

import pandas as pd
s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
print(s[:3])123复制代码类型:[python]

输出结果:

a  1b  2c  3dtype: int641234复制代码类型:[python]

如果想要获取最后三个元素,也可以使用下面的方式:

import pandas as pd
s = pd.Series([1,2,3,4,5],index = ['a','b','c','d','e'])
print(s[-3:])123复制代码类型:[python]

输出结果:

c  3d  4e  5dtype: int641234复制代码类型:[python]

2)索引标签访问

Series类似于固定大小的dict,把index中的索引标签当做key,而把Series序列中的元素值当做value,然后通过index索引标签来访问或者修改元素值。

示例1,使用索标签访问单个元素值:

import pandas as pd
s = pd.Series([6,7,8,9,10],index = ['a','b','c','d','e'])
print(s['a'])123复制代码类型:[python]

输出结果:

61复制代码类型:[python]

示例2,使用索引标签访问多个元素值

import pandas as pd
s = pd.Series([6,7,8,9,10],index = ['a','b','c','d','e'])
print(s[['a','c','d']])123复制代码类型:[python]

输出结果:

a    6c    8d    9dtype: int641234复制代码类型:[python]

示例3,如果使用了index中不包含的标签,则会触发异常:

import pandas as pd
s = pd.Series([6,7,8,9,10],index = ['a','b','c','d','e'])#不包含f值print(s['f'])1234复制代码类型:[python]

输出结果:

......
KeyError: 'f'12复制代码类型:[python]

Series常用属性

下面我们介绍Series的常用属性和方法。在下表列出了Series对象的常用属性。

名称 属性
axes 以列表的形式返回所有行索引标签。
dtype 返回对象的数据类型。
empty 返回一个空的 Series 对象。
ndim 返回输入数据的维数。
size 返回输入数据的元素数量。
values 以 ndarray 的形式返回 Series 对象。
index 返回一个RangeIndex对象,用来描述索引的取值范围。

现在创建一个Series对象,并演示如何使用上述表格中的属性。如下所示:

import pandas as pdimport numpy as np
s = pd.Series(np.random.randn(5))
print(s)1234复制代码类型:[python]

输出结果:

0    0.8980971    0.7302102    2.3074013   -1.7230654    0.346728dtype: float64123456复制代码类型:[python]

上述示例的行索引标签是[0,1,2,3,4]。

1)axes

import pandas as pdimport numpy as np
s = pd.Series(np.random.randn(5))print ("The axes are:")
print(s.axes)12345复制代码类型:[python]

输出结果

The axes are:
[RangeIndex(start=0, stop=5, step=1)]12复制代码类型:[python]

2)dtype

import pandas as pdimport numpy as np
s = pd.Series(np.random.randn(5))print ("The dtype is:")
print(s.dtype)12345复制代码类型:[python]

输出结果:

The dtype is:
float6412复制代码类型:[python]

3)empty

返回一个布尔值,用于判断数据对象是否为空。示例如下:

import pandas as pdimport numpy as np
s = pd.Series(np.random.randn(5))
print("是否为空对象?")print (s.empty)12345复制代码类型:[python]

输出结果:

是否为空对象?False12复制代码类型:[python]

4)ndim

查看序列的维数。根据定义,Series是一维数据结构,因此它始终返回1。

import pandas as pdimport numpy as np
s = pd.Series(np.random.randn(5))print (s)print (s.ndim)12345复制代码类型:[python]

输出结果:

0    0.3114851    1.7488602   -0.0227213   -0.1292234   -0.489824dtype: float6411234567复制代码类型:[python]

5)size

返回Series对象的大小(长度)。

import pandas as pdimport numpy as np
s = pd.Series(np.random.randn(3))print (s)#series的长度大小print(s.size)123456复制代码类型:[python]

输出结果:

0   -1.8662611   -0.6367262    0.586037dtype: float64312345复制代码类型:[python]

6)values

以数组的形式返回Series对象中的数据。

import pandas as pdimport numpy as np
s = pd.Series(np.random.randn(6))
print(s)
print("输出series中数据")
print(s.values)123456复制代码类型:[python]

输出结果:

0   -0.5021001    0.6961942   -0.9820633    0.4164304   -1.3845145    0.444303dtype: float64
输出series中数据
[-0.50210028  0.69619407 -0.98206327  0.41642976 -1.38451433  0.44430257]123456789复制代码类型:[python]

7)index

该属性用来查看Series中索引的取值范围。示例如下:

#显示索引import pandas as pd
s=pd.Series([1,2,5,8],index=['a','b','c','d'])
print(s.index)#隐式索引s1=pd.Series([1,2,5,8])
print(s1.index)1234567复制代码类型:[python]

输出结果:

隐式索引:
Index(['a', 'b', 'c', 'd'], dtype='object')
显示索引:
RangeIndex(start=0, stop=4, step=1)1234复制代码类型:[python]

Series常用方法

1)head()&tail()查看数据

如果想要查看Series的某一部分数据,可以使用head()或者tail()方法。其中head()返回前n行数据,默认显示前5行数据。示例如下:

import pandas as pdimport numpy as np
s = pd.Series(np.random.randn(5))print ("The original series is:")print (s)#返回前三行数据print (s.head(3))1234567复制代码类型:[python]

输出结果:

原系列输出结果:0    1.2496791    0.6364872   -0.9876213    0.9996134    1.607751head(3)输出:
dtype: float640    1.2496791    0.6364872   -0.987621dtype: float64123456789101112复制代码类型:[python]

tail()返回的是后n行数据,默认为后5行。示例如下:

import pandas as pdimport numpy as np
s = pd.Series(np.random.randn(4))#原seriesprint(s)#输出后两行数据print (s.tail(2))1234567复制代码类型:[python]

输出结果:

原Series输出:0    0.0533401    2.1658362   -0.7191753   -0.035178输出后两行数据:
dtype: float642   -0.7191753   -0.035178dtype: float6412345678910复制代码类型:[python]

2)isnull()&nonull()检测缺失值

isnull()和nonull()用于检测Series中的缺失值。所谓缺失值,顾名思义就是值不存在、丢失、缺少。

isnull():如果为值不存在或者缺失,则返回True。

notnull():如果值不存在或者缺失,则返回False。

其实不难理解,在实际的数据分析任物中,数据的收集往往要经历一个繁琐的过程。在这个过程中难免会因为一些不可抗力,或者人为因素导致数据丢失的现象。这时,我们可以使用相应的方法对缺失值进行处理,比如均值插值、数据补齐等方法。上述两个方法就是帮助我们检测是否存在缺失值。示例如下:

import pandas as pd#None代表缺失数据s=pd.Series([1,2,5,None])
print(pd.isnull(s))  #是空值返回Trueprint(pd.notnull(s)) #空值返回False12345复制代码类型:[python]

输出结果:

0    False1    False2    False3     Truedtype: boolnotnull():0     True1     True2     True3    Falsedtype: bool
(0)

相关推荐

  • 一起学习Python常用模块——pandas

    作者介绍 @王多鱼 百度的一名推荐算法攻城狮. 主要负责推荐的召回和排序模型的优化工作. 1 前言 Pandas 是Python的一个数据分析包,它是为了解决数据分析任务而创建的.Pandas 纳入了 ...

  • (3条消息) 【学习笔记】python实现excel数据处理

    概述 Excel固然功能强大,也有许多函数实现数据处理功能,但是Excel仍需大量人工操作,虽然能嵌入VB脚本宏,但也容易染上宏病毒.python作为解释性语言,在数据处理方面拥有强大的函数库以及第三 ...

  • 25000字玩转 Pandas, 这一篇给力了!

    作者:Ma Sizhou https://blog.csdn.net/weixin_45901519/article/details/112980822 1.Pandas数据结构 2008年WesMc ...

  • 非常全面的Pandas入门教程

    pandas是基于NumPy的一种数据分析工具,在机器学习任务中,我们首先需要对数据进行清洗和编辑等工作,pandas库大大简化了我们的工作量,熟练并掌握pandas常规用法是正确构建机器学习模型的第 ...

  • 太香了!最强的 pandas 入门教程

    翻译:石头 来源:MachineLearningPlus 文末赠送5本书 <Python Web开发从入门到精通> pandas是基于NumPy的一种数据分析工具,在机器学习任务中,我们首 ...

  • C语言标准头的使用,C语言入门教程,你我的好帮手

    每个标准库函数都会被声明在一个或多个标准头(standard header)中.这些标准头也包括了 C 语言标准提供的所有宏和类型的定义. 每个标准头都包含一组相关的函数声明.宏和类型定义.例如,数学 ...

  • 沿用上百年的楷书入门教程,看过都说好!

    .................................................................................................... ...

  • 电路板维修入门教程

    (一)          电容篇 1.电容在电路中一般用"C"加数字表示(如C25表示编号为25的电容). 电容是由两片金属膜紧靠,中间用绝缘材料隔开而组成的元件.电容的特性主要是 ...

  • 国画入门教程:山石的画法

    山石是山水画最基本的内容,石是山的局部,山石的绘画,要经过勾.皴.擦.点.染等几个基本步骤或再增加提的程序. 今天我们就来讲讲几种皴的画法,帮助大家学习一下. 批麻皴 01 披麻皴,是山水画皴法之一, ...

  • 光功率计快速入门教程,光功率计使用方法图解

    光功率计快速入门教程 一.按键说明 1 . DET 删除数据键:   删除测量过的数据 2 . dBm /  W  REL 键:测量结果的单位转换,每按一次此键,显示方式在   " W &q ...

  • 笔法、笔势,练的是手上的功夫!(详细入门教程)

    笔法.笔势是蕴含在点画书写中的规律性技法,是真.草.隶.篆.行各体都用的着的技法,提炼出转.折.提.按.中锋.侧锋.入笔.行笔.收笔等关键的笔法.笔势,有意识的.逐个的加以强化日常训练.或集中练习.反 ...

  • 【组队学习】【25期】Web开发入门教程

    Web开发入门教程 开源内容: https://github.com/datawhalechina/whale-web 基本信息 贡献人员:张梁.王晓亮.何锋丽.张少波.谢文昕 学习周期:16天 学习 ...