大数据应用

发布时间:2024-12-31 07:51

科技进步导致了大量数据的产生,大数据分析在各行各业应用广泛 #生活知识# #科技生活# #科技影响分析#

更多详情请点击查看原文:大数据应用 | Python 处理大数据集的效率提升技巧(上)

本文目录

一、前言

二、程序效率提升小技巧

分批处理技巧

使用轻量化的多进程

更新 pandas

三、总结

四、相关推荐

本文共 2028 个字,阅读大约需要  6 分钟,欢迎指正!

Part1 前言

社科数据中不少微观数据体积巨大,占用空间也非常大,有时候使用 Python 处理起来会比较慢。很多时候内存容量,计算量等因素确实影响程序的运行效率,但也有不少情况是因为你的代码优化的不够好,导致计算机和 Python 解释器的性能没有完全发挥出来。那么这一期文章我们就围绕如何在数据处理时提升程序效率展开讨论,并向大家分享几个程序效率提升的小技巧。

Part2 程序效率提升小技巧

1. 分批处理技巧

处理微观数据集时,数据量往往非常大,无法一次性将数据读入内存中进行处理,这时就可以使用pd.read_csv()函数并利用chunksize参数进行分批读入分批处理。这时就可以避免因数据集过大而带来的问题,不过这里还有一个问题,每个批次的数据量,即参数chunksize的值设置为多大比较合适呢?笔者做了一个简单的实验,在分批处理一个较大数据集时,设置不同大小的chunksize并记录程序运行总时长,相关代码如下。

import time      # 计时

from tqdm import tqdm     # 进度条

# 创建分批读取

DATA = pd.read_csv(DataDir,

                    nrows=1000000,     # 最多读取数据集的前1000000 行

                    chunksize=10) # 分批读入时每个批次的数据量

#记录读取和处理前的时间戳

start_time = time.time

# 执行分批读取

for df in tqdm(DATA):

    # 对每一批次数据都进行相同的处理

    df['prefixes'] = df['prefixes'].apply(lambda x:eval(x))

# 记录读取和处理后的时间戳

end_time = time.time

# 输出程序运行总用时

print(f'程序总用时: {end_time-start_time} 秒。')

为了尽快得到测试结果,每次最多只读取数据集的前 100000 行,经过一轮测试,得到了以下数据。

图片

通过这个测试结果可以得出一个结论,分批处理过程中,每个批次的数据量确实会影响程序的执行时间,当每批次数据量较小时,总批次数会比较大,这样很多时间都用在了 for 循环以及函数的调用上面;适当增加每批次数据量后,程序的耗时直线下降;随后,每批次数据量到达某个值后,程序总用时会非常短,最后一直增加批次数据量反而会导致程序耗时不降反增,这说明批次的大小是影响程序运行效率的一个重要因素。从测试结果来看,分批处理数据时,为每批次设置合适的数据量会很大程度提高程序运行效率,不过我们使用分批处理的根本原因是避免内存不够带来的问题,那么在实际的使用中也需要考虑内存的问题,不宜设置过大的批次数据量。

2. 使用轻量化的多进程

我们平时使用 Python 处理数据用的基本上都是单进程,如果想成倍的提升程序效率,那么可以使用多进程模型来处理数据,充分发挥计算机 CPU 的多核性能。常规的多进程模型用起来会比较麻烦,于是有开发者适配了一些专门用来在 Pandas 上使用多进程的接口,例如第三方库Pandarallel。这是一个简单而有效的 Pandas 并行化加速工具,仅通过一行代码的更改就可以在所有平台上利用所有可用 CPU 并行 Pandas 操作。

图片

图片

这个工具库的使用也非常简单,在终端中使用下面的命令进行安装。

pip install pandarallel

安装后通过以下代码进行初始化。

# 导入

from pandarallel import pandarallel

# 设置显示进度条,并设置并行进程数量为 6,同时这也是默认的进程数

pandarallel.initialize(progress_bar=True, nb_workers=6)

最后,在使用 Pandas 的 apply(func) 和 applymap(func) 时分别将其替换为parallel_apply(func)和parallel_applymap(func)即可。需要注意的是,如果调用的函数func中需要使用一些库,需要在函数内部导入才可以正常启动多进程。

3. 更新 pandas

在少数情况下(例如使用 Pandas 分批读取 Stata 的 dta 数据集时),Pandas 的版本也极大的影响了程序效率。这是因为部分旧版本的 Pandas 在某些方面还没有完全优化好,当你发现程序速度很慢时,说不定是还没使用新版本的 Pandas,不妨更新 Pandas 后再试试看。

Part3 总结

 本期文章我们向大家分享了几个简单但是能够在一定程度上提升 Python 代码效率的小技巧,希望能给您提供帮助。下期文章我们将继续分享 Python 处理大数据集的效率提升技巧,敬请期待!

Part4 相关推荐

Python 教学

•  Python 教学 | 学习 Python 第一步——环境安装与配置

•  Python 教学 | Python 基本数据类型

•  Python 教学 | Python 字符串操作(上)

•  Python 教学 | Python 字符串操作(下)

•  Python 教学 | Python 变量与基本运算

•  Python 教学 | 组合数据类型-列表

•  Python 教学 | 组合数据类型-集合(内含实例)

