V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
LeeReamond
V2EX  ›  Python

有关生产环境下替代 pandas 新一代的一些数据分析框架,有用过的朋友吗

  •  
  •   LeeReamond · 2022-04-03 14:52:49 +08:00 · 3299 次点击
    这是一个创建于 970 天前的主题,其中的信息可能已经有所发展或是发生改变。

    首页看见几个数据分析的帖子了,看到了一些新的以前没了解过的框架,像 polars 和 spark 这些,想问下有没有用过的朋友

    需求:

    目前有需求需要实时计算,非时间敏感型,单次运算参与行数 10-100 万行。

    考虑生产环境下总有一些逻辑稍复杂的运算不能直接通过分析框架内置函数实现,需要兼顾考虑自定义开发的灵活度,不知道新框架有没有替代老框架的潜力。

    比如典型需求,数据库中取出以下数据:

    行  时间戳                 敏感度 A    流量 B
    1   2022-01-01 12:12:12   12000      10
    2   2022-01-01 12:12:13   22000      NAN
    3   2022-01-01 12:12:14   22000      12
    ...
    

    典型需求 1:源数据中不可避免包含空数据,需要补全,比如上述第 2 行最后一项是空的,需要向上补齐(填充上一行数据 10 )或者向左补齐(填充左项数据 22000 )

    典型需求 2:开窗函数(?),计算以该行之前累计 7 天 /28 天流量和,不确定是否可以称为开窗,因为向上 7*24 小时内行数并不固定。

    典型需求 3:从头累计,比如上述数据中流量 B 的从头累计(补全数据后)希望得到的是第一行累计 10 ,第二行累计 22 ,第三行累计 34 ,以此类推

    当然包括加和平均数等等最基础功能都需要用这不提了。

    目前的方案是数据库取出来后 numpy 处理,处理不了的用 pyo3 接入 rust 然后自己实现逻辑,因为 pyo3 可以直接对接 rust 内存,效率方面倒是尚可,但是其实很多逻辑用 numpy 感觉都不是很好做,总体感觉还是不很舒服。

    看到论坛朋友发帖跑分方面似乎新框架远胜老的这些,不知道复杂逻辑的需求环境实际用起来如何,有必要学习吗?

    11 条回复    2022-04-12 16:25:43 +08:00
    leimao
        1
    leimao  
       2022-04-03 15:08:41 +08:00
    Rapids
    David1119
        2
    David1119  
       2022-04-03 15:26:02 +08:00
    pyflink 啊,流批一体方便的很,udf 灵活定制
    WildCat
        3
    WildCat  
       2022-04-03 15:29:16 +08:00
    非实时计算用 Rust 的开发成本是不是太高了?
    pengtdyd
        4
    pengtdyd  
       2022-04-03 15:32:07 +08:00
    没有 PB 级数据发挥不出 spark 的优势
    srlp
        5
    srlp  
       2022-04-03 16:26:07 +08:00 via iPhone
    非时间敏感,且只有百万行,为什么不先尝试 pandas ?测试过有什么瓶颈吗?

    非实时计算没必要上 pyflink 。百万行也不算“大数据”没必要用 spark 。学习和搭建完生产环境都已经够用 numpy pandas 写完逻辑了
    srlp
        6
    srlp  
       2022-04-03 16:26:52 +08:00 via iPhone
    如果要实时计算的话,那么 flink 几乎是最佳选择了
    janxin
        7
    janxin  
       2022-04-03 21:06:47 +08:00
    单纯跑分没啥意义吧,pandas 这么好使没什么迁移的欲望啊
    LeeReamond
        8
    LeeReamond  
    OP
       2022-04-03 21:45:22 +08:00
    @srlp 目前已有解决方案,发帖想询问一下新框架的提升空间
    lizytalk
        9
    lizytalk  
       2022-04-03 23:40:35 +08:00 via iPhone
    只用内存空间就能跑完的数据量,用 pandas 和 numpy 就挺好的。
    LeeReamond
        10
    LeeReamond  
    OP
       2022-04-04 05:30:17 +08:00
    @lizytalk
    @srlp
    @janxin Pandas 确实很好用,但 pandas 无法覆盖 100%场景,即使 pandas 能覆盖 80%,其余的 20%原生代码成为性能瓶颈解决起来很头痛。而我看新框架有原生自定义 dll 插件的功能,感觉很有吸引力,但由于搜到的相关信息很少
    dongxiao
        11
    dongxiao  
       2022-04-12 16:25:43 +08:00
    试试 ‘dask‘
    https://dask.org/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1210 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 18:38 · PVG 02:38 · LAX 10:38 · JFK 13:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.