pandas——数据结构

一、series

(一)创建series

import pandas as pd#1.使用列表或数组创建Series
# 使用列表创建Series,索引默认从0开始
s1 = pd.Series([1, 2, 3])
print(s1)
# 使用列表和自定义索引创建Series
s2 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
print(s2)# 2.使用字典创建Series
# 使用字典创建Series,字典的键成为索引
s3 = pd.Series({'a': 1, 'b': 2, 'c': 3})
print(s3)#3.使用标量值创建Series
# 使用标量值创建Series,所有元素都是相同的值
s4 = pd.Series(5, index=['a', 'b', 'c'])
print(s4)#4.使用pd.Series构造函数的参数
# 使用data参数和index参数创建Series
s5 = pd.Series(data=[1, 2, 3], index=['a', 'b', 'c'])
print(s5)print('=============================================')
#5.创建具有时间索引的Series
# 创建一个时间序列
s6 = pd.Series([1, 2, 3], index=pd.date_range('20230101', periods=3))
print(s6)#6.创建具有特定数据类型的Series
# 创建一个指定数据类型的Series
s7 = pd.Series([1, 2, 3], dtype='float32')
print(s7)#7.创建具有缺失值的Series
# 创建一个包含缺失值的Series
s8 = pd.Series([1, None, 3], index=['a', 'b', 'c'])
print(s8)#8.使用range对象创建Series
# 使用range对象创建Series
s9 = pd.Series(range(3), index=['a', 'b', 'c'])
print(s9)#9.创建空的Series
# 创建一个空的Series
s10 = pd.Series([], index=pd.Index([], dtype='object'))
print(s10)#10.创建具有复杂索引的Series
# 创建一个具有多级索引(MultiIndex)的Series
index = pd.MultiIndex.from_tuples([('A', 1), ('A', 2), ('B', 1), ('B', 2)], names=['letter', 'number'])
s11 = pd.Series([1, 2, 3, 4], index=index)
print(s11)

278e57cc41e14adc83a8cbed025190bb.png

33a8c3ceedb74e4e92a6d2c39917a776.png

(二)series—索引

1.索引的创建和默认值

  • 当创建一个Series时,如果不指定索引,Pandas会默认创建一个从0开始的整数索引。
  • 可以指定一个索引列表来创建Series,这样索引就与数据列表中的元素一一对应。

2.索引的类型

  • 索引可以是整数、字符串、日期或任何可哈希的对象。
  • Series的索引不必是连续的,也不要求索引值是唯一的。

3.索引的访问

  • 可以通过索引标签直接访问Series中的元素。
  • 使用.loc[].iloc[]方法可以基于标签和整数位置分别进行索引。

4.索引的修改

  • 可以给已存在的Series添加或修改索引。
  • 使用.reindex()方法可以根据新的索引列表重排Series

5.索引的重要性

  • 索引对于数据的选择、过滤和数据对齐至关重要。
  • 在进行数据聚合、分组操作时,索引标签可以提供额外的上下文信息。

6.时间序列索引

  • Series的索引是日期类型时,Pandas提供了丰富的时间序列功能,如重采样、时间窗口函数等。

7.索引的重置

  • 使用.reset_index()方法可以将Series的索引重置为默认的整数索引。

8.索引的删除

  • 可以通过.drop()方法删除具有特定索引标签的元素。

9.索引的检查和验证

  • 使用.is_monotonic.is_unique属性可以检查索引是否是单调递增或递减的,以及索引值是否唯一。

10.多级索引(MultiIndex)

  • Series可以拥有多级索引(也称为层次化索引),这允许Series拥有多个维度的索引,类似于二维表中的行和列。

11.索引的复制和设置

  • 使用.index属性可以获取索引的值,也可以设置新的索引值。
  • 使用.copy()方法可以创建一个索引的副本。

示例代码:

import pandas as pd# 创建一个带有自定义索引的Series
data = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(data)# 访问索引
print(data.index)# 通过索引标签访问数据
print(data['a'])# 使用.loc[]访问数据
print(data.loc['a'])# 修改索引
data.index = ['x', 'y', 'z', 'w']
print(data)# 重置索引
reset_data = data.reset_index()
print(reset_data)# 删除索引
data = data.drop('x')
print(data)

cdcdf13537534d6e97c330a78495acf2.png

(三)series—切片

