详细分析Pandas中的Series对象(附Demo)

目录

  • 1. 问题所示
  • 2. 基本知识
  • 3. API Demo
  • 4. 示例Demo
  • 5. 彩蛋

1. 问题所示

从实战上手基础知识
一开始遇到这个Bug:

TypeError: unsupported operand type(s) for -: 'str' and 'float'

后面经了解执行减法运算时发生了错误,其中一个操作数是字符串类型,另一个操作数是浮点数类型

例如:

x = "5"
y = 3.14
result = x - y  # 尝试对字符串和浮点数执行减法运算

要解决这个问题必须强转化某个类型!

但是转化好之后发现还是报错:TypeError: cannot convert the series to <class 'float'>

说明不能这么转化!

例如:

import pandas as pd# 创建一个包含字符串的Series对象
s = pd.Series(['1.2', '3.4', '5.6'])# 尝试将Series对象转换为float类型
s_float = float(s)

为了解决这个问题,先确保Series对象中的所有值都可以被转换为float类型

可以使用pd.to_numeric()函数来尝试将Series中的值转换为数值类型

示例如下:

import pandas as pd# 创建一个包含字符串的Series对象
s = pd.Series(['1.2', '3.4', '5.6'])# 尝试将Series对象转换为float类型
try:s_float = pd.to_numeric(s)print(s_float)
except ValueError as e:print("Error:", e)

截图如下:

在这里插入图片描述

以上主要是一个Demo层层递进,为了引出Series对象
实际在工作中Bug如下:

res['days'] = res['堆存期'].astype(int) - res['free'].astype(int) 
res['天数差额'] = float(res['天']) - res['days']

对应修改为:

# 将 '天' 列转换为浮点数类型
res['天'] = res['天'].astype(float)# 执行数学运算
res['days'] = res['堆存期'].astype(int) - res['free'].astype(int)
res['天数差额'] = res['天'] - res['days']

2. 基本知识

  • Pandas 库中的一种基本数据结构,它类似于带有索引的一维数组

  • 由一组数据以及与之相关联的索引组成,可以存储不同类型的数据,并提供了许多方便的方法和功能,使数据的处理和分析变得更加简单和高效

Series 对象的作用:

  • 数据存储:Series 可以存储各种类型的数据,包括整数、浮点数、字符串、日期等
  • 数据操作:提供了丰富的方法和功能,可以对数据进行快速、灵活的操作和处理,如索引、切片、过滤、排序、聚合等
  • 数据对齐:在进行数学运算或操作时,Series 对象会根据索引自动对齐数据,确保相同索引的数据进行对应操作
  • 数据可视化:可以方便地利用 Series 对象进行数据可视化,如绘制折线图、柱状图等

3. API Demo

常用API如下:

方法具体描述
pd.Series(data, index=index)创建一个 Series 对象,其中 data 可以是列表、字典、数组等,index 是可选参数,用于指定索引
series.values返回 Series 对象的值,以 NumPy 数组形式返回
series.index返回 Series 对象的索引
series.head(n)返回 Series 对象的前 n 个值,默认为前 5 个
series.tail(n)返回 Series 对象的后 n 个值,默认为后 5 个
series.astype(dtype)将 Series 对象的数据类型转换为指定类型
series.isnull() / series.notnull()返回一个布尔型的 Series 对象,用于判断是否缺失数据
series.dropna()删除缺失数据
series.fillna(value)填充缺失数据
series.unique()返回 Series 对象中的唯一值
series.nunique()返回 Series 对象中的唯一值的数量
series.describe()返回 Series 对象的描述统计信息
series.map(func)对 Series 对象的每个元素应用指定的函数

通过Demo更好的了解其接口含义

  • pd.Series(data, index=index)

创建一个 Series 对象,其中 data 可以是列表、字典、数组等,index 是可选参数,用于指定索引

下面是通过列表创建:

import pandas as pd
import numpy as np# pd.Series(data, index=index)
data_list = [1, 2, 3, 4, 5]
index_list = ['A', 'B', 'C', 'D', 'E']
series_from_list = pd.Series(data_list, index=index_list)
print("Series from list:")
print(series_from_list)

输出结果如下:

在这里插入图片描述

这是从一个字典中抽取,注意与上面的区别:

  • series_from_list 输出值 是从一个列表创建的,使用了指定的索引。
  • series_from_dict 输出值 是从一个字典创建的,字典的键被用作索引。
