pandas和sql各自擅长的领域

版主: hci

hahan
论坛元老
论坛元老
hahan 的博客
帖子互动: 941
帖子: 19212
注册时间: 2022年 7月 23日 23:48

#84 Re: pandas和sql各自擅长的领域

帖子 hahan »

fantasist 写了: 2025年 10月 21日 13:57

我给的sample code全部是纯python语法,除了那个.where(sql_query)只是举例说明非要按基本没什么人用的sql语法写也能运行而已。
你推荐polars没问题,但它主要也就是相对于pandas有更多perf优化,用法实际上大同小异,文档里完全没有推荐往语句里嵌sql:https://docs.pola.rs/user-guide/migrati ... -predicate

你推荐sql估计是没体验过复杂analytical data transform pipeline的痛苦,比如这种屎山:
(SELECT max(c1) as max_c1, mean(c2) as avg_c2, c3
FROM table1
WHERE xxx
GROUPBY c3) AS t1,
(SELECT c1, count(c2) as cnt_c2, sum(coalesce(c3, NULL, 1)) as sum_c3
FROM table2
WHERE yyy
GROUPBY c1) AS t2,
SELECT t1.c3, t1.max_c1, t1.mean_c2, t2.cnt_c2, ...
FROM table1 join table2 on (t1.c3 = t2.c1)
WHERE ccc and ddd
ORDERBY ...

一坨几百上千行的sql query,mix各种agg函数和coalesce,尤其是array与string操作非常不方便,看着瞎眼不说,随便改一点就出错要调半天。碰到复杂函数就会碰到framework dialect不兼容的问题,在SF上写的query跑到spark上运行不了,或者做不到一个query打通spark batch和flink streaming。实际可用性比能分步unit testing的python代码差几百条街。

还是看infra
大厂也用逻辑极其复杂的几百上千行的sql
性能好 灵活 快

急急如丧家之犬
忙忙似漏网之鱼
头像
TheMatrix楼主
论坛支柱
论坛支柱
2024年度优秀版主
TheMatrix 的博客
帖子互动: 283
帖子: 13772
注册时间: 2022年 7月 26日 00:35

#85 Re: pandas和sql各自擅长的领域

帖子 TheMatrix楼主 »

TheMatrix 写了: 2025年 10月 22日 10:01

你这个逻辑拆分一下就是这样:

代码: 全选

def rolling_10_apply_f(s):
    #return transformed s
    t = s
    return t

df.groupby("sensor")["value"].apply(
    lambda s: rolling_10_apply_f(np.abs(np.gradient(s)))
    )

然后用SQL改写一下......也不容易。因为gradient和rolling_10_apply_f本质上都是窗口函数,它们要作用在“集合作为元素”上。这正是SQL缺少的数据结构。不是不能做,比较cumbersome。

看了一下DuckDB。用下面这两个方法应该就可以实现在DuckDB中call python函数gradient和rolling_10_apply_f的功能。

图片

图片

fantasist
见习点评
见习点评
帖子互动: 259
帖子: 1831
注册时间: 2022年 7月 24日 19:52

#86 Re: pandas和sql各自擅长的领域

帖子 fantasist »

hahan 写了: 2025年 10月 23日 15:04

还是看infra
大厂也用逻辑极其复杂的几百上千行的sql
性能好 灵活 快

大厂infra scale完全不一样,一个table动辄billion rows,几十秒内处理TB级的数据,需要不止一个组去研发维护query engine和worker之类的组件。用户写sql还是代码不重要,反正都要通过专门的optimizer生成高效的execution plan。跟本帖讨论的本地pandas之类工具能做的数据处理完全不是一回事。

hahan
论坛元老
论坛元老
hahan 的博客
帖子互动: 941
帖子: 19212
注册时间: 2022年 7月 23日 23:48

#87 Re: pandas和sql各自擅长的领域

帖子 hahan »

fantasist 写了: 2025年 10月 24日 16:05

大厂infra scale完全不一样,一个table动辄billion rows,几十秒内处理TB级的数据,需要不止一个组去研发维护query engine和worker之类的组件。用户写sql还是代码不重要,反正都要通过专门的optimizer生成高效的execution plan。跟本帖讨论的本地pandas之类工具能做的数据处理完全不是一回事。

大厂infra支持下的sql不用编译 不用部署 插上dev db就能run
还是比Python 快
本地的话pandas和sql没啥区别
都很反人类
Pandas那套API非常不intuitive/ergonomic

急急如丧家之犬
忙忙似漏网之鱼
pnlmpnlm(pnlm)
职业作家
职业作家
帖子互动: 86
帖子: 481
注册时间: 2025年 2月 12日 03:13

#88 Re: pandas和sql各自擅长的领域

帖子 pnlmpnlm(pnlm) »

这些讨论其实都相对次要,关键是谁更受欢迎。
所谓的最好的东西技术宅喜欢受众少最后没啥用。
如果硬要说Pandas擅长的领域,那就说Pandas理解大众,适合普通大众更好的接受。因为市场用户数目已经说明了一切。
你可以说某个东西就是好,高效。但对于这个高效,简洁,可读性,优美。。。。。。。。。所有的一切优点在乎的人少也就不好办了。

fantasist
见习点评
见习点评
帖子互动: 259
帖子: 1831
注册时间: 2022年 7月 24日 19:52

#89 Re: pandas和sql各自擅长的领域

帖子 fantasist »

pnlmpnlm 写了: 2025年 10月 24日 16:20

这些讨论其实都相对次要,关键是谁更受欢迎。
所谓的最好的东西技术宅喜欢受众少最后没啥用。
如果硬要说Pandas擅长的领域,那就说Pandas理解大众,适合普通大众更好的接受。因为市场用户数目已经说明了一切。
你可以说某个东西就是好,高效。但对于这个高效,简洁,可读性,优美。。。。。。。。。所有的一切优点在乎的人少也就不好办了。

用户习惯是最重要的护城河之一。polars确实比pandas多了各种优化,so what?pandas够用,能出活,用户就会继续用。烂到实在受不了,比如pip/poetry/conda,用户才会往新的uv转。

回复

回到 “葵花宝典(Programming)”