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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法妙妙屋-------1.递归的深邃回响:C++ 算法世界的优雅之旅

前言&#xff1a; 递归是一种在算法中广泛应用的思想&#xff0c;其主体思想是通过将复杂的问题分解为更简单的子问题来求解。具体而言&#xff0c;递归通常包括以下几个要素&#xff1a; 基本情况&#xff08;Base Case&#xff09;&#xff1a;每个递归算法必须有一个或多个…

禾川HCQ1控制器程序编译报错如何解决

1、第一次打开用户程序 2、提示库未安装 3、安装库文件 4、脉冲轴库未安装 5、没有错误 去禾川自动化官网,把可以安装的包和库都安装下,程序编译就没有错误了。 6、下载相关包文件

HarmonyOS:@Watch装饰器:状态变量更改通知

Watch应用于对状态变量的监听。如果开发者需要关注某个状态变量的值是否改变&#xff0c;可以使用Watch为状态变量设置回调函数。 说明 从API version 9开始&#xff0c;该装饰器支持在ArkTS卡片中使用。 从API version 11开始&#xff0c;该装饰器支持在元服务中使用。 一、概…

Windows如何查看自己网卡的MAC地址?

本章教程&#xff0c;主要介绍如何在Windows查看自己的网卡mac地址。 一、查询MAC地址方法 打开使用PowerShell&#xff0c;运行以下命令即可查询到自己的网卡MAC地址。 Get-NetAdapter | Select-Object Name, MacAddress二、MAC地址是什么 MAC地址&#xff08;Media Access Co…

Unknown at rule @tailwindscss(unknownAtRules)

一、前言 整合 tailwindcss 后&#xff0c;发现指令提示警告 Unknown at rule tailwindscss(unknownAtRules)&#xff0c;其实是 vscode 无法识别 tailwindscss 指令&#xff0c;不影响使用&#xff0c;但是对于我这种有编程洁癖的人来说&#xff0c;有点膈应。 二、解决方案…

Python 实现深度学习模型预测控制--预测模型构建

链接&#xff1a;深度学习模型预测控制 &#xff08;如果认为有用&#xff0c;动动小手为我点亮github小星星哦&#xff09;&#xff0c;持续更新中…… 链接&#xff1a;WangXiaoMingo/TensorDL-MPC: DL-MPC(deep learning model predictive control) is a software toolkit…

安宝特案例 | AR技术在院外心脏骤停急救中的革命性应用

00 案例背景 在院外心脏骤停 (OHCA) 的突发救援中&#xff0c;时间与效率直接决定着患者的生命。传统急救模式下&#xff0c;急救人员常通过视频或电话与医院医生进行沟通&#xff0c;以描述患者状况并依照指令行动。然而&#xff0c;这种信息传递方式往往因信息不完整或传递延…

书生大模型第一关Linux基础知识

任务一&#xff1a;完成SSH连接与端口映射并运行hello_world.py 1.SSH及其端口映射 2.在VSCode中安装插件&#xff1a; 3.创建开发机 最后点击创建&#xff0c;然后可能需要等待一段较长的时间&#xff0c;大概需要5分钟左右&#xff0c;如果需要排队则更长时间 然后选择…

openGauss数据库-头歌实验1-5 修改数据库

一、查看表结构与修改表名 &#xff08;一&#xff09;任务描述 本关任务&#xff1a;修改表名&#xff0c;并能顺利查询到修改后表的结构。 &#xff08;二&#xff09;相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 1.如何查看表的结构&#xff1b; 2.如…

【机器学习】26. 聚类评估方法

聚类评估方法 1. Unsupervised Measure1.1. Method 1: measure cohesion and separationSilhouette coefficient Method 2&#xff1a;Correlation between two similarity matricesMethod 3&#xff1a;Visual Inspection of similarity matrix 2. Supervised measures3. 决定…

基于stm32单片机的智能循迹小车

