如何處理python中的大檔案

如何處理python中的大檔案

當只有一臺機器可用時,一些資料科學愛好者在處理大型資料檔案時遇到了困難。檔案大小可能會超過計算機中的可用記憶體。在大多數資料科學專案中,可以對檔案進行拆分處理,以獲得機器學習模型所需的資料。例如,按操作分組以獲得均值、中位數、最大值、求和或其他值。這將生成一個可以在記憶體中處理的較小版本的檔案。現在的任務是如何將大檔案分割成更小的塊。

熟悉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。reset_index(inplace=True) required_data = required_data。append(required_data_chunk)# Merge the processed 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。reset_index(inplace=True)

如何處理python中的大檔案

對於R使用者,可以使用包,如data。table。