import pandas as pd'''
1.基本切片
使用冒号 : 可以进行切片操作,语法为 series[start:stop:step]。
start 是切片的起始索引(包含),stop 是终止索引(不包含),step 是步长。
'''
print('1.基本切片')
s1 = pd.Series([1, 2, 3, 4, 5, 6])
print(s1[1:4])  # 输出第二个到第四个元素(包含第二个,不包含第四个)
'''
2.使用标签进行切片
如果Series使用的是标签索引,可以直接使用标签进行切片。
'''
print('2.使用标签进行切片')
s = pd.Series([1, 2, 3, 4, 5, 6], index=['a', 'b', 'c', 'd', 'e', 'f'])
print(s['b':'d'])  # 输出索引为'b'到'd'的元素
'''
3.使用位置进行切片
使用 .iloc[] 可以根据位置进行切片,它接受整数索引。
'''
print('3.使用位置进行切片')
print(s.iloc[1:4])  # 输出位置为1到3的元素(包含第一个,不包含第四个)
'''
4.结合布尔索引进行切片
可以使用布尔序列来筛选数据,这在Pandas中称为布尔索引。
'''
print('4.结合布尔索引进行切片')
print(s[s > 3])  # 输出所有值大于3的元素
'''
5.使用.loc[]进行切片
.loc[] 方法可以同时接受标签索引和条件,进行更为灵活的数据选择。
'''
print('5.使用.loc[]进行切片')
print(s.loc['b':'d'])  # 输出索引为'b'到'd'的元素
# 使用.loc[]进行切片,条件需要用括号括起来,并使用&连接
print(s.loc[(s.index > 'b') & (s.index < 'd')])  # 输出索引在'b'和'd'之间的元素
'''
6.负数索引进行切片
可以使用负数索引从末尾开始选择元素。
'''
print('6.负数索引进行切片')
print(s.iloc[-3:-1])  # 输出倒数第三个到倒数第二个元素
'''
7.切片时保留索引
当对Series进行切片操作时,返回的子集会保留原始的索引。
'''
print('7.切片时保留索引')
print(s[1:4])
'''
8.切片时忽略索引
如果需要,可以在切片后重置索引,使用 .reset_index(drop=True) 方法。
'''
print('8.切片时忽略索引')
print(s[1:4].reset_index(drop=True))

6325f3f323584ced89aa5309201aa682.png 3153d56ee905440d8d7c92d4c40d1f59.png

注意事项

  • 当使用非整数的标签索引进行切片时,如果索引不连续或有缺失值,可能会导致意外的结果。
  • 切片操作返回的是原始Series的视图,除非进行特定的修改操作,否则原始数据不会被改变。

(四)series—名字

import pandas as pd'''
1.设置名字
在创建Series时,可以通过name参数来设置序列的名字。
'''
print('1.设置名字')
# 创建一个带有名字的Series
s = pd.Series([1, 2, 3, 4], name='my_series')
print(s)
'''
2.访问名字
可以通过Series对象的name属性来访问序列的名字。
'''
print('2.访问名字')
print(s.name)  # 输出 'my_series'
'''
3.修改名字
序列创建后,可以通过修改name属性来更改序列的名字。
'''
print('3.修改名字')
s.name = 'new_name'
print(s.name)  # 输出 'new_name'
'''
4.无名字的Series
如果在创建Series时没有指定name参数,那么name属性将为None。
'''
print('4.无名字的Series')
s = pd.Series([1, 2, 3, 4])
print(s.name)  # 输出 None
'''
5.名字在DataFrame中的作用
当将Series转换为DataFrame时,Series的名字将成为列的名字。
'''
print('5.名字在DataFrame中的作用')
df = pd.DataFrame(s, columns=['value'])
print(df)
'''
6.名字在聚合操作中的作用
在执行聚合操作时,Series的名字可以用来指定聚合结果的索引。
'''
print('6.名字在聚合操作中的作用')
print(s.sum())  # 默认使用Series的名字作为结果的索引名称

ac779941690d4b588ac2fba69dc46335.png

(五)常见操作