data_dict = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}
series_from_dict = pd.Series(data_dict)
print("\nSeries from dictionary:")
print(series_from_dict)

输出结果如下:
(输出结果与上面一样,虽然两者都创建了类似的 Series 对象,但是数据的来源和索引的指定方式略有不同)

在这里插入图片描述

这是从一个数组中抽取:

data_array = np.array([1, 2, 3, 4, 5])
index_array = ['A', 'B', 'C', 'D', 'E']
series_from_array = pd.Series(data_array, index=index_array)
print("\nSeries from array:")
print(series_from_array)

截图如下(与上面一致):

在这里插入图片描述


以下为一些属性输出
在这里插入图片描述
在这里插入图片描述

配合其属性值输出,此时本身为数组

  • 此时强转换为list:
# series.values
print("\nValues of the series:")
print(series_from_list.values)  # 输出

截图如下:

在这里插入图片描述

  • 对应查看index索引值:
# series.index
print("\nIndex of the series:")
print(series_from_list.index)

截图如下:

在这里插入图片描述

  • 返回 Series 对象的前 n 个值:
# series.head(n)
print("\nFirst 3 elements of the series:")
print(series_from_list.head(3))

截图如下:

在这里插入图片描述

  • 返回 Series 对象的后 n 个值
# series.tail(n)
print("\nLast 3 elements of the series:")
print(series_from_list.tail(3))

截图如下:

在这里插入图片描述

  • 将 Series 对象的数据类型转换为指定类型
# series.astype(dtype)
print("\nSeries with data type converted to float:")
print(series_from_list.astype(float))

截图如下:

在这里插入图片描述

  • 返回一个布尔型的 Series 对象,用于判断是否缺失数据
# series.isnull() / series.notnull()
print("\nCheck for null values:")
print(series_from_list.isnull())
print("\nCheck for non-null values:")
print(series_from_list.notnull())

截图如下:

在这里插入图片描述

  • 删除缺失数据
# series.dropna()
series_with_nan = pd.Series([1, 2, np.nan, 4, np.nan])
print("\nSeries with NaN values:")
print(series_with_nan)
print("\nSeries with NaN values dropped:")
print(series_with_nan.dropna())

截图如下:

在这里插入图片描述

  • 填充缺失数据
# series.fillna(value)
print("\nSeries with NaN values filled with 0:")
print(series_with_nan.fillna(0))

截图如下:

在这里插入图片描述

  • 返回 Series 对象中的唯一值
# series.unique()
series_with_duplicates = pd.Series([1, 2, 2, 3, 3, 4, 4])
print("\nSeries with duplicates:")
print(series_with_duplicates)
print("\nUnique values in the series:")
print(series_with_duplicates.unique())

截图如下:

在这里插入图片描述

  • 返回 Series 对象中的唯一值的数量
# series.nunique()
print("\nNumber of unique values in the series:")
print(series_with_duplicates.nunique())

截图如下:

在这里插入图片描述

  • 返回 Series 对象的描述统计信息
# series.describe()
print("\nDescription of the series:")
print(series_with_duplicates.describe())

截图如下:

在这里插入图片描述

  • 对 Series 对象的每个元素应用指定的函数
# series.map(func)
def square(x):return x ** 2print("\nSeries with each element squared:")
print(series_from_list.map(square))

截图如下:

在这里插入图片描述

4. 示例Demo

上述的API可能还有些抽象,放在实战Demo中加深印象:

import pandas as pd# 创建学生分数的字典
student_scores = {'Alice': 85, 'Bob': 72, 'Charlie': 90, 'David': 65, 'Emily': 88}# 创建 Series 对象
scores_series = pd.Series(student_scores)# 输出 Series 对象
print("学生分数 Series 对象:")
print(scores_series)# 输出 Series 对象的值和索引
print("\nSeries 对象的值:")
print(scores_series.values)
print("\nSeries 对象的索引:")
print(scores_series.index)# 输出前两个学生的分数
print("\n前两个学生的分数:")
print(scores_series.head(2))# 输出后两个学生的分数
print("\n后两个学生的分数:")
print(scores_series.tail(2))# 将分数的数据类型转换为浮点数
scores_series_float = scores_series.astype(float)
print("\n转换数据类型为浮点数后的 Series 对象:")
print(scores_series_float)# 判断是否有缺失数据
print("\n判断是否有缺失数据:")
print(scores_series.isnull())# 输出分数不为空的学生分数
print("\n分数不为空的学生分数:")
print(scores_series.dropna())# 填充缺失数据为0
scores_series_fillna = scores_series.fillna(0)
print("\n填充缺失数据为0后的 Series 对象:")
print(scores_series_fillna)# 输出学生分数的描述统计信息
print("\n学生分数的描述统计信息:")
print(scores_series.describe())# 对学生分数应用一个函数,比如加分10分
def add_bonus(score):return score + 10scores_series_bonus = scores_series.map(add_bonus)
print("\n每个学生的分数加10分后的 Series 对象:")
print(scores_series_bonus)

