作为数据分析工作者,我们每天都要处理大量数据,这时Pandas等工具的读取性能也就备受关注。特别是当数据集达到百万行以上时,如何提高读取效率,让数据分析工作跑上“快车道”?本文将详细分析Pandas读取大数据的性能优化方法,以及一些建议和经验。

1. 使用SQL进行预处理

可以通过SQL先过滤和筛选出需要的字段和数据,然后再读取到Pandas。这可以最大限度减少读取的数据量,加快读取速度。


2. 设置chunksize

在读取数据时指定chunksize参数,这会将数据分块读取到Pandas,而不是将整个数据集载入内存。例如:

data = pd.read_sql_query(sql, engine1, chunksize=100000) 

这会每次读取10万行数据到Pandas。这可以大大减少内存使用,防止内存溢出。


3. 指定index_col

指定index_col参数可以跳过某一列的数据读取,这能减少读取的数据量,提高速度。


4. 采用pandas.read_sql_table而非read_sql_query

read_sql_table方法可以更快速高效的读取SQL数据库表到Pandas。因此,如果是读取整个表的数据,建议使用此方法。


5. 设置row_chunk
与chunksize相似,但本参数指定的是每次读取的行数。这也能分块读取数据,减少内存消耗,加快速度。


6. 选择更快的读取方式
可以尝试使用其他更快的读取方式,如:
- MySQL -> pymysql
- Postgres -> psycopg2
- SQL Server -> pymssql
这些库的读取性能会优于纯Pandas读取方法。


7. 减少列的读取
在SQL查询中仅选择需要的列,避免读取无关列的数据。这也可以显著减少读取的数据量,优化性能。


8. 使用数据分析环境

可以考虑使用更强大的数据分析环境,如PySpark。其分布式计算能力会大大优于Pandas在单机上操作大数据集。

:从常见的Excel和CSV到JSON及各种 数据 库, Pandas 几乎支持市面上所有的主流 数据 存储形式。作者:李庆辉来源:大 数据 DT(ID:hzdashuju) Pandas 提供了一组顶层的I/O API,如 pandas .read_csv()等方 ,这些方 可以将众多格式的 数据 取到DataFrame 数据 结构中,经过分析处理后,再通过类似DataFrame.to_csv(... 使用 python 取mysql 数据 数据 ,介绍pymysql的用 、参数使用注意事项、以及 取decimal类型 数据 时出现默认转化成float丢失精度的问题。 通过使用 Pandas 的 read_csv 函数,chunksize 参数,query 函数和 groupby 函数,您可以轻松地 取,过滤,分组和聚合大 数据 集。如果您是 数据 科学或机器学习的从业者,学习如何使用 Pandas 处理大 数据 集是非常重要的技能之一。如果您正在使用 Python ,您会发现 Pandas 是一种非常流行的 数据 分析库,可以轻松处理大 数据 集。如果您需要对大 数据 集中的 数据 进行分组和聚合,则可以使用 Pandas 的 groupby 函数。 Pandas 作为 数据 分析的屠龙宝刀,毫不夸张的说,功能和优势都极其强大。像是支持GB 数据 处理,多样的 数据 清洗方 ;支持多种开源可视化工具包,更加丰富的 数据 成果展示等等。因此如果能做好 性能优化 ,就可以极大的提高 Pandas 的运行速度。本文为大家总结了四大优化 Pandas 性能的方 ,感兴趣的朋友就赶紧看下去吧! read_sql()的中的参数介绍 read_sql(sql,con,index_col=‘None’,coerce_float=‘True’,params=‘None’,parse_dates=‘None’,columns=‘None’,chunksize:None=‘None’) read_sql方 pandas 中用来在 数据 库中执行指定的SQL语句查询或对指定的整张表进行查询,以DataFrame 的类型返回查询结果. 其中各参数意义如下: sql:需要执行的sql语句 con:连接 数据 库所需的eng 小弟的需求需要在多个 数据 库之间查询 数据 并关联,所以小弟选择了使用 pandas ,通过read_sql 数据 至dataframe加工后直接生成目标 数据 。但是目前遭遇了一个问题:read_sql的速度非常慢,例如,在oracle库中 取37W 数据 量(22个字段)的表至dataframe耗时需要4分半。代码如下:import pandas as pdimport sqlalchemy as sqlora... 这篇笔记测试Mysql、 Pandas Python 列表的大 数据 查询性能。 手中有一张72万余行的 数据 库表,借此机会测试三者的 数据 查询性能,终于解决内心疑问。 测试环境:Ubuntu 20.04 LTS, Python 3.8.2, Intel® Core™ i7-8750H CPU @ 2.20GHz × 12 原 数据 有8列,724100行,sql文件大小 65.5 MB 数据 表第8列为时间,下面用三种方 分别按时间降序,记录每种方 的用时(每种方 测试3次,取平均值) 2. 安装 PyMySQL 库 PyMySQL 库是用于连接 MySQL 服务器的一个库,对应的是 Python 3.x 的版本,如果是 Python 2 要使用 MySqlDb 库。我们在使用 PyMySQL 之前要确保已经安装了该模块,下面我们介绍一下如 pandas 是一个强大而灵活的 Python 包,它可以让你处理带有标签和时间序列的 数据 pandas 提供了一系列的函数来 取不同类型的文件,并返回一个DataFrame对象,这是 pandas 的核心 数据 结构,它可以让你方便地对 数据 进行分析和处理。函数名以read_开头,后面跟着文件的类型,例如read_csv()表示 取CSV文件函数的第一个参数是文件的路径或者类似文件的对象,例如read_csv("data.csv")表示 取data.csv文件,read_csv(url)表示从网址 数据 。 在一个CSV文件中往往存在很多列 数据 ,但并不是所有的列都是我们需要的,此时如果将所有的列都 取出来,无疑会减慢 数据 取速度。)竞赛平台上寻找一些 数据 集来练习,但是发现部分 数据 集是几G甚至几十G的,如图1所示。当刚刚得到一个很大的CSV文件时,迫切想了解 数据 的情况,此时推荐使用DataFrame对象的head()方 和tail()方 ,先查看前5行 数据 和最后5行 数据 。说明:head()方 和tail()方 默认是查看5行 数据 ,如果想查看更多的 数据 可以指定行数,如head(20),查看前20行 数据 。 详情可点击datatable_library[1]。 除此之外,还有一些其他技巧可以在一定程度上帮助我们解决 pandas 的内存问题。它们可能不是最佳的解决方案,但这些技巧有时很方便。而且,了解一下它们对你也没有坏处,对吧?在我之前的一篇文章中,我谈到了两种在 pandas 中加载大型 数据 集[2]的方 。 这两个技巧分别是: 分块:将 数据 集细