繁体   English   中英

如何将大熊猫数据帧转换为流数据帧?

[英]how can I convert a big pandas dataframe to a streaming data frame?

在此处输入图片说明 我有一个包含时间戳、ID、产品、价格和超过 50 列的熊猫数据框。

我想将此数据帧转换为流数据帧。 例如,每 10 秒,我想接收 10 个原始数据或 1 个原始数据,然后在接下来的 10 个原始数据或 1 个原始数据之后,直到数据帧结束。

我查看了 streamz 库,但找不到合适的函数。

通过这种方式,我计划应用一些可视化,并进行一些功能聚合或进一步分析。

>>>df.head()

以前,我通过使用pd.date_range()创建具有所需间隔的时间,然后按范围内的时间对原始数据帧进行切片,从而解决了类似的问题。

例如。

times = pd.date_range(start=13:00, end=15:00, freq=T)
for t in times:
    df_instance = df[df["Time"]<t]
    Do something

发布这个小解决方案来解决您的问题。

import pandas as pd
import schedule

df = pd.read_csv('file.csv', iterator=True, chunksize=2)

def get_next_row():
    row = next(df)
    print(row)
    # do_some_thing_with_row(row)

schedule.every(5).seconds.do(get_next_row)

while True:
    try:
        schedule.run_pending()
    except StopIteration as e:
        print("EOF")
        break

上面的代码基本上调用get_next_row函数并在 5 秒的间隔内每读取 2 行并打印行。 您可以添加功能而不是打印。 一旦到达 EOF,它将抛出StopIteraton异常。

现在,您可以根据自己的要求调整间隔和块大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM