推荐学习书目
› 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
Baboonowen
V2EX  ›  Python

发现一个用 Rust 重写的 Pandas 的替代品,支持 Python

  •  3
     
  •   Baboonowen ·
    reycn · Feb 17, 2023 · 7949 views
    This topic created in 1359 days ago, the information mentioned may be changed or developed.

    我看 V2 好像没有人讨论,就是这个 Polars,库的设计方式就是对标 Pandas 的,API 设计基本相同,稍微改改就能迁移。

    我电脑上同样的任务只需要 20% 的 Pandas 完成时间,有图有真相:

    img

    你们可以自己在自己机器上也跑跑看,这是我的测试代码: https://github.com/reycn/polars-pandas-bench

    28 replies  •  2023-03-14 09:42:44 +08:00
    cocomiko
    cocomiko
    Feb 17, 2023
    1
    看起来不错
    ila
    ila
    Feb 17, 2023 via Android
    2
    一直希望出个纯 go 或 rust 的人脸识别库
    psyer
    psyer
    Feb 17, 2023 via Android
    3
    R 语言做这个是专业的
    Baboonowen
    Baboonowen
    OP
    Feb 17, 2023
    4
    @psyer R 我也会,也在磕盐用过,但是好多年没有用过了。
    Baboonowen
    Baboonowen
    OP
    Feb 17, 2023
    5
    @ila 听起来就不错
    jenlors
    jenlors
    Feb 17, 2023
    6
    好东西
    tf2
    tf2
    Feb 17, 2023
    7
    Rust 有这功夫去把 R 重写了吧。。233
    rocmax
    rocmax
    Feb 17, 2023 via Android
    8
    @ila 我的理解模型使用的时候并不太吃资源吧,跟训练相比。所以应该是用 rust 重写 tensorflow 或者 pytorch ?
    liuxu
    liuxu
    Feb 18, 2023
    9
    正确的 rust 姿势
    qiuyue0
    qiuyue0
    Feb 18, 2023 via Android
    10
    明天试试
    dw2693734d
    dw2693734d
    Feb 18, 2023
    11
    Rust 语法劝退了,还是 go 香
    tanjoe
    tanjoe
    Feb 18, 2023❤️3
    12
    @rocmax tensorflow 和 pytorch 的底层是 C++实现的,python 只是作为 binding ,改成 rust 对性能估计没啥提升
    nizoukai
    nizoukai
    Feb 18, 2023 via Android
    13
    这种东西,更需要的是准确性吧,速度无所谓的,没有社区深度验证过的不敢用
    shinession
    shinession
    Feb 18, 2023
    14
    感谢 OP 分享,第一次听说 Polars, pandas 天天用, 回头测试一下看如何
    yuhangch
    yuhangch
    Feb 18, 2023
    15
    可以再来个,实现相关功能所需的时间🐶
    mepwang
    mepwang
    Feb 18, 2023❤️3
    16
    polar 使用了 apache arrow 格式进行内存数据组织,凡是使用这个思路的软件都快
    这里
    https://h2oai.github.io/db-benchmark/
    有个十多个类似 pandas 软件的详细 benchmark ,可以看看哪几个速度快
    mepwang
    mepwang
    Feb 18, 2023
    17
    类似 pandas 的软件,表格数据在内存中都是按照行来保存,
    但很多数据的存取是按列进行的,
    apache arrow 的基本思路就是按列来组织数据,同一列的数据在内存中相邻存放,
    因此在按列存取数据进行运算的时候速度会快很多
    FightPig
    FightPig
    Feb 18, 2023
    18
    晚点试下
    panggmai
    panggmai
    Feb 18, 2023❤️1
    19
    很早就发现这个库了,当初尝试过,具体问题是在读取大数据(csv 格式约 10G),有时会出现一些错误,尤其是 某列是某些混合类型的,比如中间有 int,str,还有时间的,pandas 会直接识别成 object ,polars 会报错,指定类型时候没有找到怎么去写的
    NoOneNoBody
    NoOneNoBody
    Feb 18, 2023
    20
    @nizoukai #13
    看谁用吧,速度也很重要的,开始到收市只有只有四小时,自动操盘的计算时间极短

    @panggmai #19
    混合类型其实不止这个库,很多并发的库也处理不好
    例如 np.nan 是浮点型,但很多时候其他类型需要表示“无”也会用到,批量计算尤其涉及相互比较的移动计算 /groupby 等就很麻烦
    justou
    justou
    Feb 18, 2023
    21
    @mepwang 让我想起了我的入门语言 Fortran ,数组在内存中列连续。出了学校再也没用过了,现在语言内置的并行计算功能越来越完善了
    https://coarrays.sourceforge.io/doc.html
    https://github.com/tkoenig1/coarray-tutorial/blob/main/tutorial.md
    MonTubasa
    MonTubasa
    Feb 18, 2023❤️1
    22
    我现在公司项目就在用,还挺好用的,就是有问题经常搜不到答案,需要自己读源码。
    NoOneNoBody
    NoOneNoBody
    Feb 18, 2023
    23
    粗看了一下文档,似乎学习成本不低,方法虽然接近,但不少参数区别较大,熟悉了 pandas 的人脑子转弯不容易,不熟悉 pandas 的从 0 开始反而可能好一些

    文档前面几页就没找到和 pandas 直接互换的方法,只有新建或者文档读取
    sadhen
    sadhen
    Feb 18, 2023
    24
    这个项目很赞的。
    ohayoo
    ohayoo
    Feb 20, 2023
    25
    @panggmai 大佬,pandas 读大文件,为了内存友好,可以设置 chunksize 来分块读取,再 for 循环;请问下 polars 读大文件是怎么分块读取的? n_rows 参数吗? n_rows 参数我试过,列数一多就容易出问题,得自己写循环来弄,感觉不是特别理想的方式
    han777
    han777
    Feb 20, 2023
    26
    @rocmax Bagua, 一个 rust 写的 PyTorch 的深度训练加速框架
    aa2893785
    aa2893785
    Feb 21, 2023
    27
    @MonTubasa 是 python 在用还是 rust 在用
    NoAnyLove
    NoAnyLove
    Mar 14, 2023❤️1
    28
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1484 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 15:39 · PVG 23:39 · LAX 07:39 · JFK 10:39
    ♥ Do have faith in what you're doing.