我已经阅读了几篇关于如何使用跳绳和块大小等思想逐步加载CSV的文章,但是没有什么适合我的特定用例。理想情况下,我希望可以像下推谓词那样工作。
我的csv大(860万行),只想加载过去一周的数据。文件中有一个指定日期的字段,我当前正在加载整个df,然后按日期进行过滤。我不确定是否可以完全跳过加载旧记录,但这是我的目标。可以吗?
编辑:这是我正在使用的代码:
import boto3
S3Client = boto3.client('s3','us-east-1')
obj = S3Client.get_object(Bucket = 'bucket_name', Key = 'some_key')
df = pd.read_csv(io.BytesIO(obj['Body'].read()))
,数据的格式如下:
|'Cust_ID'|'Type'|'Date_of_activity'|'Amount'|'Item_count'|'time_of_order'|
---------------------------------------------------------------------------
|1234 |OL |12-12-2019 |1234 |10 |23:34 |
|5678 |IS |12-12-2019 |8765 |50 |11:34 |
|9101 |OL |12-13-2019 |1504 |17 |3:45 |
我正在针对2个单独的CSV进行此操作,每个CSV都有大约8-10百万条记录。
加载数据帧后,我正在进行一些连接,过滤和聚合,与仅使用标准CSV模块相比,这在熊猫中要容易得多。我不认为chunk_size
会起作用,因为从我阅读的内容来看,它实际上不允许我根据'Date_of_activity'
进行过滤,它一次只能加载一定数量的行。
基本上,情况是我们每周都会收到一次总的/完整的历史数据转储,而实际上,我们需要的只是前一周的订单。