•  Python 教学 | 组合数据类型 - 字典&元组

•  Python 教学 | Python 中的分支结构(判断语句)

•  Python 教学 | Python 中的循环结构(上)

•  Python 教学 | Python 中的循环结构(下)

•  Python 教学 | Python 函数的定义与调用

•  Python 教学 | Python 内置函数

•  Python 教学 | 最常用的标准库之一 —— os

•  Python 教学 | 盘点 Python 数据处理常用标准库

•  Python 教学 | “小白”友好型正则表达式教学(一)

•  Python 教学 | “小白”友好型正则表达式教学(二)

•  Python 教学 | “小白”友好型正则表达式教学(三)

•  Python 教学 | 数据处理必备工具之 Pandas(基础篇)

•  Python 教学 | 数据处理必备工具之 Pandas(数据的读取与导出)

•  Python 教学 | Pandas 数据索引与数据选取

•  Python 教学 | Pandas 妙不可言的条件数据筛选

•  Python 教学 | Pandas 缺失值与重复值的处理方法

•  Python 教学 | Pandas 表格数据行列变换

•  Python 教学 | Pandas 表格字段类型精讲(含类型转换)

•  Python 教学 | Pandas 数据合并(含目录文件合并案例)

•  Python 教学 | Pandas 数据匹配(含实操案例)

•  Python 教学 | Pandas 函数应用(apply/map)【上】

•  Python 教学 | Pandas 函数应用(apply/map)【下】

•  Python 教学 | Pandas 分组聚合与数据排序

•  Python 教学 | Pandas 时间数据处理方法

•  Python 教学 | 列表推导式 & 字典推导式

•  Python 教学 | 一文搞懂面向对象中的“类和实例”

•  Python 教学 | Python 学习路线+经验分享,新手必看!

•  Python 教学 | 解密 Windows 中的 Path 环境变量

•  Python 教学 | Jupyter Notebook 中那些十分有用的魔术命令

•  Python 教学 | 数据分析必知必会——数据透视表

•  Python 教学 | 盘点Python 数据处理常用标准库(第2期)

Python实战

•  Python实战 | 如何使用 Python 调用 API

•  Python 实战 | 使用正则表达式从文本中提取指标

•  大数据分析 | 用 Python 做文本词频分析

•  数据治理 | 从“今天中午吃什么”中学习Python文本相似度计算

•  数据治理 | 省下一个亿!一文读懂如何用python读取并处理PDF中的表格(赠送本文所用的PDF文件)

•  数据治理 | 还在人工识别表格呢?Python 调用百度 OCR API 又快又准

•  数据治理 | 如何用 Python 批量压缩/解压缩文件

•  案例分享:使用 Python 批量处理统计年鉴数据(上)

•  案例分享:使用 Python 批量处理统计年鉴数据(下)

•  Python 实战 | ChatGPT + Python 实现全自动数据处理/可视化

•  ChatGPT在指尖跳舞: open-interpreter实现本地数据采集、处理一条龙

•  Python 实战 | 文本分析之文本关键词提取

•  Python 实战 | 文本分析工具之HanLP入门

•  Python 实战 | 进阶中文分词之 HanLP 词典分词(上)

•  Python 实战 | 进阶中文分词之 HanLP 词典分词(下)

•  Python实战 | 文本文件编码问题的 Python 解决方案

•  Python 实战 | 从 PDF 中提取(框线不全的)表格

•  Python 实战 | 利用 Python 做长宽面板转换(附数据&代码)

•  Python 实战 | 拆分、合并、转换……请查收这份 PDF 操作手册

•  答疑解惑 | 云桌面用户如何使用 Python 连接数据库读写、处理数据

•  Python 实战 | 使用 Python 清洗文本字段中的 HTML 代码

•  答疑解惑 | csv 数据字段错位?导入 Stata 中途报错?到底怎么解决……

•  Python 实战 | 表格中多信息字段的拆分方法(一行变多行)

•  Python 实战 | Python 自动识别文本中的人名、地名、企业名称…… 

•  Python 实战 | 文本分析中停用词的去除(免费赠送停用词库大全)

数据可视化

•  数据可视化 | 讲究!用 Python 制作词云图学问多着呢

•  数据可视化 | 地址数据可视化—教你如何绘制地理散点图和热力图

•  数据可视化 | 太酷了!用 Python 绘制3D地理分布图

•  数据可视化 | 用 Python 制作动感十足的动态柱状图

•  数据可视化 | Python绘制多维柱状图:一图展示西部各省人口变

迁【附本文数据和代码】

•  数据可视化 | 3D 柱状图一览各省农民合作社存量近十年变化

•  数据可视化 | 一文了解什么是相关性分析热力图

网址:大数据应用 https://www.yuejiaxmz.com/news/view/612688

相关内容

大数据应用 数据安全管理责任指南
大数据在日常生活中的具体应用,大数据在日常生活中应用的行业
大数据应用正深入经济生活
六大数据驱动型应用场景 帮你运用数据将企业价值最大化 – 数治网
数据分析常被应用于哪些领域?数据分析最常应用的4大场景
AI 大模型应用数据中心建设:数据中心绿色节能
大数据在智能家居中的应用
大数据在生活中有什么应用(一)
大数据应用场景之智慧教育 .pdf
探析大数据在生活中的相关应用

随便看看