大时间序列数据上不同大小的块

2024-06-26 01:53:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将一个大数据集导入到pandas dataframe中,以便进行一些数据操作。你知道吗

我发现一个很好的方法是:

  • 使用分块加载和处理数据帧大块。破碎一个任务被分解,分别处理不同的部分,然后将它们组合起来。你知道吗

如果我将chuncksize定义为1000:

pd.read_sql_query(sql=query, con=engine, chunksize=1000)

循环的每次迭代将1000行读入一个数据帧。你知道吗

但是,我的数据帧有一个日期列,我需要确保每个块都包含每个产品(SKU列)的整个时间序列(日期列)。你知道吗

  DATE     STORE   COD  SKU  UNITS_SOLD
2018-02-01  HD01    CD  70  539.000
2018-03-01  HD01    CD  70  511.000
2018-04-01  HD01    CD  70  468.000
2018-05-01  HD01    CD  70  447.000
2018-06-01  HD01    CD  70  382.000
2018-07-01  HD01    CD  70  348.000
2018-02-01  HA01    CD  80  539.000
2018-03-01  HA01    CD  80  511.000
2018-04-01  HA01    CD  80  468.000
2018-05-01  HA01    CD  80  447.000
2018-06-01  HA01    CD  80  382.000
2018-07-01  HA01    CD  80  348.000

确保每个区块返回整个产品历史记录的最佳方法是什么? 如果这1000行中有一个产品是不完整的,我想避免分成2块。你知道吗


Tags: 数据方法dataframepandassql定义产品cd
2条回答

您可能应该在发送的SQL中使用groupby,这意味着您需要遍历SKU的所有可能值。如果您首先在服务器端设置一个视图,该视图以这种方式显式地对数据进行排序,那么您可以使用分块。你知道吗

如果你想使用timeseries,我认为使用块不是一个正确的方法。你应该使用groupby,然后应用你喜欢的分析。在熊猫/达斯克基本上是一样的。假设您只想知道每个sku的商店数量

import dask.dataframe as dd
import pandas as pd

df = dd.read_csv("file.csv") 
out = df.groupby('SKU')["STORE"].nunique().compute()

相关问题 更多 >