从本文开始介绍pandas的相关知识。

pandas含有是数据分析工作变得更快更简单的高级数据结构和操作工具,是基于numpy构建的。

本章节的代码引入pandas约定为:import pandas as pd,另外import numpy as np也会用到。

官方介绍:pandas - Python Data Analysis Library (pydata.org)

pandas数据结构介绍:主要有两种:Series和DataFrame。本文对Series进行简单介绍。

1 Series介绍

官方文档:pandas.Series — pandas 1.3.4 documentation (pydata.org)

1.1简介

Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据结构)以及一组与之相关的数据标签(即索引)组成。

1 >>> obj = pd.Series([4, 7, -5, 3])
2 >>> obj
3 0 4
4 1 7
5 2 -5
6 3 3
7 dtype: int64

1.2表现形式

Series的字符串表现形式为:索引在左边,值在右边。若没有为数据指定索引,则会自动创建一个0到N-1(N为数据的长度)的整数型索引。可通过Series的values和index属性获取其数组表示形式和索引对象。

 1 >>> obj
2 0 4
3 1 7
4 2 -5
5 3 3
6 dtype: int64
7 >>>
8 >>> obj.index
9 RangeIndex(start=0, stop=4, step=1)
10 >>> obj.values
11 array([ 4, 7, -5, 3], dtype=int64)
12 >>>

如果希望所创建的Series带有一个可以对各个数据点进行标记的索引:

1 >>> obj2 = pd.Series([4, 5, 7, -3], index=['a', 'b', 'c', 'd'])
2 >>> obj2
3 a 4
4 b 5
5 c 7
6 d -3
7 dtype: int64
8 >>> obj2.index
9 Index(['a', 'b', 'c', 'd'], dtype='object')

也可以通过字典来创建Series。如果只传入一个字典,则结果Series中的索引就是原字典的键(有序排列)。

 1 >>> sdata = {'a':100, 'b':200, 'c':300}
2 >>> obj3 = pd.Series(sdata)
3 >>> obj3
4 a 100
5 b 200
6 c 300
7 dtype: int64
8 >>> index = ['a', 'd', 'c']
9 >>> obj4 = pd.Series(sdata, index=index)
10 >>> obj4
11 a 100.0
12 d NaN
13 c 300.0
14 dtype: float64
15 >>>

上面的例子中,索引为’d’的值为NaN,即“非数字”(not a number)。在pandas中,它用于表示确实或者NA值,使用缺失或NA表示缺失数据,另外isnull和notnull函数可用于检测缺失数据。

 1 >>> obj4
2 a 100.0
3 d NaN
4 c 300.0
5 dtype: float64
6 >>>
7 >>> pd.isnull(obj4)
8 a False
9 d True
10 c False
11 dtype: bool
12 >>> pd.notnull(obj4)
13 a True
14 d False
15 c True
16 dtype: bool

1.3索引方式

与普通NumPy数组相比,可以通过索引的方式选取Series中的单个或一组值。

1 >>> obj2['a']
2 4
3 >>> obj2[['a', 'b', 'c']]
4 a 4
5 b 5
6 c 7
7 dtype: int64
8 >>>

还可以将Series看作一个定长的有序字典,因为它是索引值到数据值的一个映射。

1 >>> 'b' in obj2
2 True
3 >>> 'e' in obj2
4 False

series的索引可以通过赋值的方式就地修改。

 1 >>> obj
2 0 4
3 1 7
4 2 -5
5 3 3
6 dtype: int64
7 >>> obj.index = ['a', 'b', 'c', 'd']
8 >>> obj
9 a 4
10 b 7
11 c -5
12 d 3
13 dtype: int64
14 >>>

1.4基本运算

NumPy数组运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)都会保留索引和值之间的链接。

 1 >>> obj2
2 a 4
3 b 5
4 c 7
5 d -3
6 dtype: int64
7 >>> obj2[obj2 > 0]
8 a 4
9 b 5
10 c 7
11 dtype: int64
12 >>> obj2 * 2
13 a 8
14 b 10
15 c 14
16 d -6
17 dtype: int64
18 >>> np.exp(obj2)
19 a 54.598150
20 b 148.413159
21 c 1096.633158
22 d 0.049787
23 dtype: float64
24 >>>

1.5其他

对应用而言,Series最重要的一个功能是:它在算术运算中会自动对齐不同索引的数据。这个功能在后面进行讲解。

Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切。

 1 >>> obj4
2 a 100.0
3 d NaN
4 c 300.0
5 dtype: float64
6 >>> obj4.name = 'n1'
7 >>> obj4.index.name = 'pharse'
8 >>> obj4
9 pharse
10 a 100.0
11 d NaN
12 c 300.0
13 Name: n1, dtype: float64

