1. 前言:为什么需要 Pandas 数据结构?

在数据处理和分析中,我们需要高效的方式来存储和操作结构化数据。Python 原生的列表(List)和字典(Dict)虽然灵活,但缺乏针对数据分析的优化。Pandas 提供了两种核心数据结构:

  • Series:一维带标签数组(类似增强版列表)

  • DataFrame:二维表格型数据结构(类似 Excel 表格)

 

它们支持快速查询、自动对齐、缺失值处理、高效计算等特性,是数据分析的基础。

2. Series:一维带标签数组

2.1 创建 Series

Series 由数据(值) + 索引(标签)组成,可以通过列表、字典或 NumPy 数组创建:

import pandas as pd
import numpy as np# 从列表创建(默认索引为 0, 1, 2...)
s1 = pd.Series([10, 20, 30, 40])
print(s1)
"""
0    10
1    20
2    30
3    40
dtype: int64
"""# 从字典创建(键自动变为索引)
s2 = pd.Series({'A': 90, 'B': 80, 'C': 70})
print(s2)
"""
A    90
B    80
C    70
dtype: int64
"""# 自定义索引
s3 = pd.Series([1.1, 2.2, 3.3], index=['X', 'Y', 'Z'])
print(s3)
"""
X    1.1
Y    2.2
Z    3.3
dtype: float64
"""

2.2 Series 的属性和方法

属性/方法说明示例
s.values获取值数组s1.values → [10, 20, 30, 40]
s.index获取索引s3.index → Index(['X', 'Y', 'Z'])
s.dtype数据类型s2.dtype → int64
s.shape形状s1.shape → (4,)
s.head(n)前 n 行s1.head(2) → 显示前 2 个值
s.isna()检查缺失值pd.Series([1, None]).isna() → [False, True]

 2.3 Series 的操作

# 向量化运算(自动对齐索引)
s4 = pd.Series([1, 2, 3], index=['A', 'B', 'C'])
s5 = pd.Series([10, 20, 30], index=['B', 'C', 'D'])
print(s4 + s5)
"""
A     NaN  # A 只在 s4 中存在
B    12.0  # B 在两者中都存在
C    23.0
D     NaN  # D 只在 s5 中存在
dtype: float64
"""# 条件筛选
print(s2[s2 > 80])  # 输出大于 80 的值
"""
A    90
dtype: int64
"""

 

3. DataFrame:二维表格型数据结构

3.1 创建 DataFrame

DataFrame 可以看作多个 Series 的集合,类似于 Excel 表格或 SQL 表:

# 从字典创建(键是列名,值是数据)
data = {'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'Score': [88.5, 92.0, 78.5]
}
df = pd.DataFrame(data)
print(df)
"""Name  Age  Score
0    Alice   25   88.5
1      Bob   30   92.0
2  Charlie   35   78.5
"""# 从列表创建(需指定列名)
data = [['Apple', 5], ['Banana', 3], ['Orange', 8]]
df2 = pd.DataFrame(data, columns=['Fruit', 'Count'])
print(df2)
"""Fruit  Count
0   Apple      5
1  Banana      3
2  Orange      8
"""

 

3.2 DataFrame 的属性和方法

属性/方法说明示例
df.columns列名df.columns → Index(['Name', 'Age', 'Score'])
df.index行索引df.index → RangeIndex(start=0, stop=3)
df.shape形状df.shape → (3, 3)
df.dtypes每列数据类型df.dtypes → Name: object, Age: int64, Score: float64
df.head(n)前 n 行df.head(2) → 显示前 2 行
df.describe()统计摘要df.describe() → 计算均值、标准差等

 

3.3 DataFrame 的操作

(1)选择数据
# 选择列(返回 Series)
print(df['Name'])  # 或 df.Name
"""
0      Alice
1        Bob
2    Charlie
Name: Name, dtype: object
"""# 选择多列(返回 DataFrame)
print(df[['Name', 'Score']])# 选择行(使用 loc/iloc)
print(df.loc[1])     # 按标签选择(第 2 行)
print(df.iloc[0:2])  # 按位置选择(前 2 行)

 (2)条件筛选

# 筛选 Age > 25 的行
print(df[df['Age'] > 25])
"""Name  Age  Score
1      Bob   30   92.0
2  Charlie   35   78.5
"""# 多条件筛选(使用 & 或 |)
print(df[(df['Age'] > 25) & (df['Score'] > 80)])

 (3)增删改列

