Pandas高级功能

在数据科学与机器学习的广阔天地中,Pandas宛如一把瑞士军刀,以其强大的数据处理和分析能力,成为众多数据从业者的得力助手。从基础的数据读写、清洗到复杂的数据聚合、转换,Pandas的功能丰富多样。本文将深入探索Pandas的一些高级功能,帮助大家更高效地处理和分析数据。

一、高级数据筛选与过滤

1. 使用query方法

query方法提供了一种更直观、更简洁的方式来筛选数据。它允许我们使用类似SQL的语法来查询DataFrame。

import pandas as pd# 创建一个示例DataFrame
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],'age': [25, 30, 35, 40],'salary': [50000, 60000, 70000, 80000]
}
df = pd.DataFrame(data)# 使用query方法筛选年龄大于30的员工
result = df.query('age > 30')
print(result)

2. 多条件筛选

可以结合逻辑运算符(如&|)进行多条件筛选。

# 筛选年龄大于30且工资大于65000的员工
result = df[(df['age'] > 30) & (df['salary'] > 65000)]
print(result)

二、数据透视表(Pivot Table)

数据透视表是Pandas中非常强大的功能,它可以对数据进行汇总和分析,类似于Excel中的数据透视表。

# 创建一个包含销售数据的DataFrame
sales_data = {'date': ['2023-01-01', '2023-01-01', '2023-01-02', '2023-01-02'],'product': ['A', 'B', 'A', 'B'],'sales': [100, 150, 200, 250],'region': ['North', 'South', 'North', 'South']
}
df_sales = pd.DataFrame(sales_data)# 创建数据透视表,按产品和区域汇总销售额
pivot_table = pd.pivot_table(df_sales, values='sales', index=['product'], columns=['region'], aggfunc='sum')
print(pivot_table)

三、多重索引(MultiIndex)

多重索引允许我们在DataFrame中使用多个索引级别,从而更灵活地组织和访问数据。

1. 创建多重索引

import numpy as np# 创建多重索引
arrays = [['A', 'A', 'B', 'B'],[1, 2, 1, 2]
]
index = pd.MultiIndex.from_arrays(arrays, names=('letter', 'number'))# 创建包含多重索引的DataFrame
df_multi = pd.DataFrame({'values': np.random.randn(4)}, index=index)
print(df_multi)

2. 访问多重索引数据

可以使用locxs方法来访问多重索引的数据。

# 使用loc访问数据
print(df_multi.loc[('A', 1)])# 使用xs访问数据
print(df_multi.xs(1, level='number'))

四、数据分组与聚合(GroupBy)

groupby方法是Pandas中用于数据分组和聚合的核心功能。它可以根据一个或多个列对数据进行分组,然后对每个分组应用聚合函数。

# 创建一个示例DataFrame
data = {'department': ['HR', 'IT', 'HR', 'IT', 'Finance'],'employee': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],'salary': [50000, 60000, 55000, 65000, 70000]
}
df_group = pd.DataFrame(data)# 按部门分组并计算平均工资
grouped = df_group.groupby('department')['salary'].mean()
print(grouped)

1. 多列分组

# 按部门和员工分组并计算工资总和
grouped_multi = df_group.groupby(['department', 'employee'])['salary'].sum()
print(grouped_multi)

2. 自定义聚合函数

可以使用agg方法应用自定义的聚合函数。

# 定义自定义聚合函数
def custom_agg(x):return x.max() - x.min()# 应用自定义聚合函数
grouped_custom = df_group.groupby('department')['salary'].agg(custom_agg)
print(grouped_custom)

五、时间序列分析

Pandas提供了强大的时间序列处理功能,使得处理日期和时间相关的数据变得非常方便。

1. 创建时间序列

# 创建日期范围
date_range = pd.date_range(start='2023-01-01', periods=5, freq='D')# 创建时间序列DataFrame
ts_data = {'value': [1, 2, 3, 4, 5]
}
df_ts = pd.DataFrame(ts_data, index=date_range)
print(df_ts)

2. 时间序列重采样

可以使用resample方法对时间序列进行重采样,例如按周、月等频率进行聚合。

# 按周重采样并计算平均值
resampled = df_ts.resample('W').mean()
print(resampled)

六、数据合并与连接

在实际应用中,经常需要将多个DataFrame进行合并或连接。Pandas提供了mergeconcatjoin等方法来实现这些操作。