对应的结果截图如下:

在这里插入图片描述

以及

在这里插入图片描述

5. 彩蛋

忘记补充一个知识点了,切片同样也可运用在该对象中

import pandas as pd# 创建一个 Series 对象
data = {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}
index = ['A', 'B', 'C', 'D', 'E']
series = pd.Series(data, index=index)# 输出原始的 Series 对象
print("原始的 Series 对象:")
print(series)# 切片操作:选取索引为'B'到'D'之间的元素
sliced_series = series['B':'D']# 输出切片后的 Series 对象
print("\n切片后的 Series 对象:")
print(sliced_series)

截图如下:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/263882.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java中PDF文件传输有哪些方法?

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

2-22 方法、面向对象、类、JVM内存、构造方法

文章目录 方法的重载面向对象类、属性和方法成员变量默认值属性JVM简单内存分析栈空间堆空间 构造方法执行过程构造器注意点 方法的重载 一个类中名称相同&#xff0c;但是参数列表不同的方法 参数列表不同是指&#xff1a; 形参类型形参个数形参顺序 面向对象 field —— …

数据库应用:Windows 部署 MySQL 8.0.36

目录 一、实验 1.环境 2.Windows 部署 MySQL 8.0.36 3.Windows配置环境变量 4.Navicat链接MySQL 二、问题 1.安装MySQL 报错 一、实验 1.环境 &#xff08;1&#xff09;主机 表1 主机 主机软件版本IP备注WindowsMySQL8.0.36localhost 2.Windows 部署 MySQL 8.0.…

后端程序员入门react笔记——react的diff算法(三)

diffing算法 虚拟dom 我们知道&#xff0c;react里面操作的都是虚拟dom&#xff0c;最后经过render渲染为真正的dom&#xff0c;那么为什么要提出虚拟dom这个概念呢&#xff1f;其实就是将逻辑和视图区分开&#xff0c;react的虚拟dom&#xff0c;就相当于mvc的c&#xff0c;…

SpringMVC 学习(五)之域对象

目录 1 域对象介绍 2 向 request 域对象共享数据 2.1 通过 ServletAPI (HttpServletRequest) 向 request 域对象共享数据 2.2 通过 ModelAndView 向 request 域对象共享数据 2.3 通过 Model 向 request 域对象共享数据 2.4 通过 map 向 request 域对象共享数据 2.5 通过…

用Python实现创建十二星座数据分析图表

下面小编提供的代码中&#xff0c;您已经将pie.render()注释掉&#xff0c;并使用了pie.render_to_file(十二星座.svg)来将饼状图渲染到一个名为十二星座.svg的文件中。这是一个正确的做法&#xff0c;如果您想在文件中保存图表而不是在浏览器中显示它。 成功创建图表&#xf…

荣耀手机如何开启地震预警功能

1、打开荣耀手机&#xff0c;进入“设置”&#xff0c;在搜素栏输入“地震”。 2、进入“安全-应急预警通知”功能栏。 3、开启“地震预警”。 4、查看“预警演示教程”。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/e207e356bb634c11adf926c6a53e48cc.png…

机器学习打分函数在分子对接中的应用系列-GB_Score

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、GB-Score是什么&#xff1f;二、文献复现 -训练和验证环境1. GB score验证虚拟环境的配置2. Usage1- Preparing ligand and protein file2- Generating features3 - Repeat and extend current…

基础复习(IDA调试器)