# 新增列
df['Pass'] = df['Score'] >= 80
print(df)
"""Name  Age  Score   Pass
0    Alice   25   88.5   True
1      Bob   30   92.0   True
2  Charlie   35   78.5  False
"""# 为每个学生添加性别信息
df['Gender'] = ['Female', 'Male', 'Male']  # 顺序对应原数据的行
print(df)
"""Name  Age  Score  Gender
0    Alice   25   88.5  Female
1      Bob   30   92.0    Male
2  Charlie   35   78.5    Male
"""# 删除列
df.drop('Pass', axis=1, inplace=True)  # axis=1 表示列

 

4. Series vs DataFrame 对比

特性SeriesDataFrame
维度一维二维
索引单索引(行)行索引 + 列索引
数据形式单列数据多列数据(多个 Series 的集合)
适用场景单一变量分析(如温度序列)多变量分析(如学生成绩表)

 

5. 总结

  • Series:一维数据,适合存储单列数据(如时间序列、传感器数据)。

  • DataFrame:二维表格,适合处理多列结构化数据(如 CSV、Excel 数据)。

  • 两者均支持自动对齐、向量化运算、缺失值处理,是数据分析的核心工具。

练习建议

  1. 创建一个包含学生信息的 DataFrame,并练习增删改查操作。

  2. 尝试用 Series 存储某城市一周的温度数据,并计算平均温度。

 

 

 

 

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

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

相关文章

使用 Solscan API 的开发指南:快速获取 Solana 链上数据

Solana 生态中有多个区块浏览器,其中 Solscan 提供了功能全面的 API,适用于查询地址资产、Solana 生态中有多个区块浏览器,其中 Solscan 提供了功能全面的 API,适用于查询地址资产、交易详情、合约交互等多种开发场景。相比直接使…

高效工具-libretv

什么是libretv? LibreTV 是一个轻量级、免费的在线视频搜索与观看平台,提供来自多个视频源的内容搜索与播放服务。无需注册,即开即用,支持多种设备访问。项目结合了前端技术和后端代理功能,可部署在支持服务端功能的各类网站托管…

回溯----5.括号生成