1. 使用merge方法

merge方法类似于SQL中的JOIN操作,可以根据一个或多个键将两个DataFrame进行合并。

# 创建两个示例DataFrame
df1 = pd.DataFrame({'key': ['A', 'B', 'C'],'value1': [1, 2, 3]
})df2 = pd.DataFrame({'key': ['A', 'B', 'D'],'value2': [4, 5, 6]
})# 合并两个DataFrame
merged = pd.merge(df1, df2, on='key', how='inner')
print(merged)

2. 使用concat方法

concat方法可以将多个DataFrame沿着指定的轴进行连接。

# 创建两个示例DataFrame
df3 = pd.DataFrame({'value3': [7, 8, 9]
}, index=[0, 1, 2])df4 = pd.DataFrame({'value4': [10, 11, 12]
}, index=[1, 2, 3])# 沿着行方向连接两个DataFrame
concatenated = pd.concat([df3, df4], axis=0)
print(concatenated)

七、总结

Pandas的高级功能为我们提供了强大而灵活的数据处理和分析工具。通过掌握这些高级功能,我们可以更高效地处理复杂的数据集,挖掘数据背后的价值。无论是数据清洗、转换,还是数据分析和可视化,Pandas都能成为我们的得力助手。希望本文能够帮助大家更好地理解和应用Pandas的高级功能,在数据科学的道路上取得更大的进步。

在实际应用中,不断实践和探索Pandas的各种功能是非常重要的。同时,结合其他数据科学工具和库,如NumPy、Matplotlib、Scikit-learn等,可以构建更完整的数据分析和机器学习流程。让我们一起在数据的海洋中遨游,发现更多的知识和洞察。

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

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

相关文章

英语学习4.15

amateur amateur 🔤 读音:/ˈmətər/ 或 /ˈmətʃʊr/ ✅ 词性:名词 / 形容词 ✅ 中文释义: (名词)业余爱好者   👉 指不是以此为职业的人,通常出于兴趣而从事某项活动。   …

Java开发软件

Main.java // 主类,用于测试学生管理系统 public class Main { public static void main(String[] args) { StudentManagementSystem sms new StudentManagementSystem(); // 添加学生 sms.addStudent(new Student(1, "Alice", 20)…

多Agent框架及协作机制详解

文章目录 一、多智能体系统介绍1.1 多智能体系统定义1.2 多智能体协作1.3 协作类型1.4 协作策略1.5 通信结构1.6 协调与编排 1.3 多智能体与单智能体对比1.4 应用场景 二、多Agent开发框架AutoGenMetaGPTLangGraphSwarmCrewAI 三、多智能体协作方式3.1 MetaGPT:SOP驱…

AI Agent破局:智能化与生态系统标准化的颠覆性融合!

Hi!好久不见 云边有个稻草人-个人主页 热门文章_云边有个稻草人的博客-本篇文章所属专栏~ 目录 一、引言 二、AI Agent的基本概念 2.1 定义与分类 2.2 AI Agent的工作原理 2.3 示例代码:AI Agent的基本实现 三、AI Agent在企业数字化转型中的应用 …

在阿里云和树莓派上编写一个守护进程程序

目录 一、阿里云邮件守护进程 1. 安装必要库 2. 创建邮件发送脚本 mail_daemon.py 3. 设置后台运行 二、树莓派串口守护进程 1. 启用树莓派串口 2. 安装依赖库 3. 创建串口输出脚本 serial_daemon.py 4. 设置开机自启 5. 使用串口助手接收 一、阿里云邮件守护进程 1.…

Python----深度学习(全连接与链式求导法则)

一、机器学习和深度学习的区别 机器学习:利用计算机、概率论、统计学等知识,输入数据,让计算机学会新知 识。机器学习的过程,就是训练数据去优化目标函数。 深度学习:是一种特殊的机器学习,具有强大的能力和…

Python爬虫实战:获取网易新闻数据

一、引言 随着互联网的飞速发展,网络上蕴含着海量的信息资源。新闻数据作为其中的重要组成部分,对于舆情分析、市场研究、信息传播等多个领域具有重要价值。网易新闻作为国内知名的新闻平台,拥有丰富多样的新闻内容。使用 Python 的 Scrapy 框架进行网易新闻数据的爬取,可…

matlab论文图一的地形区域图的球形展示Version_1

