Python3,超大文件数据读取困难?那看完这一篇,保证完美解决你的痛点。

news/2024/6/3 3:22:21 标签: python, pandas, 数据结构, 数据分析, 大数据

多种方式读取超大文件数据

  • 1、引言
  • 2、代码实战
    • 2.1 with open
    • 2.2 mmap
    • 2.3 Dask
    • 2.4 Pandas
    • 2.5 Hadoop
    • 2.6 PySpark
  • 3、总结

1、引言

小屌丝:鱼哥,求助,求助!
小鱼:别慌…稳住…
小屌丝:老板让我打开一个超大的文本文件,我这打开不。
小鱼:就这…
小屌丝:那可不咋滴, 老板让我立刻马上麻溜的打开。
小鱼:如果打不开呢?
小屌丝:打不开? 那是不可能的。
小鱼:既然可以打开,那你就打喽。
小屌丝:我要是能打开, 我还跟你说个六啊
小鱼:这绕了一大圈子, 感情是让我替你打开这超大文本文件啊。
在这里插入图片描述

小屌丝:嘿嘿, 鱼哥,我这不是没有办法了嘛
小鱼:我差点信了。
小屌丝:鱼哥,你就信我这一次呗。
小鱼:我信你个腿,你坏的很。
小屌丝:就一次, 保证就一次。
小鱼:好吧…
小屌丝:嘿嘿,那开整了。

2、代码实战

2.1 with open

最常用的方式之一,非常的简单:
代码示例

python">with open('file_name.txt') as f:
	# 循环迭代每一行
    for line in f:

2.2 mmap

mmap 是读取二进制文件,如 图像,视频文件等,也是很简单。
代码示例

python">import mmap
with open('file_name.bin', 'r+b') as f:
    mmapped_file = mmap.mmap(f.fileno(), 0)
    # 对mmapped_file 关闭进行操作
    mmapped_file.close()

2.3 Dask

Dask是Python多流行的库, 这里我就不多说了, 主要处理大型数据集,
使用 dask.dataframe函数,将大型数据集分成多个块,并在每个块上执行操作。
我们来看代码。

代码示例

python">import dask.dataframe as dd
# 读取 CSV 文件
df = dd.read_csv('file_name_data.csv')
# 对数据集进行操作
result = df.groupby('column_name').mean()
# 将结果保存到文件
result.to_csv('result.csv')

2.4 Pandas

Pandas 是处理大文件必备的一个库, 如果你不了解,可以去小鱼的这篇:

  • 数据分析之Pandas从入门到放弃:代码+实战,9分钟带你推开Pandas大门!!!

9分钟就入门, 非常的简单。
当然,这里我也上一个示例。

代码示例

python">import pandas as pd
# 读取 CSV 文件,iterator=True 将文件分块读取
df = pd.read_csv('file_name.csv', iterator=True, chunksize=1000)
for chunk in df:
    # 对每个 chunk 进行处理

2.5 Hadoop

大数据必备的库之一:Hadoop,
这也是小鱼接下来要去搞得方向之一(大数据算法,专栏会在不久跟大家见面。 )

大数据算法专栏
会详细的介绍大数据大数据仓储,大数据算法,发数据应用,大数据测试等技术。
我就不在这里过多的唠叨了

接下来,我就上一个示例,先睹为快

代码示例

python">from hdfs import InsecureClient
client = InsecureClient('http://localhost:80008')
# 读取文件
with client.read('/data/file_name.txt', encoding='utf-8') as reader:
    for line in reader: # 对每一行进行处理
       

2.6 PySpark

PySpark 是 Python 中的 Spark API,它可以并行处理大型数据集。
同样,我们也可以使用 PySpark 读取和处理大型数据文件。

代码示例