功能描述 STM32单片机循迹避障蓝牙控制温度采集烟雾采集火焰探测声光报警按键调节OLED显示 1. STM32单片机为控制核心 2. 通过ds18b20传感器测量环境温度 3. 通过mq-2烟雾传感器测量环境中的烟雾浓度 4. 温度阈值和烟雾浓度阈值可以通过按键进行调节 5. 当温度或者烟雾浓度超过…

【图解版】力扣第70题:爬楼梯

推理出状态表达式 f(5)表示到达第5层&#xff0c;所有可能的方法数。 到达第5层&#xff0c;有可能是从第4层走一步上来&#xff0c;也有可能是从第3层走两步上来。所以我们可以慢慢延伸&#xff0c;画出上面&#x1f446;&#x1f3fb;的图。 从图中&#xff0c;我们可以看到…

MySQL基础(三)

目录 一. 插入内容insert 1.1 默认插入 1.2 指定某些列插入数据 1.3 一次插入多行 1.4 insert 插入时间 二. 查询数据select&#xff08;比较复杂&#xff09; 2.1 全列查询 2.2 指定列查询 2.3 查询字段为表达式 2.4 别名 as 2.5 去重查询 distinct 2.6 排序…

OpenAI 的 Whisper:盛名之下,其实难副?

OpenAI 的 Whisper&#xff1a;盛名之下&#xff0c;其实难副&#xff1f; Whisper 的崛起与承诺 严重缺陷的曝光 风险分析 应对措施 结论 在人工智能的浪潮中&#xff0c;OpenAI 一直以其创新性和强大的技术实力备受瞩目。然而&#xff0c;最近 OpenAI 的语音转写工具 Wh…

在kanzi 3.9.8里使用API创建自定义材质

1. kanzi studio设置 1.1 创建一个纹理贴图&#xff0c;起名Render Target Texture 1.2 创建一个Image节点&#xff0c;使用该贴图 2. 代码设置 2.1 创建一个自定义节点类 class mynode2d : public Node2D { public: virtual void renderOverride(Renderer3D& renderer…

音频中sample rate是什么意思?

‌sample rate‌在数字信号处理中&#xff0c;指的是‌采样频率‌&#xff0c;即每秒钟从连续信号中抽取的样本数量。采样频率越高&#xff0c;信号的还原度越高&#xff0c;但同时也会增加计算负担和存储需求‌。 实际应用场景 在音频处理中&#xff0c;设置合适的采样率可以…

杨辉三角形

大家好&#xff0c;今天给大家分享一下杨辉三角形是如何打印的&#xff0c;首先我们来看看它的原理。 我们先来看结果 1.如果把它看为一个二维数组&#xff08;包括后面的空格&#xff09;&#xff0c;那么它数字的这边是一个直角三角形&#xff0c;它的第一列和对角线都为1&a…

详解ARM64可执行程序的生成过程

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ ARM64可执行程序的生成过程 根据 ARM64 可执行程序生成的四个主要步骤&#xff1a;预处理、编译、汇编、链接&#xff0c;我们可以详细分解整个过程如下 1. …

DB-GPT系列(二):DB-GPT部署(镜像一键部署、源码部署)

一、简介 DB-GPT 是一个开源项目&#xff0c;其将大语言模型 LLM 与数据库紧密结合。该项目主要致力于探索如何让预训练的大规模语言模型&#xff08;例如 GPT&#xff09;能够直接与数据库进行交互&#xff0c;从而生成更为准确且信息丰富的回答。 DB-GPT部署后能否直接使用…

升序数组两两不相等

题目&#xff1a;给定一个排好升序的数组A[1],A[2],… A[n]&#xff0c;其元素的值两两都不相等。请设计一个高效算法&#xff0c;找出其中所有A[]i的下标&#xff0c;并分析其复杂度。 算法分析&#xff1a;一个升序且值都不相等的数组&#xff0c;如果第一个数大于右下标&…