从本文开始介绍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. 重磅:FPGA实现MIPI DSI4线720P

    1. 液晶屏概述 显示屏LCD MIPI DSI4 lane,支持分辨率720*1280,60HZ彩色显示.用于对接国产GOWIN的NR-9C的开发板和LATTICE的CROSSLINK开发板,显示M ...

  2. 浅谈TypeScript对业务可维护性的影响

    前言 笔者认为, TypeScript是服务于业务的, 核心就是提高代码的可维护性. TypeScript是把双刃剑, 如果类型系统使用的不好, 反而会阻碍开发, 甚至最后就变成了anyScript. ...

  3. ES6---new Promise()使用方法

    2015年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范.作为ES6中最重要的特性之一,我们有必要掌握并理解透彻.本文将由浅到深,讲解Promise ...

  4. (节流)js防止重复频繁点击或者点击过快方法

    1.方法一:用定时器定时,没跑完定时器,点击按钮无效 <script> var isClick = true; $("button").on("click&q ...

  5. 第四課-Channel Study File Reader & File Writer

    示例描述:从数据库中读取数据并过滤转换为HL7并存放到指定目录;然后读取目录中的HL7文件转换为txt文本并存放到指定目录. 首先在F:\MirthConnect\Test目录下创建Out目录存放输出 ...

  6. 全链路灰度新功能:MSE 上线配置标签推送

    简介: 本文介绍了全链路灰度场景给配置管理带来的问题,介绍了 MSE 针对这一场景的解决方案,并通过实践的方式展示了配置标签推送的使用流程.后续,MSE 还会针对配置治理做更多的探索,帮助用户更好地解 ...

  7. 携手数字人、数字空间、XR平台,阿里云与伙伴共同建设“新视界”

    ​简介:2022阿里云视觉计算私享会:加速虚拟与现实的交互. 引言:2022年互联网行业里XR.数字孪生.虚拟现实等领域再次"翻红".新旧概念频出,不少人相信这些技术将给当下的互联 ...

  8. 阿里云拨测:主动探测Web应用质量,助力提升用户体验

    简介: 阿里云拨测是一种针对互联网应用(Web页面.网络链路等)进行应用性能和用户体验监测的服务,无需嵌码即可为云上用户提供开箱即用的企业级主动拨测式应用监测解决方案. 随着中国数字化经济的蓬勃发展, ...

  9. 从no-code到low-code:企业级hpaPaaS的未来

    简介: 本文将简单谈一谈基于 no-code > low-code > pro-code 渐进式思路的研发体系. 引子 宜搭负责人骁勇给我举过一个例子,我们小时候逢年过节穿的衣服,都是去裁 ...

  10. 如何开发 Node.js Native Add-on?

    简介: 来一起为 Node.js 的 add-on 生态做贡献吧~ 作者 | 吴成忠(昭朗) 这篇文章是由 Chengzhong Wu (@legendecas),Gabriel Schulhof ( ...