python">from pyspark.sql import SparkSession
# 创建 SparkSession 对象
spark = SparkSession.builder.appName('LargeFile').getOrCreate()
# 读取 CSV 文件
df = spark.read.csv('file_name.csv', header=True, inferSchema=True)
# 对数据集进行操作
result = df.groupby('column_name').mean()
# 将结果保存到文件
result.write.csv('result.csv')

3、总结

看到这里,今天的分享差不多就结束了。
今天主要针对超大型数据文本文件的读取进行了一些总结及分享。

  • with open
  • mmap
  • Pandas
  • Dask
  • Hadoop
  • PySpark

当然,如果你有其他好的方法,也可以在评论区进行留言哦 。

我是小鱼

  • CSDN 博客专家
  • 阿里云 专家博主
  • 51CTO博客专家
  • 51认证讲师等
  • 认证金牌面试官
  • 职场面试及培训规划师
  • 多个国内主流技术社区的认证专家博主
  • 多款主流产品(阿里云等)测评一、二等奖获得者

我是小鱼,关注我,带你学习更多更专业更前言的测试开发技术。


http://www.niftyadmin.cn/n/476830.html

相关文章

Spring Boot 中的缓存注解

Spring Boot 中的缓存注解 在 Spring Boot 中,缓存是一个非常重要的话题。当我们需要频繁读取一些数据时,为了提高性能,可以将这些数据缓存起来,避免每次都从数据库中读取。为了实现缓存,Spring Boot 提供了一些缓存注…

Zadig v1.16.0升级到v1.17.0

文章目录 数据备份MongoDB备份MySQL备份 升级 参考官网链接: https://docs.koderover.com/zadig/Zadig%20v1.17.0/release-notes/v1.17.0/#%E5%8A%9F%E8%83%BD%E5%88%97%E8%A1%A8 数据备份 MongoDB备份 rootzz808:~# kubectl get svc -n zadig |grep mongo kr-mon…

Github无法访问的解决方法

文章目录 前言一、Github访问慢以及无法访问的原因二、解决方法1、方法12、方法2 三、总结 前言 git是一个版本控制工具,github是一个用 git 做版本控制的项目托管平台,是世界上最大的开放源代码社区。 一、Github访问慢以及无法访问的原因 GitHub 在中…

十一、jenkins将构建时间作为Jenkins变量(BUILD_TIMESTAMP)

插件管理中安装Build Timestamp 插件后可以使用 构建时间变量,变量名称【BUILD_TIMESTAMP】 引用变量方法: linux : ${BUILD_TIMESTAMP} 或 $BUILD_TIMESTAMP 推荐使用 ${BUILD_TIMESTAMP} Windows: %BUILD_TIMESTAMP%设置 BUILD_TIMES…

Itext 7 生成pdf带有背景图

Itext 7 生成pdf带有背景图并下载PDF到本地 引入jar包 <dependency><groupId>com.itextpdf</groupId><artifactId>itext7-core</artifactId><version>7.0.3</version><type>pom</type></dependency>代码实现 Get…

TypeScript——函数

为函数定义类型 基本类型 function add(x: number, y: number): number {return x y; }let myAdd function(x: number, y: number): number { return x y; };对象类型 interface User {name: string,age: number }function add(user:User) {return user }console.log({na…

Java Swing编写批量模糊替换jar包小工具

用途&#xff1a;由于jar包升级需要对之前jar包进行替换&#xff0c;而版本后缀不一致需要人工手动比对 作用&#xff1a;代码升级后&#xff0c;同一个模块jar包相同只有后缀不同&#xff0c;编写小工具进行比对进行替换名称&#xff0c;避免人工核对 技术点&#xff1a;Java …

给互联网技术爱好者的福音

近年来低代码这一词出现在各种应用场景中&#xff0c;这种开发方式不仅可以提升软件产品的稳定性&#xff0c;同时也会降低开发人员的工作压力&#xff0c;使程序员开发更加高效。低代码平台不仅适用于大型企业&#xff0c;同样也适合中小企业。为了让大家更好的了解低代码平台…