Pandas:提供了快速、灵活和表达式丰富的数据结构。
引言
Pandas是Python中最为广泛使用的数据分析和操作库之一,特别适用于处理结构化数据。该库的名称源自“Panel Data”的缩写,意为面板数据或多维数据。Pandas基于NumPy构建,继承了其高效的数组计算能力,并在此基础上进一步扩展,提供了更高层次的数据结构和数据分析工具,如Series和DataFrame。这些数据结构旨在使处理“关系”或“标签”数据的工作变得更加简单、直观,并且具有强大的表达能力。
Pandas的目标是提供快速、灵活和表达式丰富的数据结构,以便于数据的清理、转换、聚合和可视化。无论是数据科学家还是分析师,Pandas都能有效简化他们的日常工作,使得大规模数据的处理和分析变得更加高效。Pandas特别适合处理来自CSV、Excel、SQL数据库、HDF5等多种格式的文件,能够轻松应对从数百行到数百万行的数据。
核心特性
1. 数据结构
- Series:
Series是一种类似于一维数组的对象,它由一组数据和与之相关的标签(索引)组成。Series的行为类似于NumPy的数组,但与NumPy数组不同,Series对象可以存储任何类型的数据,包括整数、浮点数、字符串、对象等。Series的索引不仅可以是整数,还可以是任何其他类型(如字符串、时间戳),这使得数据的访问更加灵活和直观。 - DataFrame:
DataFrame是Pandas中最重要的数据结构,它是一个类似于电子表格或SQL表格的二维表,由行和列组成。DataFrame的每一列都是一个Series对象,因此可以存储不同的数据类型(如整数、浮点数、字符串等)。DataFrame提供了丰富的方法和函数,用于数据的清理、转换、过滤和聚合,极大地方便了数据分析的流程。 - Panel:尽管
Panel已在Pandas的最新版本中被废弃(从Pandas 1.0开始),但它曾是处理三维数据的主要数据结构。现在推荐使用多级索引的DataFrame或更高效的xarray库来处理多维数据。
2. 数据操作与分析
- 数据加载与存储:Pandas支持从多种文件格式中加载数据,包括CSV、Excel、SQL、JSON、HTML等。相应地,Pandas也可以将数据保存为这些格式的文件。通过简单的函数调用,用户可以快速读取或写入不同格式的数据文件。
- 数据选择与过滤:Pandas提供了多种方法来选择和过滤数据,例如通过标签、位置或布尔条件来选择数据子集。与传统方法相比,这些操作在Pandas中变得更加简洁和高效。
- 数据清理与转换:数据清理是数据分析中的重要步骤,Pandas为此提供了丰富的工具,如处理缺失数据(填充或删除NaN值)、数据类型转换、重复数据删除、字符串操作等。通过这些工具,用户可以轻松将原始数据转换为可分析的格式。
- 数据聚合与分组操作:Pandas的
groupby功能允许用户根据某个或多个列对数据进行分组,并在分组的基础上进行聚合、转换或过滤操作。这在数据分析中尤为重要,因为它能够快速计算分组后的统计量,如平均值、总和、最大值、最小值等。 - 时间序列处理:Pandas对时间序列数据的处理提供了专门的支持,包括时间戳和日期范围的生成、重采样、时区转换、移动窗口计算等。这使得Pandas成为金融数据分析和其他涉及时间序列数据的任务中的利器。
- 数据可视化:虽然Pandas本身不是一个可视化库,但它与Matplotlib库紧密集成,提供了便捷的数据可视化功能。用户可以通过简单的命令直接从
DataFrame或Series对象生成各种图表,如折线图、柱状图、散点图等。
安装与基本使用
安装Pandas
Pandas可以通过Python的包管理工具pip轻松安装。建议在虚拟环境中安装Pandas,以避免与其他项目的依赖冲突。
pip install pandas
安装成功后,可以通过以下命令导入Pandas并查看其版本号:
import pandas as pd
print(pd.__version__)
基本使用示例
以下是一些Pandas的基本使用示例,展示了如何创建Series和DataFrame对象,并进行常见的数据操作。
import pandas as pd# 创建一个Series
data = pd.Series([1, 3, 5, 7, 9])
print(data)# 创建一个DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4],'B': [5, 6, 7, 8],'C': ['foo', 'bar', 'baz', 'qux']
})
print(df)# 选择和过滤数据
print(df['A']) # 选择列A
print(df[df['B'] > 6]) # 过滤B列大于6的行# 缺失值处理
df2 = pd.DataFrame({'A': [1, 2, None, 4],'B': [5, None, 7, 8]
})
print(df2.fillna(0)) # 用0填充缺失值# 数据聚合
grouped = df.groupby('C').sum()
print(grouped)
案例一:数据清洗与转换
假设你有一个CSV文件,其中包含了一些员工信息,但数据中存在缺失值、重复记录以及不一致的数据格式。你的目标是清洗这些数据,使其适合进一步分析。
import pandas as pd # 加载数据
data = pd.read_csv('employees.csv') # 查看数据概况
print(data.head()) # 处理缺失值
# 假设'email'列中有缺失值,我们用'Unknown'填充
data['email'].fillna('Unknown', inplace=True) # 删除重复行
data.drop_duplicates(inplace=True) # 数据类型转换
# 假设'hire_date'列原本是字符串类型,我们需要将其转换为日期类型
data['hire_date'] = pd.to_datetime(data['hire_date']) # 字符串操作:假设我们需要从'email'列中提取域名
data['domain'] = data['email'].apply(lambda x: x.split('@')[-1] if '@' in x else 'N/A') # 查看清洗后的数据
print(data.head())
案例二:数据聚合与分组
现在,你想根据员工的部门来聚合数据,计算每个部门的平均薪资和总人数。
# 假设'department'和'salary'是DataFrame中的列
grouped = data.groupby('department').agg({ 'salary': 'mean', # 计算平均薪资 'email': 'nunique' # 计算每个部门的唯一email数,作为总人数的近似(假设每个员工一个email)
}).rename(columns={'email': 'total_employees'}) print(grouped)
案例三:时间序列分析
如果你的数据中包含了时间序列信息(如销售数据、股票价格等),Pandas的时间序列功能将非常有用。
# 假设你有一个包含日期和销售额的DataFrame
sales_data = pd.DataFrame({ 'date': pd.date_range(start='2023-01-01', periods=100, freq='D'), 'sales': np.random.randint(100, 1000, 100)
}) # 设置日期为索引
sales_data.set_index('date', inplace=True) # 计算每日销售额的滚动平均值(例如,7天滚动平均)
sales_data['rolling_avg'] = sales_data['sales'].rolling(window=7).mean() # 绘制原始销售额和滚动平均销售额
import matplotlib.pyplot as plt sales_data['sales'].plot(label='Daily Sales')
sales_data['rolling_avg'].plot(label='7-Day Rolling Average', linestyle='--')
plt.legend()
plt.show()
案例四:数据透视表
Pandas的pivot_table函数是进行数据汇总和重新组织的强大工具,类似于Excel中的数据透视表。
# 假设我们想根据部门和年份来汇总销售额
# 假设'department', 'year'和'sales'是DataFrame中的列
pivot_table = data.pivot_table(values='sales', index='department', columns='year', aggfunc='sum') print(pivot_table)
结论
Pandas作为一个基于NumPy的数据分析和操作库,极大地丰富了Python在数据科学领域的功能。它的快速、灵活和表达式丰富的数据结构,以及强大的数据处理和分析工具,使得Pandas成为了处理结构化数据的事实标准。无论是进行简单的数据清理任务,还是复杂的数据分析和建模,Pandas都能为开发者提供高效且易用的解决方案。掌握Pandas是成为数据科学家和数据分析师的重要一步,它将显著提升数据处理的效率和分析的深度。
更多资源
- Pandas库官方文档
相关文章:
Pandas:提供了快速、灵活和表达式丰富的数据结构。
引言 Pandas是Python中最为广泛使用的数据分析和操作库之一,特别适用于处理结构化数据。该库的名称源自“Panel Data”的缩写,意为面板数据或多维数据。Pandas基于NumPy构建,继承了其高效的数组计算能力,并在此基础上进一步扩展&…...
强!小目标检测全新突破!检测速度快10倍,GPU使用减少73.4%
强!小目标检测全新突破,提出Mamba-in-Mamba结构,通过内外两层Mamba模块,同时提取全局和局部特征,实现了检测速度快10倍,GPU使用减少73.4%的显著效果! 【小目标检测】是近年来在深度…...
重修设计模式-创建型-原型模式
重修设计模式-创建型-原型模式 原型模式就是利用已有对象(原型)通过拷贝方式来创建对象的模式,达到节省对象创建时间的目的。适用于对象创建成本较大,且同一类的不同对象之间差别不大的场景。 比如一个对象中的数据需要经过复杂…...
S71200 - 编程 - 笔记
1 DEMO 1.1气阀控制 1.2 红绿灯 基于PLC红绿灯控制_哔哩哔哩_bilibili 2 介绍变量DB,M,I,Q的使用 在PLC编程中,通常会使用多种类型的变量来实现逻辑控制、数据存储和输入输出操作。以下是常见的PLC变量类型及其用途ÿ…...
【项目】畅聊天地博客测试报告
项目简介:本项目采用 SSM框架结合 Websocket 技术构建。用户通过简单的注册和登录即可进入聊天室,与其他在线用户实时交流。系统支持文字消息的快速发送和接收、消息实时推送,确保交流的及时性和流畅性。SSM 框架为项目提供了稳定的架构和高效…...
【Next】全局样式和局部样式
不同于 nuxt ,next 的样式绝大部分都需要手动导入。 全局样式 使用 sass 先安装 npm i sass -D 。 我们可以定义一个 styles 文件,存放全局样式。 variables.scss $fs30: 30px;mixin border() {border: 1px solid red; }main.scss use ./variables …...
关于Docker的详细介绍
Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,实现虚拟化。以下是关于Docker的详细介绍: ### 一、Docker的定义 Docker是一…...
一台佳能G3811彩色喷墨打印机打印没颜色报5200的维修记录
一台佳能G3811彩色喷墨打印机,用户送修,称打印没有颜色,加电开机连电脑安驱动打印测试,确实没有颜色,于是清洗喷头结果打印机那个显示屏上 ,上来就报错P08,电脑提示5200; 话不多说,开始维修,仅记录当时的维修方法及步骤,其它未列出。。。 维修方法: 1、进维…...
【LeetCode】452.用最少数量的箭引发气球
能够找到问题的解法与把问题足够简化是天壤之别。比如我知道这题可以用贪心算法来解决,但是代码实现的过程中就走上了复杂的路,但是官方题解给的代码则相当简洁。这说明我思考的不够深入,导致化繁为简的能力不够强。 1. 题目 2. 分析 一道贪…...
网络安全流程规范文件解读(安全专业L1级)
技术能力项编号AQ-AQ-L1-02.01(安全维护作业计划执行能力) 课程目标: 通过学习课程,学员可以: 1.了解ZGYD网络安全流程规范 2.独立执行安全维护作业计划。 流程规范 一、《ZGYD远程接入安全管理办法》 二、《ZGYD网络运维账号口令管理办…...
Java、python、php版的邮件发送与过滤系统的设计与实现 (源码、调试、LW、开题、PPT)
💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…...
st算法求RMP
st算法(sparse_tabel)可以在O(N log N)的预处理后实现O(1)的查询效率。 rmq:Range Maximum (Minimum) Query的缩写,顾名思义是用来求某个区间内的最大值或最小值,通常用在需要多次询问一些区间的最值得问题中。 #inc…...
零基础学习Redis(1) -- Redis简介
Redis是一个在内存中存储数据的一个中间组件,可用作数据库或数据缓存,通常在分布式系统中使用 (不了解分布式? 点击传送) 1. Redis特性 在内存中存储数据,通过键值对的方法存储key为string,v…...
安装MySQL数据库【后端 8】
安装MySQL数据库 MySQL是世界上最流行的开源关系型数据库管理系统(RDBMS)之一,广泛应用于Web应用程序开发中。无论你是初学者还是有一定经验的开发者,掌握MySQL的安装都是必不可少的技能。本文将指导你如何在不同的操作系统上安装…...
JAVA学习-练习试用Java实现“整数转换英文表示”
问题: 将非负整数 num 转换为其对应的英文表示。示例 1: 输入:num 123 输出:"One Hundred Twenty Three" 示例 2: 输入:num 12345 输出:"Twelve Thousand Three Hundred Fo…...
TPshop商城的保姆教程(Ubuntu)
1.上传TPSHOP源码 选择适合自己的版本下载 TPshop商城源文件下载链接: 百度网盘 请输入提取码 上传tpshop的源码包到特定目录/var/www/html 切换到/var/www/html 目录下 cd /var/www/html修改HTML目录下所有文件权限 chmod -R 777 * 2.打开网址配置 TPshop安…...
MySQL存储过程、触发器、视图
数据库中的存储过程、触发器和视图是三种常用的数据库对象,它们在管理数据、优化性能和简化复杂操作中起着重要的作用。下面是每种对象的详细介绍和示例: 存储过程 存储过程是一组为了执行特定功能而预编译的SQL语句。它类似于编程中的函数,…...
每一行txt文件的内容将作为CSV文件中的一行,逗号、空格和句号,冒号作为分隔符拆分成多列
将指定文件夹中的每个txt文件的内容读取出来,并将每个文件的内容按逗号、空格和句号作为分隔符拆分成多列,每一行txt文件的内容将作为CSV文件中的一行,此文件夹中的文件会有非utf-8字符,是如下的代码,如果是utf-8编码的…...
基于inotif的文件同步备份
1 ftp 因为服务器是linux的,而备份服务器是windows server的,故而采取lftp进行同步文件。 1.1 全量同步 cat > /appdata/script/sync_all.sh <<EOF #!/bin/bash # FTP 服务器信息 FTP_SERVER"ftp://192.168.0.5" FTP_USER"…...
luckyexcel 编辑预览excel文件
luckyexcel 编辑预览excel文件 支持后端传文件流预览编辑,也支持选择本地文件编辑预览 看效果 上代码 <template><div style"margin: 30px"><div class"button-box2"><div><div style"color: red">…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
MinIO Docker 部署:仅开放一个端口
MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