import pandas as pd#1.创建 Series
print('1.创建 Series')
# 从列表创建 Series
s = pd.Series([1, 2, 3, 4])
# 从字典创建 Series,字典的键成为索引
s1 = pd.Series({'a': 1, 'b': 2, 'c': 3})
# 从 ndarray 创建 Series
import numpy as np
s2 = pd.Series(np.array([1, 2, 3, 4]))# 2.访问 Series 数据
print('2.访问 Series 数据')
# 访问单个值
print(s[0])
# 访问多个值
print(s[[0, 2]])
# 使用 loc 访问基于标签的索引
print(s1.loc['a'])
# 使用 iloc 访问基于整数位置的索引
print(s.iloc[0])#3.修改 Series 数据
print('3.修改 Series 数据')
# 修改单个值
s[0] = 10
print(s)
# 修改多个值
s[[1, 2]] = [20, 30]
print(s)
# 修改基于标签的索引
s1.loc['a'] = 100
print(s1)#4.Series 的描述性统计
print('4.Series 的描述性统计')
# 求和
print(s.sum())
# 均值
print(s.mean())
# 中位数
print(s.median())
# 最大值和最小值
print(s.max())
print(s.min())
# 标准差
print(s.std())
# 方差
print(s.var())#5.Series 的数学运算
print('5.Series 的数学运算')
# 加法
print(s + 2)
# 乘法
print(s * 2)
# 除法
print(s / 2)
# 幂运算
print(s ** 2)#6.Series 的布尔运算
print('6.Series 的布尔运算')
# 大于某个值
print(s > 2)
# 小于某个值
print(s < 2)
# 等于某个值
print(s == 2)
# 不等于某个值
print(s != 2)#7.Series 的比较
print('7.Series 的比较')
# 与另一个 Series 比较
other_s = pd.Series([3, 4, 5, 6], index=['x', 'y', 'z', 'w'])
# print(s == other_s)#报错#8.使用range对象创建Series
print('8.使用range对象创建Series')
# 使用range对象创建Series
s9 = pd.Series(range(3), index=['a', 'b', 'c'])
print(s9)#9.Series 的重组
print('9.Series 的重组')
# 添加新列
s['new_column'] = [5, 6, 7, 8]
print(s)
# 删除列
s.drop('new_column',inplace=True)
print(s)#10.Series 的值计数
print('10.Series 的值计数')
# 计数每个值出现的次数
print(s.value_counts())#11.Series 的唯一值
# 获取 Series 中的唯一值
print('11.Series 的唯一值')
print(s.unique())#12.Series 的排序
print('12.Series 的排序')
# 排序
print(s.sort_values())#13.Series 的缺失数据处理
print('13.Series 的缺失数据处理')
# 填充缺失值
s.fillna(0, inplace=True)
print(s)
# 删除缺失值
s.dropna(inplace=True)
print(s)

f0925716e1f248c3a48e7844a94e4a27.png 4b54e852ef3a479dbc79314a898cdb17.png

4e403d41f7144d61af204ea4b4834c9c.png 7121882e36a040cb880bb50ca5827d5d.png

f846a553093f4c34b88dc6232a210882.png

 

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

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

相关文章

MySQL的SQL语句之触发器的创建和应用

触发器 Trigger 一.触发器 作用&#xff1a;当检测到某种数据表发生数据变化时&#xff0c;自动执行操作&#xff0c;保证数据的完整性&#xff0c;保证数据的一致性。 1.创建一个触发器 如上图所示&#xff0c;查看这个create的帮助信息的时候&#xff0c;这个create trig…

服务器数据恢复—DELL EqualLogic PS6100系列存储简介及如何收集故障信息?

DELL EqualLogic PS6100系列存储采用虚拟ISCSI SAN阵列&#xff0c;支持VMware、Solaris、Linux、Mac、HP-UX、AIX操作系统&#xff0c;提供全套企业级数据保护和管理功能&#xff0c;具有可扩展性和容错功能。DELL EqualLogic PS6100系列存储介绍&#xff1a; 1、上层应用基础…

什么是无限钱包系统?有什么优势?

在数字货币风起云涌的今天&#xff0c;一个名为“无限钱包系统”的创新平台正悄然引领着行业的变革。它不仅重新定义了数字资产的管理方式&#xff0c;更以卓越的安全性、便捷的操作体验以及前瞻性的技术理念&#xff0c;成为了广大数字货币爱好者心中的理想之选。 一、数字货币…

API网关 - JWT认证 ; 原理概述与具体实践样例

API网关主要提供的能力&#xff0c;就是协议转换&#xff0c;安全&#xff0c;限流等能力。 本文主要是分享 如何基于API网关实现 JWT 认证 。 包含了JWT认证的流程&#xff0c;原理&#xff0c;与具体的配置样例 API网关认证的重要性 在现代Web应用和微服务架构中&#x…

前端加密解密

一、 AES 加密与解密 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。是一种对称加密算法也就是加密和解密用相同的密钥; 1.1 使用 crypto-js 实现 AES 加密 1.1.1 参数说明 data 要加密的明文key 秘钥iv …

基于知识引导提示的因果概念提取(论文复现)

基于知识引导提示的因果概念提取(论文复现) 本文所涉及所有资源均在传知代码平台可获取 文章目录 基于知识引导提示的因果概念提取(论文复现)论文概述论文方法提示构造器获取典型概念集聚类典型概念构建训练数据训练主题分类器概念提取器输入构造指针网络置信度评分训练损失…

【element ui系列】分享几种实现el-table表格单选的方法

在实际的开发中&#xff0c;经常会用到从表格中选择一条记录的情况&#xff0c;虽然官方给出的例子&#xff0c;但是给人感觉看起来不明显&#xff0c;于是&#xff0c;在此基础上做了改进。接下来&#xff0c;介绍两种常见的实现方法&#xff1a; 1、采用复选框(checkbox)实现…

63 mysql 的 行锁