题目链接 /** 合法括号生成规则: 第一个括号必须是左括号(第一个为右必定无法闭合) 选择过程中左括号数量必须小于n才可选择左括号(大于n则一定有括号无法闭合) 左括号数量必须大于右括号数量才可选择右括号(相等代表所有前驱括号都已闭合) 所需参数: left 记录已选择左括号数…

【weaviate】分布式数据写入之LSM树深度解析:读写放大的权衡

文章目录 一、LSM树的设计哲学:写优化的根本动机1、 传统B树存储的性能瓶颈2、 LSM树的根本性创新 二、写入路径的深度技术分析1、 WAL机制的精密设计2、 MemTable的数据结构3、 刷盘(Flush)过程的技术细节 三、Compaction策略:LS…

Pygame 大鱼吃小鱼

【Pygame 大鱼吃小鱼】是一款基于Python编程语言和Pygame库开发的趣味游戏。Pygame是Python中一个广泛用于开发2D游戏的开源模块集合,它提供了丰富的功能,如窗口管理器、事件处理、图形绘制等,使得初学者也能快速上手创建游戏。 这段 Python …

【为什么在触发的事件中修改控件属性需要使用`Invoke`】

在C#中,特别是在使用Windows Forms或WPF等GUI框架时,控件的属性和状态通常只能在创建它们的线程(即UI线程,即主线程或用户界面线程)中直接修改。这是由于这些框架的设计基于单线程模型,其中所有与用户界面&…

Android 当apk是系统应用时,无法使用webView的解决方案

最近在做项目时,遇到了一个无法使用webView的问题,apk是系统应用,点击加载webView时应用就是崩溃,原因是系统应用时,Android会觉得webView不安全,不避让加载。 解决的思路就是使用映射,把原生的…

ArcGIS Pro无插件加载(无偏移)天地图!一次添加长久使用

以前我们介绍过:ArcGIS无插件加载(无偏移)天地图。这次我们来介绍ArcGIS Pro中如何添加天地图。 我们将通过从天地图官网自己添加服务链接并添加至收藏的方式以及应急的方法来做本次的介绍。天地图的数据主要包括影像、电子地图、地形图等。我…

Go堆内存管理

# Go堆内存管理 1. Go内存模型层级结构 Golang内存管理模型与TCMalloc的设计极其相似。基本轮廓和概念也几乎相同,只是一些规则和流程存在差异。 2. Go内存管理的基本概念 Go内存管理的许多概念在TCMalloc中已经有了,含义是相同的,只是名字…

零售 EDI:Chewy EDI 项目注意事项

在此前的文章《供应商对接Chewy的EDI需求》中,介绍了Chewy的EDI需求,本文主要为大家分享Chewy对于各个业务单据的细节性需求,了解这些细节性注意事项将帮助企业快速基于知行软件提供的EDI服务与Chewy建立EDI对接。 基于知行之桥EDI系统能够通…

Android录制视频自带铺满多行水印

文章目录 引言环境要求代码实现总结 引言 之前做过几种水印需求,这篇文章是关于使用Android原生库开发录制视频自带满帧文字水印。 环境要求 Android 7.0以上Android Studio ,官方开发者官网视频录制功能参考开源库PictureSelector的camerax库 //用到的…

观远ChatBI:加速零售消费企业数据驱动的敏捷决策

近年来,随着国产大模型(如DeepSeek)的快速发展,企业对智能化数据分析工具的需求日益增长。观远数据推出的ChatBI,基于大语言模型(LLM)打造,旨在通过自然语言交互降低数据分析门槛&am…

鸿蒙NEXT-鸿蒙三层架构搭建,嵌入HMRouter,实现便捷跳转,新手攻略。(1/3)

接下来,我将手把手带领大家去完善,搭建一个鸿蒙的三层架构,另实现HMRouter的嵌入。完成后,大家可任意跳转页面,在三层架构中,书写属于自己的篇章。 第0步,项目与AGC华为控制台关联起来 首先AG…

鸿蒙ArkTs仿网易云音乐项目:架构剖析与功能展示

鸿蒙ArkTs仿网易云音乐项目:架构剖析与功能展示 一、引言 在移动应用开发的浪潮中,音乐类应用始终占据着重要的一席之地。网易云音乐凭借其丰富的音乐资源、个性化的推荐算法和独特的社交互动功能,深受广大用户的喜爱。本文将详细介绍一个基…

【web 安全】从 HTTP 无状态到现代身份验证机制

文章目录 Web 安全与系统设计Web存在的问题:Web 是无状态的解决方案一、早期解决方案:Session Cookie 的诞生二、第二阶段:Token 的出现(前后端分离 移动端的解决方案)三、分析总结:1.早期版本&#xff1…

FlutterUnit TolyUI | 布局游乐场

FlutterUnit 基于 TolyUI 大大简化了界面构建的代码复杂程度,因此之前想要实现的一些小功能,就可以轻松支持。布局游乐场是通过交互的方式来 直观体验 组件的布局特性,从而更易学和掌握。目前 FlutterUnit 已在 知识集录模块新增了 布局宝库&…

【数据分析一:Data Collection】信息检索

本节内容含有各典型数据集的推荐,以及其网址,大家根据需要自取 一、检索 最简单、最灵活的数据获取方式就是依靠检索: Google:更适合搜索英文信息 Google Dataset Search(Google 数据集搜索) 网址&…

23.ssr和csr的对比?如何依赖node.js实现

1.为什么说ssr 的node中间层请求速度快。相当于内网? 那vue.js加载怎么没有ssr和csr的说法啊 第一问:为什么说 SSR 的 Node 中间层请求速度快?是不是相当于内网? ✅ 是的,本质上就是「内网请求」,所以更快…

力扣刷题(第六十四天)

灵感来源 - 保持更新,努力学习 - python脚本学习 第一个错误的版本 解题思路 初始化左右边界:左边界 left 1,右边界 right n。二分查找循环: 计算中间版本号 mid。若 mid 是错误版本,说明第一个错误版本在 [le…

【图像处理入门】11. 深度学习初探:从CNN到GAN的视觉智能之旅

摘要 深度学习为图像处理注入了革命性动力。本文将系统讲解卷积神经网络(CNN)的核心原理,通过PyTorch实现图像分类实战;深入解析迁移学习的高效应用策略,利用预训练模型提升自定义任务性能;最后揭开生成对抗网络(GAN)的神秘面纱,展示图像生成与增强的前沿技术。结合代…