千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 数据分析系列Pandas之Series对象的创建、索引和切片

数据分析系列Pandas之Series对象的创建、索引和切片

来源:千锋教育
发布人:wjy
时间: 2022-07-29 17:19:08 1659086348

  接下来几周的文章我们会给大家主要介绍Pandas的使用,Pandas是一个Python 的包,提供快速、灵活和富有表现力的数据结构,旨在使"关系或标记数据的使用既简单又直观"。它的目标是成为用Python进行实际的、真实的数据分析的基础高级模块。

  **Pandas的数据结构**,分两种:**Series**和**DataFrame**.

  > 1、Series 一维,带标签数组 Series的中文意思是序列,系列.

  > 2、DataFrame 二维,Series容器

  本篇文章主要介绍Series的使用。:

  #### Series简介

  Serial对象本质上由两个数组构成,一个数组构成对象的健(index,索引),一个数组构成对象的值(values).因此Series可以看作是键值对。Series是**带标签**的一维数组,可存储整数、浮点数、字符串、Python 对象等类型的数据。轴标签统称为**索引,**它由两部分组成**。**

  - values:一组数据(ndarray类型)

  - index:相关的数据索引标签

  如图:

屏幕快照 2021-05-06 下午3.57.43

  特点:标签(index)与数据(value)默认对齐,除非特殊情况,一般不会断开连接,因此通过索引取值非常方便,不需要循环,可以直接通过字典方式,key 获取value.

  #### Series 创建的几种方式

  创建Series对象使用Pandas中的Series,

  ```

  Series组成部分:pd.Series(data=None, index=None, dtype=None)

  其中参数:data参数支持多种数据类型,比如列表,字典等,index是一个可选参数表示索引标签,通过dtype指定数据类型

  ```

  Series的创建方式有多种:

  > 1. 标量创建

  > 2. 列表创建

  > 3. numpy创建

  > 4. 字典创建

  **标量创建:**

  ```

  import numpy as np

  import pandas as pd

  tes = pd.Series(10,index=list('abcde'))

  tes

  ```

屏幕快照 2021-05-06 下午4.12.11

  **列表创建**

  即已知一个list结构的数据,通过该数据创建Series对象。

  ```

  # lst = [11,0,3,7,9,19,4]

  # s = pd.Series(lst) # 默认隐式索引

  # s

  lst = [11,0,3,7,9,19,4]

  s = pd.Series(lst,index=["A","B","C","D","E","F","G"]) # 通过index设置显式索引

  s

  ```

屏幕快照 2021-05-06 下午4.25.27

  **numpy创建**

  即Series中传入的是ndarray对象。

  ```

  # data = np.random.randint(0,100,size=(6,))

  # s = pd.Series(data=data)

  # s

  data = np.random.randint(0,100,size=(6,))

  s = pd.Series(data=data,index=list('abcdef'))

  s

  ```

  结果:

屏幕快照 2021-05-06 下午4.42.10

  **字典创建**

  ```

  dic = {"A":1,"B":2,"C":3,"D":2}

  s = pd.Series(dic) # 索引默认就是字典的key值

  s

  ```

  结果:

屏幕快照 2021-05-06 下午4.45.04

  #### Series的索引和切片

  因为Series只有一列,因此一般只对行进行操作,索引分为隐式索引和显示索引,因此不同的方式操作起来也不一样。

  索引分别为哪些呢?

  > 1. 位置下标

  >

  > 2. 标签索引

  > 3. 布尔型索引

  > 4. 切片索引

  位置下标:当使用默认值索引的时候,通常使用位置下标。类似列表的索引使用方式

  ```

  data = np.random.randint(0,100,size=(6,))

  s = pd.Series(data=data)

  print(s[0])

  print(s[3])

  print(s[4])

  ```

屏幕快照 2021-05-06 下午5.09.03

  标签索引:类似字典通过key获取value的方式,通常用在显示索引的时候。

  ```

  data = np.random.randint(0,100,size=(6,))

  s = pd.Series(data=data,index=list('abcdef'))

  print(s['a'])

  print(s['f'])

  print(s['c'])

  ```

屏幕快照 2021-05-06 下午5.13.38

  布尔型索引: 通过一个布尔型的数组获取Series对象中的值。

  ```

  data = np.random.randint(0,100,size=(6,))

  s = pd.Series(data=data,index=list('abcdef'))

  print(s)

  s2 = s>50 # 获取s中大于50的元素,结果会是一个bool类型的数组

  print(s2) # 打印s2得到的是一个bool类型的数组

  print(s[s2]) # 通过s2这个bool数组获取s中的元素

  ```

  结果:

屏幕快照 2021-05-06 下午5.23.01

  切片索引:即切片,类似列表的切片使用,但是又有所区别。

  隐式索引的使用:

  ```

  data = np.random.randint(0,100,size=(6,))

  s = pd.Series(data=data)

  print(s)

  print(s[1:5])

  print(s[:4])

  print(s[2:])

  print(s[::2])

  ```

  结果:

屏幕快照 2021-05-06 下午5.30.41

  当然也可以使用iloc完成Series对象中元素的获取,使用方式如下:

  ```

  data = np.random.randint(0,100,size=(6,))

  s = pd.Series(data=data)

  print(s.iloc[2]) # 指定下标

  print(s.iloc[1:3]) # 指定切片范围

  ```

  结果:

屏幕快照 2021-05-06 下午5.40.10

  显示索引的切片使用

  ```

  data = np.random.randint(0,100,size=(6,))

  s = pd.Series(data=data,index=list('abcdef'))

  print(s)

  print(s['a':'d'])

  print(s['a':])

  print(s[:'f'])

  print(s[::2])

  ```

  结果:

屏幕快照 2021-05-06 下午5.43.09

  显示索引也可以使用loc的方式获取元素

  ```

  print(s.loc['a':'e'])

  print(s.loc[['a','c','f']])

  ```

  结果:

屏幕快照 2021-05-06 下午5.52.37

  总结:

  1. **Series的索引和切片只针对行而言,因为它只有一列**

  2. **loc是对于显式索引的相关操作(对于标签的处理),iloc是针对隐式索引的相关操作(对于整数的处理)。**

  3. **我们发现其实s[0:2] 与 s.iloc[0:2]没有太大差别(显式索引也是一样),这并不说明iloc就没有用,个人觉得它更有意义的是在DataFrame当中使用**

  #### Series的基本使用

  **显示Series部分数据内容**

  **s.head(n)** 该函数代表的意思是显示前多少行,可以指定显示的行数,不写n默认是前5行

  **s.tail(n)** 该函数代表的意思是显示后多少行,可以指定显示的行数,不写n默认是前5行

  **s.unique()** 去除重复的值

  **s.notnull()** 不为空返回True,为空返回False

  **s.isnull()** 不为空返回False,为空返回True

  ```text

  lst = [1,3,5,6,10,23]

  s1 = pd.Series(lst,index=["A","B","C","D","E","F"])

  print(s1.head()) # 获取前5行

  print(s1.tail()) # 获取后5行

  print(s1.unique()) # 去除重复的值

  s1['D']=None # 修改D索引对应的值为None

  print(s1.isnull()) # 判断是否有空值

  print(s1.notnull()) # 判断是否有非空值

  ```

  结果:

屏幕快照 2021-05-06 下午5.59.48

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT