Pandas Series 的独特用法与功能

news/2025/3/6 9:48:51/文章来源:https://www.cnblogs.com/nxhujiee/p/18754327

关于Pandas Series的详细指南

# Pandas Series 的独特用法与功能Pandas 的 `Series` 是其核心数据结构之一,结合了数组的快速操作和字典的灵活索引。以下是其独特用法和功能的详细解析:## 1. 灵活的索引系统
- **多层级索引**:支持元组索引(类似 NumPy)或 `MultiIndex`,便于处理复杂数据关系。```pythons = pd.Series([1, 2, 3], index=[('a', 0), ('a', 1), ('b', 0)])s[('a', 0)]  # 输出 1
  • 自定义索引对象:索引可以是任意可哈希类型(如日期、字符串、自定义类)。
    class MyClass:def __init__(self, value):self.value = values = pd.Series([10, 20], index=[MyClass(1), MyClass(2)])
    

2. 强大的数据对齐能力

  • 自动对齐索引:运算时会根据索引自动对齐,未匹配的位置填充 NaN
    s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
    s2 = pd.Series([4, 5], index=['b', 'd'])
    s1 + s2  # a:1, b:7, c:3, d:5 (其他为NaN)
    

3. 矢量化的数值计算

  • 内置数学运算符:直接对整个 Series 进行加减乘除等操作。
    s = pd.Series([1, 2, 3])
    s ** 2  # 输出 [1, 4, 9]
    
  • 与 NumPy 集成:可直接调用 NumPy 函数进行底层运算。
    import numpy as np
    s = pd.Series([1, 2, 3])
    np.exp(s)  # 对每个元素取指数
    

4. 布尔索引与筛选

  • 快速条件过滤
    s = pd.Series([10, 20, 30, 40])
    s[s > 25]  # 输出 30, 40
    
  • 链式筛选:支持连续条件过滤并自动处理缺失值。
    s[(s >= 10) & (s % 2 == 0)]  # 输出 20, 40
    

5. 时间序列处理

  • 内置时间序列支持
    dates = pd.date_range('2020-01-01', periods=5)
    ts = pd.Series([1, 2, 3, 4, 5], index=dates)
    ts.resample('W').sum()  # 按周求和
    

6. 数据转换与映射

  • apply() 方法:对每个元素应用自定义函数。
    s = pd.Series(['apple', 'banana', 'cherry'])
    s.apply(lambda x: len(x))  # 输出各单词长度
    
  • map() 方法:将索引或值映射到新值。
    s = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
    s.map({'a': 'A', 'b': 'B'})  # 将索引映射为大写字母
    

7. 分组与聚合

  • groupby() 结合聚合函数
    s = pd.Series([10, 20, 30, 40], index=['a', 'a', 'b', 'b'])
    s.groupby(s.index).mean()  # 按索引分组求均值
    

8. 缺失值处理

  • 自动识别 NaN:支持缺失值且运算时会自动填充 NaN
    s = pd.Series([1, None, 3])
    s.fillna(0)  # 将缺失值替换为0
    

9. 高效的存储与查询

  • 内存优化:内部使用 NumPy 数组存储,内存占用低。
  • 快速查询:通过索引直接访问元素的复杂度为 O(1)。

10. 与 DataFrame 的交互

  • 行列转换Series 可视为单列的 DataFrame,反之亦然。
    df = s.to_frame()  # 转换为单列的 DataFrame
    s_from_df = df.squeeze()  # 从单列 DataFrame 转回 Series
    

11. 自定义属性与方法

  • 扩展功能:可通过 attrs 添加元数据,或通过 plot 方法直接绘图。
    s.attrs['description'] = '这是一组示例数据'
    s.plot(kind='bar')  # 绘制柱状图
    

总结

Series 的独特之处在于其 混合了数组的速度、字典的灵活性和 SQL 的数据操作思维,尤其适合快速清洗、转换和分析一维数据。在实际开发中,合理利用其索引对齐、矢量化运算和时间序列功能,能显著提升数据处理效率。

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

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

相关文章

Web前端入门第 15 问:学会查阅 HTML 文档

HELLO,这里是大熊学习前端开发的入门笔记。 本系列笔记基于 windows 系统。HTML的魔法世界,多姿多彩,千变万化。 授人以鱼不如授人以渔,文档阅读是开发者必备的技能,毕竟代码出现 BUG,也要知道为什么会出现 BUG 吧。 就像车辆使用手册一样,多翻翻使用手册,总会发现一些…

Web前端入门第 12 问:HTML 常用属性一览

HELLO,这里是大熊学习前端开发的入门笔记。 本系列笔记基于 windows 系统。 HTML 常用属性大约 70 个,是否又头大了?脸上笑嘻嘻,心里嘛...嘿嘿... 温馨提示:属性不用死记硬背,多练多写慢慢就记住了。 全局常用属性 全局属性为 HTML 元素的通用属性,可以在任何元素上使用…

Web前端入门第 8 问:HTML !DOCTYPE 申明有何用处?如果没有此申明有什么问题?

HELLO,这里是大熊学习前端开发的入门笔记。 本系列笔记基于 windows 系统。先电脑端浏览器打开任何一个网页,比如百度。 再用 ctrl + u 快捷键即可查看源码,瞅瞅第一行代码,是不是都是 <!DOCTYPE xxx> 开头。 是否好奇这这行代码有嘛用? DOCTYPE 语法规则声明必须是…

Web前端入门第 9 问:HTML 块级元素,内联块元素,内联元素三者有什么区别?

HELLO,这里是大熊学习前端开发的入门笔记。 本系列笔记基于 windows 系统。HTML 中的元素根据其默认的 显示类型 主要分为三类:块级元素、内联元素 和 内联块元素。 它们的核心区别在于布局行为和样式控制的支持程度。 块级元素 块级元素(Block Elements)是指在 HTML 中以块…

Easyexcel(1-注解使用)

EasyExcel 是阿里巴巴开源的一个轻量级 Excel 操作框架,专为 Java 开发者设计,支持读取和写入 Excel 文件。它使用注解来简化数据解析和导出工作,特别适用于复杂的 Excel 文件结构和大数据量处理。版本依赖 <dependency><groupId>com.alibaba</groupId>&l…

MES收料批号接口,列名FID无效

原因:主键字段名默认设置了FID,如下图。 解决:将主键字段名修改为实际的主键字段名称即可。

数据处理神器!一款强大的数据处理命令行工具!

dasel —— 一款用于处理和操作多种数据格式的命令行工具,支持对 JSON、YAML、TOML、XML 和 CSV 格式数据进行查询、修改、添加、删除和转换。大家好,我是 Java陈序员。 我们在日常开发中,经常会操作使用一些 JSON、YAML、XML 等格式的数据,对数据进行增删改查和转换操作。…

WEBAPI搜索不到MES收料批号

原因:MES收料批号没有发布菜单 解决:发布菜单后可以正常搜到。

linux 中sed命令删除指定分割符及其最后的一个域

001、[root@PC1 test2]# ls a.txt [root@PC1 test2]# cat a.txt ## 测试数据 W-URI-20 W-HYB-21 aaa fff-ddd-eee ZOM-1 ZOM-9 AWA-A-1 AWA-A-6 [root@PC1 test2]# sed s/-\S[^-]*$// a.txt ## 命令 W-URI W-HYB aaa fff-ddd ZOM ZOM AWA-A AWA-A。

vue+echarts 循环生成多个图表

借鉴网上开源分享 https://blog.csdn.net/weixin_49668076/article/details/114263986<template><!-- 实时数据图表 --><div class="main-container"><el-row class="totalEchart"><el-col :span="8" :key="ind…

智能合约学习笔记-进阶合约FundMe

收集投资 获取ETH/USD兑换rate 复制该地址页面内初始化 精度从这查找(precision) 表格中的 DEC(十进制)列显示了该数据流的精度,即 8。这意味着我们应该执行以下操作:return ethAmount * uint256(getChainlinkDataFeedLatestAnswer()) / (10 ** 8);coin和token 君不见…

Solidity学习笔记--基础语法

定义约定俗成:变量小写开头,类型或合约大写开头基础数据类型booluint256 无符号整型,代表一个不允许负数的整数。int256 有符号整型,代表一个能取到正数和负数的整数。 bytes32stringaddress合约:也可以作为数据类型去使用https://binschool.org/solidity-basic/soli…