从本文开始介绍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. CDN基础知识

    什么是CDN? CDN的全称是Content Delivery Network,即内容分发网络.其实现是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络" ...

  2. SURE:增强不确定性估计的组合拳,快加入到你的训练指南吧 | CVPR 2024

    论文重新审视了深度神经网络中的不确定性估计技术,并整合了一套技术以增强其可靠性.论文的研究表明,多种技术(包括模型正则化.分类器改造和优化策略)的综合应用显着提高了图像分类任务中不确定性预测的准确性 ...

  3. Django框架——ajax补充、多对多三种创建、序列化组件、批量操作数据、分页器

    ajax补充说明 主要是针对回调函数args接收到的响应数据 1.后端request.is_ajax() 用于判断当前请求是否由ajax发出 2.后端返回的三板斧都会被args接收不再影响整个浏览器页 ...

  4. 如何解决打不开Microsoft Store的痛处?

    换了机房后,我最喜欢的计算器和画图3d没有了,网上的方法都行不通,怎么办? 第一步,在百度上搜索你想安装的东西,例如我搜索的画图3d,就会有这个链接. 然后,把这个链接复制到这个网站的搜索框中,就会有 ...

  5. 剑指offer42(Java)-连续子数组的最大和(简单)

    题目: 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4 ...

  6. 轻松搭建基于 Serverless 的 ThinkPHP 应用

    ThinkPHP 是什么? ThinkPHP 是一个免费开源的,快速.简单的面向对象的轻量级 PHP 开发框架,是为了敏捷 WEB 应用开发和简化企业应用开发而诞生的.ThinkPHP 从诞生以来一直 ...

  7. 更便捷:阿里云DCDN离线日志转存全新升级

    简介: 1月6日,阿里云CDN年度产品升级发布会中,阿里云CDN产品专家邓建伟宣布DCDN离线日志转存全新升级,并对离线日志转存方案的价值.应用及使用进行了详细解读. 在日常CDN加速服务过程中会产生 ...

  8. [Caddy2] URL访问路径的重定向和重写规则 (redir/rewrite 指令)

    当我们在规划网站路径时,为了保留搜索引擎收录 避免404的同时做到升级,常用到重定向跳转和URL重写. 重定向(redirect) 在 Caddy 中为 redir 指令. https://caddy ...

  9. WPF 漂亮的现代化控件 新 ModernWPF 界面库

    这是一个在 GitHub 上完全开源的库,有十分漂亮的界面,整个都是 Win10 风,界面部分和默认 UWP 相近 这个库支持了 .NET Framework 4.5 和以上的版本,以及 .NET C ...

  10. 一个随时跟新的css库

    1.一个选中阴影的样式 .select border: 1px solid #4d92f7; box-shadow: 0px 0px 15px rgba(0,50,122,.15); 2.一个三栏渐变 ...