當只有一臺機器可用時,一些數據科學愛好者在處理大型數據文件時遇到了困難。文件大小可能會超過計算機中的可用內存。在大多數數據科學項目中,可以對文件進行拆分處理,以獲得機器學習模型所需的數據。例如,按操作分組以獲得均值、中位數、最大值、求和或其他值。這將生成一個可以在內存中處理的較小版本的文件。現在的任務是如何將大文件分割成更小的塊。
熟悉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,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167766323281826.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:filesplit.doc
本文 PDF 下載地址:filesplit.pdf
| 留言與評論(共有 0 條評論) |