前言 我们这里来说的就是 我们在 mysql 这边常见的 几种锁 行共享锁, 行排他锁, 表意向共享锁, 表意向排他锁, 表共享锁, 表排他锁 意向共享锁, 意向排他锁, 主要是 为了表粒度的锁获取的同步判断, 提升效率 意向共享锁, 意向排他锁 这边主要的逻辑意义是数据表中是否有任…

江协科技STM32学习- P26 UART串口外设

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

使用 ADB 在某个特定时间点点击 Android 设备上的某个按钮

前提条件 安装 ADB&#xff1a;确保你已经在计算机上安装了 Android SDK&#xff08;或单独的 ADB&#xff09;。并将其添加到系统环境变量中&#xff0c;以便你可以在命令行中运行 adb。 USB调试&#xff1a;确保 Android 设备已启用 USB 调试模式。这可以在设备的“设置” -…

mint-ui Picker 显示异常

mint-ui Picker 显示异常 现象 最近一个老项目页面显示异常&#xff0c;使用mint-ui Picker显示异常,直接显示成了 数据对象&#xff0c;而不是具体travelName 字段 组件 mint-ui Picker 使用方式(vue方式) // template <mt-picker :slots"slots" value-key…

FastAPI性能对比:同步vs异步

大家好&#xff0c;FastAPI已成为构建Python API的最流行框架之一&#xff0c;因其速度和易用性而广受欢迎。但在构建高性能应用程序时&#xff0c;使用同步&#xff08;sync&#xff09;还是异步&#xff08;async&#xff09;代码执行是很重要的问题。本文将通过现实世界的性…

wx.setNavigationBarColor动态设置导航栏颜色无效(亲测有效)

wx.setNavigationBarColor动态设置导航栏颜色无效&#xff08;亲测有效&#xff09; 问题描述问题分析问题解决注意 问题描述 wx.setNavigationBarColor({frontColor: #E6E6E6,backgroundColor: #E6E6E6 })上面的代码设置后导航栏颜色没有变化&#xff0c;查看了app.json 以及…

Blender进阶:贴图与UV

9 UV 9.1 贴图与UV UV&#xff0c;指定每个面顶点在贴图上的坐标 演示&#xff1a; 1、添加物体 2、添加贴图&#xff0c;即图片纹理节点 3、进入UV Edit工作区 4、右边&#xff0c;选择一个面 5、左边&#xff0c;选择一个面&#xff0c;移动这个面 9.2 电子表格 电子…

利用LangChain与LLM打造个性化私有文档搜索系统

我们知道LLM&#xff08;大语言模型&#xff09;的底模是基于已经过期的公开数据训练出来的&#xff0c;对于新的知识或者私有化的数据LLM一般无法作答&#xff0c;此时LLM会出现“幻觉”。针对“幻觉”问题&#xff0c;一般的解决方案是采用RAG做检索增强。 但是我们不可能把…

PostgreSQL-06-入门篇-集合运算

文章目录 1. UNION 组合多个查询的结果集简介带有 ORDER BY 子句的 UNION设置样例表PostgreSQL UNION 示例1) 简单的 PostgreSQL UNION 示例2) PostgreSQL UNION ALL 示例3) 带 ORDER BY 子句 UNION ALL 示例 2. INTERSECT 取交集简介带 ORDER BY 子句的 INTERSECT 操作Postgre…

云计算作业二Spark:问题解决备忘

安装spark 教程源地址&#xff1a;https://blog.csdn.net/weixin_52564218/article/details/141090528 镜像下载 教程给的官网下载地址很慢&#xff0c;https://archive.apache.org/dist/spark/spark-3.1.1/ 这里的镜像快很多&#xff1a; 清华软件源&#xff1a;https://mi…

(51)MATLAB迫零均衡器系统建模与性能仿真

文章目录 前言一、迫零均衡器性能仿真说明二、迫零均衡器系统建模与性能仿真代码1.仿真代码2.代码说明3.迫零均衡器zf_equalizer的MATLAB源码 三、仿真结果1.信道的冲击响应2.频率响应3.迫零均衡器的输入和输出 前言 使用MATLAB对迫零均衡器系统进行建模仿真&#xff0c;完整的…

【C#】编写计算机选课程序

文章目录 一、引言二、程序概述三、程序设计四、 界面设计五、代码实现六、为每一个选项添加事件七、事件处理八、完成展示 一、引言 在这篇文章中&#xff0c;我将介绍如何开发一个简单的计算机选课程序。这个程序将允许学生根据自己的需求选择不同等级的课程&#xff0c;并即…

【AIGC】AI工作流workflow实践:构建日报

workflow实践 引言实现步骤分析实践创建 dify workflow 应用创建工作流内部节点1、设置输入字段2、创建两个LLM节点3、设置结束节点 运行工作流 结语 引言 工作流 workflow 是现在 LLM 很重要的一个概念&#xff0c;因为对于一个模型来说&#xff0c;非常复杂的问题很难一次性…