python如何处理文件_如何处理python中的大文件

如何处理python中的大文件

作者:PHPYuan 时间:2019-03-31 03:40:35

5965cfa0b0d51fa108a53a2357b7bfa1.png

当只有一台机器可用时,一些数据科学爱好者在处理大型数据文件时遇到了困难。文件大小可能会超过计算机中的可用内存。在大多数数据科学项目中,可以对文件进行拆分处理,以获得机器学习模型所需的数据。例如,按操作分组以获得均值、中位数、最大值、求和或其他值。这将生成一个可以在内存中处理的较小版本的文件。现在的任务是如何将大文件分割成更小的块。

熟悉unix的人会说,使用shell命令或awk可以很容易地完成。文件可以按行、列、列值、大小等进行拆分。以下是两个常见的例子:

1.Unix命令按行数拆分myfile。-l参数定义每个拆分中的最大行数。输出文件如splitfileaa,splitfileab等。split -l 500 myfile splitfile

2. Unix命令按文件大小拆分。-b参数定义输出的文件大小。同样,输出将具有上面示例中的名称。split -b 40k myfile splitfile

注意,unix中的awk命令可用于创建按列中的值拆分的不同文件。

将数据拆分到更小的部分后,机器学习开发者就可以在一台机器上进行处理。python中的panda有能力处理这些情况。下面是一个以块的形式读取大文件并动态处理的例子。Python代码示例如下:import pandas as pd

# Split data into smaller chunks and process in parts

chunk_size = 100000

required_data = pd.DataFrame()

for data in pd.read_csv(myfile,chunksize = chunk_size):

data["datetime"]= pd.to_datetime(data["timestamp"],unit = 's')

data["datetime"]=data["datetime"].dt.tz_localize('UTC').dt.tz_convert('Asia/Kolkata')

data["date"] =data["datetime"].dt.date

data["week"] =data["datetime"].dt.week

data["hour"] = data["datetime"].dt.hour

data["weekday"] = data["datetime"].dt.day_name()

required_data_chunk = data.groupby(["id","date","week","weekday","hour"])["datetime"].count()

required_data_chunk = pd.DataFrame(required_data_chunk)

required_data_chunk.reset_index(inplace=True)

required_data = required_data.append(required_data_chunk)

# Merge the processed data splits into one file

required_data_final = required_data[["id","date","week","weekday","hour","datetime"]].groupby(

["driver_id","date","week","weekday","hour"])["datetime"].sum()

required_data_final = pd.DataFrame(required_data_final)

required_data_final.reset_index(inplace=True)

2daaf18f1a89fc8b47fe5e4f78d7f339.png

对于R用户,可以使用包,如data.table。

分享到:

<< 上一篇:利用Python制作一个连连看小游戏,边学边玩! (2019-03-31 03:40)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值