pands基础--数据结构:Series的更多相关文章

  1. 【UOJ#228】基础数据结构练习题 线段树

    #228. 基础数据结构练习题 题目链接:http://uoj.ac/problem/228 Solution 这题由于有区间+操作,所以和花神还是不一样的. 花神那道题,我们可以考虑每个数最多开根几 ...

  2. 理解 OpenStack + Ceph (4):Ceph 的基础数据结构 [Pool, Image, Snapshot, Clone]

    本系列文章会深入研究 Ceph 以及 Ceph 和 OpenStack 的集成: (1)安装和部署 (2)Ceph RBD 接口和工具 (3)Ceph 物理和逻辑结构 (4)Ceph 的基础数据结构 ...

  3. hrbustoj 1551:基础数据结构——字符串2 病毒II(字符串匹配,BM算法练习)

    基础数据结构——字符串2 病毒IITime Limit: 1000 MS Memory Limit: 10240 KTotal Submit: 284(138 users) Total Accepte ...

  4. hrbustoj 1545:基础数据结构——顺序表(2)(数据结构,顺序表的实现及基本操作,入门题)

    基础数据结构——顺序表(2) Time Limit: 1000 MS    Memory Limit: 10240 K Total Submit: 355(143 users) Total Accep ...

  5. 关于SparkMLlib的基础数据结构 Spark-MLlib-Basics

    此部分主要关于MLlib的基础数据结构 1.本地向量 MLlib的本地向量主要分为两种,DenseVector和SparseVector,顾名思义,前者是用来保存稠密向量,后者是用来保存稀疏向量,其创 ...

  6. Vlc基础数据结构记录

    1.  Vlc基础数据结构 hongxianzhao@hotmail.com 1.1  基础数据结构 struct vlc_object_t,相关文件为src\misc\objects.c. 定义为: ...

  7. 基础数据结构之(Binary Trees)

    从头开始刷ACM,真的发现过去的很多漏洞,特别越是基础的数据结构,越应该学习得精,无论是ACM竞赛,研究生考试,还是工程上,对这些基础数据结构的应用都非常多,深刻理解非常必要.不得不说最近感触还是比较 ...

  8. 02. Pandas 1|数据结构Series、Dataframe

    1."一维数组"Series Pandas数据结构Series:基本概念及创建 s.index  . s.values # Series 数据结构 # Series 是带有标签的一 ...

  9. uoj #228. 基础数据结构练习题 线段树

    #228. 基础数据结构练习题 统计 描述 提交 自定义测试 sylvia 是一个热爱学习的女孩子,今天她想要学习数据结构技巧. 在看了一些博客学了一些姿势后,她想要找一些数据结构题来练练手.于是她的 ...

  10. Redis——基础数据结构

    Redis提供了5种基础数据结构,分别是String,list,set,hash和zset. 1.String Redis所有的键都是String.Redis的String是动态字符串,内部结构类似J ...

随机推荐

  1. 使用 Docker 部署 Draw.io 在线流程图系统

    1)介绍 Draw.io GitHub:https://github.com/jgraph/drawio Draw.io 是一款开源的绘制流程图的工具,拥有大量免费素材和模板.程序本身支持中文在内的多 ...

  2. 力扣153(java&python)-寻找旋转排序数组中的最小值(中等)

    题目: 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组.例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以 ...

  3. 力扣69(java&python)-x的平方根(简单)

    题目: 给你一个非负整数 x ,计算并返回 x 的 算术平方根 . 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 . 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0. ...

  4. 力扣500(java&python)-键盘行(简单)

    题目: 给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词.键盘如下图所示. 美式键盘 中: 第一行由字符 "qwertyuiop" 组成.第 ...

  5. 阿里云2020上云采购季,你的ECS买好了吗?

    阿里云2020上云采购季,超级品类日,天天有爆款. 今日爆款推荐:云服务器. 重磅推荐两款,限时抢购. 新品共享型s6: 企业级共享型n4: 想看更多云产品,来阿里云采购季: https://www. ...

  6. Python编程的若干个经典小技巧

    1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例: x,y= 10,20 print(x,y) x,y= y,x print(x,y) # ...

  7. [FAQ] FinalCutPro 事件如何支持多个时间线

    左侧是建立的事件,右侧是默认的项目(也就是时间线上的剪辑项目). 如果需要这个事件里再弄一个时间线(比如剪辑另一个版本),左侧的事件上右击新建项目: 另一个项目,在这上面可以继续时间线的创作,等于是选 ...

  8. dotnet 已知问题 使用 Directory.EnumerateXXX 方法枚举 C 盘根路径可能错误的问题

    在 dotnet 里面,可以使用 Directory.EnumerateXXX 系列方法进行枚举文件或文件夹.在准备枚举驱动器根路径的文件或文件夹时,可能获取到错误的路径.错误的步骤在于传入的是如 C ...

  9. dotnet 提升 ToUpper 性能

    在应用软件启动过程中,客户端应用软件是对性能敏感的.比如在解析命令行参数的时候,有时候需要进行字符串处理逻辑.一般来说命令行参数都是语言文化无关的,在需要进行全大写或全小写转换过程中,采用 ToUpp ...

  10. IIncrementalGenerator 解析 ValueTuple 的定义

    本文将告诉大家如何在分析器里面解析代码里面对于 ValueTuple 的定义,包括如何获取 ValueTuple 里面的 Item 的类型和命名 开始之前先创建一个用来被分析的项目,在这个项目里面定义 ...