当只有一台机器可用时,一些数据科学爱好者在处理大型数据文件时遇到了困难。文件大小可能会超过计算机中的可用内存。在大多数数据科学项目中,可以对文件进行拆分处理,以获得机器学习模型所需的数据。例如,按操作分组以获得均值、中位数、最大值、求和或其他值。这将生成一个可以在内存中处理的较小版本的文件。现在的任务是如何将大文件分割成更小的块。
熟悉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 partschunk_size = 100000required_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.ret_index(inplace=True) required_data = required_data.append(required_data_chunk)# Merge the procesd data splits into one filerequired_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.ret_index(inplace=True)
对于R用户,可以使用包,如data.table。
本文发布于:2023-02-28 20:13:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/167766323281826.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:filesplit.doc
本文 PDF 下载地址:filesplit.pdf
留言与评论(共有 0 条评论) |