matlab论文图一的地形区域图的球形展示Version_1 图片 此图来源于: ![Jieqiong Zhou, Ziyin Wu, Dineng Zhao, Weibing Guan, Chao Zhu, Burg Flemming, Giant sand waves on the Taiwan Banks, southern Taiwan Strait: Distribution, morphometric relationship…

蓝桥杯:连连看

本题大意要我们在一个给定的nxm的矩形数组中找出符合条件的格子 条件如下: 1.数值相同 2.两个横坐标和纵坐标的差值相等(由此可得是一个对角线上的格子) 那么根据以上条件我们可以用HashMap来解决这个问题,统计对角线上数值相同…

PHP中的ReflectionClass讲解【详细版】

快餐: ReflectionClass精简版 在PHP中,ReflectionClass是一个功能强大的反射类,它就像是一个类的“X光透视镜”,能让我们在程序运行时深入了解类的内部结构和各种细节。 一、反射类的基本概念和重要性 反射是指在程序运行期间获…

微信小程序中,将搜索组件获取的值传递给父页面(如 index 页面)可以通过 自定义事件 或 页面引用 实现

将搜索组件获取的值传递给父页面(如 index 页面)可以通过 自定义事件 或 页面引用 实现 方法 1:自定义事件(推荐) 步骤 1:搜索组件内触发事件 在搜索组件的 JS 中,当获取到搜索值时&#xff0c…

Django 实现服务器主动给客户端发送消息的几种常见方式及其区别

Django Channels 原理 :Django Channels 是 Django 的一个扩展,它通过使用 WebSockets 等协议来处理长连接,使服务器能够与客户端建立持久连接,从而实现双向通信。一旦连接建立,服务器可以随时主动向客户端发送消息。…

PHP最新好看UI个人引导页网页源码

PHP最新好看UI个人引导页网页源码 采用PHP、HTML、CSS及JavaScript等前端技术,构建了一个既美观又实用的个人主页解决方案。 源码设计初衷在于提供一个高度可定制、跨平台兼容的模板,让用户无需深厚的编程基础,即可快速搭建出专业且富有创意的…

HarmonyOS学习 实验九:@State和@Prop装饰器的使用方法

HarmonyOS应用开发:父子组件状态管理实验报告 引言 在HarmonyOS应用开发领域,组件之间的状态管理是一个至关重要的概念。通过有效的状态管理,我们可以确保应用的数据流动清晰、可预测,从而提升应用的稳定性和可维护性。本次实验…

12.第二阶段x64游戏实战-远程调试

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:11.第二阶段x64游戏实战-框架代码细节优化 本次写的内容是关于调试、排错相关的…

c++基础三

1.继承 继承表示,子类可以获取父类的属性和方法,然后可以写子类独有的属性和方法,或者修改父类的方法。类可以继承父类的公共成员(public),但不能继承私有成员(private),私有成员只能在父类内部访问。 1.1 案例一单继承 #include <iostream>using namespace …

JSON学习笔记

文章目录 1. JSON是什么2. JSON的特点与结构3. JSON的使用4. JSON文件读取 1. JSON是什么 JSON&#xff08;JavaScript Object Notation&#xff0c;JavaScript对象表示法&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和…

王牌学院,25西电通信工程学院(考研录取情况)

1、通信工程学院各个方向 2、通信工程学院近三年复试分数线对比 学长、学姐分析 由表可看出&#xff1a; 1、信息与通信工程25年相较于24年上升5分、军队指挥学25年相较于24年上升30分 2、新一代电子信息技术&#xff08;专硕&#xff09;25年相较于24年下降25分、通信工程&…

WPF依赖注入IHostApplicationLifetime关闭程序

WPF依赖注入IHostApplicationLifetime关闭程序 使用Application.Current.Shutdown();退出会报异常 应该使用 app.Dispatcher.InvokeShutdown(); Application.Current.Shutdown();app.Dispatcher.InvokeShutdown();static App app new();[STAThread]public static void Main(…

Jenkins 代理自动化-dotnet程序

两种方式 容器部署 本地部署 容器部署 可自动实现&#xff0c;服务器重启&#xff0c;容器自动运行 主要将dockerfile 写好 本地部署 1.服务器重启自动运行代理 参考下面的链接&#xff0c;只是把程序换成 java程序&#xff0c;提前确认好需要的jdk版本 Ubuntu20.04 设置开机…