1.选择IDA调试后端 在顶部有一个下拉菜单&#xff0c;选择调试器后端位置 很多用户实际上使用的是Windows版本的IDA&#xff0c;该IDA可以直接调试Windows下32bit和64bit的程序 2.本地调试启动方法 载入IDA后&#xff0c;程序实际上在对程序内置的一个字符串进行base64解码…

C++从入门到精通 第十七章(终极案例)

写在前面&#xff1a; 本系列专栏主要介绍C的相关知识&#xff0c;思路以下面的参考链接教程为主&#xff0c;大部分笔记也出自该教程&#xff0c;笔者的原创部分主要在示例代码的注释部分。除了参考下面的链接教程以外&#xff0c;笔者还参考了其它的一些C教材&#xff08;比…

linux系统git常规操作

Git命令常规操作 常用命令说明常用操作示意图文件的状态变化周期 添加文件跟踪文件会添加到.git的隐藏目录由工作区提交到本地仓库查看git的状态提交后的git目录状态 删除文件重命名暂存区数据查看历史记录还原历史数据还原未来数据标签使用对比数据 常用命令说明 命令命令说明…

【计算机网络】深度学习使用应用层的HTTP协议

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【计算机网络】深度学习使用应用层的HTTP协议 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 文章目录 一:HTTP是什么二:HTTP请求1.HTTP请求的组成2.HTTP请求的方法…

安卓开发:挑战每天发布一个封装类02--Wav录音封装类AudioChannel 1.0

简介 库名称&#xff1a;AudioChannel 版本:1.0 由于项目需求录音并base64编码存到服务器中&#xff0c;就顺手改装了一个别人的封装类 原封装类地址:Android AudioRecord音频录制wav文件输出 - 简书 (jianshu.com) 描述&#xff1a;此封装类基于AudioRecord实现wav的音频…

再探二分法

推荐阅读 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;一&#xff09; 智能化校园&#xff1a;深入探讨云端管理系统设计与实现&#xff08;二&#xff09; 文章目录 推荐阅读二分查找题目思路解法左闭右闭式写法左闭右开式写法 二分查找 题目 给定一个…

自动驾驶---行业发展及就业环境杂谈

进入21世纪以来&#xff0c;自动驾驶行业有着飞速的发展&#xff0c;自动驾驶技术&#xff08;L2---L3&#xff09;也逐渐落地量产到寻常百姓家。虽然最早期量产FSD的特斯拉有着深厚的技术积累&#xff0c;但是进入2010年以后&#xff0c;国内的公司也逐渐发展起来自己的自动驾…

Kotlin多线程

目录 线程的使用 线程的创建 例一&#xff1a;创建线程并输出Hello World Thread对象的用法 start() join() interrupt() 线程安全 原子性 可见性 有序性 线程锁 ReentrantLock ReadWriteLock 线程的使用 Java虚拟机中的多线程可以1:1映射至CPU中&#xff0c;即…

在Node.js中如何实现用户身份验证和授权

当涉及到构建安全的应用程序时&#xff0c;用户身份验证和授权是至关重要的一环。在Node.js中&#xff0c;我们可以利用一些流行的库和技术来实现这些功能&#xff0c;确保我们的应用程序具有所需的安全性。本篇博客将介绍如何在Node.js中实现用户身份验证和授权。 用户身份验…

留存测试数据,Apipost接口用例详解

接口用例可以在不影响源接口数据的情况下对接口添加多个用例&#xff0c;方便测试并保存测试数据。 创建用例 左侧目录选择接口后进入接口用例页面&#xff0c;点击添加用例 在弹出窗口中修改各种参数。如登录接口&#xff0c;可修改用户名为空&#xff0c;并添加断言。 执行…

图解KMP算法

目录 1.最长公共前后缀1.1前缀1.2后缀1.3最长公共前后缀 2、KMP算法过程2.1例子12.2例子22.3Python代码&#xff1a;2.4next数组的计算过程 1.最长公共前后缀 1.1前缀 前缀说的是一个字符串除了最后一个字符以外&#xff0c;所有的子串都算是前缀。 前缀字符串&#xff1a;A…

Apache celeborn 安装及使用教程

1.下载安装包 https://celeborn.apache.org/download/ 测0.4.0时出现https://github.com/apache/incubator-celeborn/issues/835 2.解压 tar -xzvf apache-celeborn-0.3.2-incubating-bin.tgz 3.修改配置文件 cp celeborn-env.sh.template celeborn-env.shcp log4j2.xml.…