0

0

使用 Pandas 加速 SQL 表格数据重构的实用指南

碧海醫心

碧海醫心

发布时间:2025-10-18 12:32:01

|

942人浏览过

|

来源于php中文网

原创

使用 pandas 加速 sql 表格数据重构的实用指南

本文旨在提供一种高效的方法,利用 Pandas 库对从 SQL 数据库中提取的数据进行重构,特别是将长格式数据转换为宽格式数据。我们将探讨如何通过预先筛选数据和使用 `pivot` 或 `set_index/unstack` 方法来优化数据重构过程,并讨论在 Python 中进行此类操作的性能瓶颈。同时,我们还会介绍如何在 SQL 查询层面进行数据透视,以获得更高的性能提升。

Pandas 数据重构优化

当从 SQL 数据库中提取数据并需要将其重构为特定格式时,Pandas 提供了强大的工具。以下是一些优化技巧,可以显著提高数据重构的速度。

1. 预先筛选数据

如果只需要数据集中特定类别的数据,例如示例中的 'A'、'B'、'C' 和 'D',则在进行数据透视之前,务必先筛选掉不需要的数据。这可以显著减少需要处理的数据量,从而提高性能。

import pandas as pd

# 假设 df 是从 SQL 数据库中读取的 Pandas DataFrame
agg_df = df.query("QuantityMeasured in ['A', 'B', 'C', 'D']")

2. 使用 pivot 函数

Pandas 的 pivot 函数是重构数据的常用方法。它允许你指定索引列、列和值,从而将长格式数据转换为宽格式数据。

pivot_df = agg_df.pivot(index='Time', columns='QuantityMeasured', values='Value')
time = pivot_df.index.tolist()
A = pivot_df['A'].tolist()
B = pivot_df['B'].tolist()
C = pivot_df['C'].tolist()
D = pivot_df['D'].tolist()

3. 使用 set_index 和 unstack

pivot 函数底层实际上是 set_index 和 unstack 的组合。在某些情况下,直接使用这两个函数可能会略微提高性能。

agg_df = (
    df
    .query("QuantityMeasured in ['A', 'B', 'C', 'D']")
    .set_index(['Time', 'QuantityMeasured'])['Value'].unstack()
)

4. 将结果转换为列表

如果需要将重构后的数据转换为列表,可以使用 values.tolist() 方法。

我的小书坊源码(三层实现)
我的小书坊源码(三层实现)

可以实现用户的在线注册、登陆后可以添加图书、购买图书,可以对图书类别、出版社、价格等进行饼图分析默认帐号/密码:51aspx/51aspx该系统采用三层接口开发,App_Code下为三层结构的代码文件,适合三层入门者学习使用数据绑定控件使用的是GridView,顶部公用文件采用了UserControl用户控件调用DB_51aspx下为Sql数据库文件,附件即可【该源码由51aspx提供】

下载
time = agg_df.index.tolist()
list_of_A, list_of_B, list_of_C, list_of_D = agg_df.values.T.tolist()

SQL 数据透视

虽然 Pandas 提供了强大的数据重构功能,但在某些情况下,在 SQL 查询层面进行数据透视可能更有效。这可以将数据重构的负担转移到数据库服务器,从而减轻 Python 程序的负担。

以下是一个示例 SQL 查询,用于将数据透视为所需的格式:

SELECT
  Time,
  SUM(CASE WHEN QuantityMeasured = 'A' THEN Value ELSE 0 END) AS A,
  SUM(CASE WHEN QuantityMeasured = 'B' THEN Value ELSE 0 END) AS B,
  SUM(CASE WHEN QuantityMeasured = 'C' THEN Value ELSE 0 END) AS C,
  SUM(CASE WHEN QuantityMeasured = 'D' THEN Value ELSE 0 END) AS D
FROM your_table_name  -- 将 your_table_name 替换为你的表名
GROUP BY Time;

此查询使用 CASE 语句和 SUM 函数来根据 QuantityMeasured 列的值计算每个 Time 的总和。结果是一个宽格式的表,其中每一列代表一个 QuantityMeasured 值。

优点:

  • 性能提升: 在数据库服务器上进行数据透视通常比在 Python 中使用 Pandas 更快。
  • 减少数据传输: 通过在数据库中进行数据透视,可以减少需要传输到 Python 程序的数据量。

缺点:

  • SQL 复杂性: 编写 SQL 查询进行数据透视可能比使用 Pandas 更复杂。
  • 数据库依赖性: 此方法依赖于数据库服务器的功能。

性能考量

在 Python 中进行数据重构的性能受到多种因素的影响,包括数据量、数据类型和硬件配置。对于中等大小的数据集(例如 18.5k 数据点),期望在 0.02 秒内完成数据透视可能不切实际。

虽然可以通过优化 Pandas 代码或使用 SQL 数据透视来提高性能,但仍然存在一些限制。如果需要更高的性能,可以考虑使用更强大的硬件或使用其他数据处理技术,例如 Apache Spark。

总结

本文介绍了如何使用 Pandas 和 SQL 来加速 SQL 表格数据的重构。通过预先筛选数据、使用 pivot 或 set_index/unstack 方法以及在 SQL 查询层面进行数据透视,可以显著提高数据重构的速度。在选择最佳方法时,应考虑数据量、性能要求和 SQL 复杂性等因素。记住,在数据库层面进行数据透视通常能带来显著的性能提升,尤其是在处理大量数据时。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

707

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

625

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

734

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

616

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1234

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

573

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

695

2023.08.11

笔记本电脑卡反应很慢处理方法汇总
笔记本电脑卡反应很慢处理方法汇总

本专题整合了笔记本电脑卡反应慢解决方法,阅读专题下面的文章了解更多详细内容。

1

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Django 教程
Django 教程

共28课时 | 2.4万人学习

SciPy 教程
SciPy 教程

共10课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号