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
Baboonowen
V2EX  ›  Python

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

  •  3
     
  •   Baboonowen ·
    reycn · 106 天前 · 4343 次点击
    这是一个创建于 106 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    img

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

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

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

    文档前面几页就没找到和 pandas 直接互换的方法,只有新建或者文档读取
    sadhen
        24
    sadhen  
       105 天前
    这个项目很赞的。
    ohayoo
        25
    ohayoo  
       103 天前
    @panggmai 大佬,pandas 读大文件,为了内存友好,可以设置 chunksize 来分块读取,再 for 循环;请问下 polars 读大文件是怎么分块读取的? n_rows 参数吗? n_rows 参数我试过,列数一多就容易出问题,得自己写循环来弄,感觉不是特别理想的方式
    han777
        26
    han777  
       103 天前
    @rocmax Bagua, 一个 rust 写的 PyTorch 的深度训练加速框架
    aa2893785
        27
    aa2893785  
       102 天前
    @MonTubasa 是 python 在用还是 rust 在用
    NoAnyLove
        28
    NoAnyLove  
       81 天前   ❤️ 1
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   969 人在线   最高记录 5634   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 18:43 · PVG 02:43 · LAX 11:43 · JFK 14:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.