pandas 和 sql 数据库的定位有哪些差别?

2020-10-16 18:16:22 +08:00
 Hlianbobo
https://mp.weixin.qq.com/s/CrhyIA3hgZtQGJL1EtCOhw
大致看了一下上面的文章。主要说了一下两者的交集。我猜检索数据 pandas 肯定没有数据库快。有以下几个问题请教一下各位达人

1 、做数据分析的所谓大数据,应该都存在数据库中吧。即便时爬下来的数据应该也时放在数据库中吧?各位平时工作取数据难道时从一些 python 支持的文件当中读取数据?而不是从数据库中取数据?

2 、如果日常大多数场景都是从数据库里 select,那么 pandas 检索数据主要应用在什么工作场景中?操作时主要针对什么文件进行?( excel 除外。)

3 、除了增删查改以外,平时用 pandas 最多的功能是什么?
3745 次点击
所在节点    Python
29 条回复
wuwukai007
2020-10-16 18:57:47 +08:00
一个二维数据,pandas 可以反复计算反复拼接,sql 确实可以实现很多分组聚合,但是只能查一次。当数据量大的时候更是这样,一次读完反复计算
zhangysh1995
2020-10-16 18:58:52 +08:00
sql 是关系型数据库的语音,主要是用来维护数据的。pandas 是一个分析框架,面向应用。
数据库主要就是增删查改,分析可能跑不动的。。如果是分析的数据库,可能类似 timescale db 这种?
一般大数据分析应该都不用数据库的吧?
Hlianbobo
2020-10-16 21:06:05 +08:00
@zhangysh1995 “分析可能跑不动的”请问关于分析的含义,可否举个例子来说明一下数据库跑不动分析。
gefranks
2020-10-16 21:20:41 +08:00
当 OLAP 都是弱鸡?
突然觉得朋友说公司里新来的年轻开发不会写 sql 也不是奇谈了
imn1
2020-10-16 21:22:39 +08:00
数据分析最多是数学计算,不是单纯从一堆数据里面提取这、提取那就能有结果的

先答 3,最多是计算

2.例如计算一支股票的移动平均,SQL 干不了这事

1.图片每个点的 RGB 值,这个就不是从数据库读的,当然这个场景多数是 numpy,不是 pandas
raymanr
2020-10-16 21:49:54 +08:00
几百万行的数据的话反正我这里是 pandas 比 mysql 这**要快不少的, 而且 where 条件的指定更加方便

而且 pandas 也能读取各种 csv 和 excel 和数据库中的数据同时使用,
非常便利的时间函数,
方便的透视表,
和其他 python 库无缝衔接,
数据可以随时 copy 清洗
还有一点是 pandas 的数据集是有序的, sql 默认是无序的集合, 这就又平添了很多事情, 即使开窗函数也不能很好解决

我觉得 SQL 还是勉强说得过去, 然而用了 pandas 后, 现在看到 sql 就想吐

我恨 sql, 去死吧 sql
raymanr
2020-10-16 21:51:42 +08:00
再补一句去死吧 mysql (和用 mysql 做 olap 的憨逼)
hooopo
2020-10-16 22:39:27 +08:00
@zhangysh1995 扯 pandas 才不适合大数据 bigquery 和 snkowflake 了解一下
hooopo
2020-10-16 22:40:21 +08:00
@raymanr 死不了 sql 会成为数据统一接口的
hooopo
2020-10-16 22:41:26 +08:00
@imn1 移动平均干不了?不会就说不会
raymanr
2020-10-16 23:01:15 +08:00
@hooopo
干得了和很方便干不一样, pandas 一个函数修改修改参数就出来了的东西

sql 写得累死累活的

不过数据量太大 pandas 确实不适合
hooopo
2020-10-16 23:02:10 +08:00
@raymanr 难道 sql 要两个函数?
raymanr
2020-10-16 23:05:37 +08:00
@hooopo 比如透视表, pd.pivot_table(data, values, index, columns) 就完事, sql 你懂的, 各家还不一样
hooopo
2020-10-16 23:12:40 +08:00
@raymanr 好吧 有点道理
wangyzj
2020-10-16 23:25:19 +08:00
pandas 处理训练数据样本,量没那么大,快速方便,科学计算封装的好
超大的数据有 spark ml 和 MapReduce
但在处理超大数据之前得用 pandas 做样本分析
locoz
2020-10-17 00:26:49 +08:00
其实你搞清楚它们两个的核心定位就不会有这种奇怪的问题了…一个是主要做数据分析的上层工具,一个是主要做数据长期存储的底层工具,这两个核心定位不同自然会导致性能、用法、方便程度等各方面的不同,都是根据具体用途而定的。
说白了,数据库在经过外部工具扩展后,也一样可以变成主要做数据分析的工具的组成部分;但主要做数据分析的工具即使扩展了,也不会变成主要做数据长期存储的工具,因为不是同一个层面的东西。
所以像你后面的问题,存哪真不重要,还是得看具体要怎么用…大数据如果只是临时使用并且以后也不会用的话,一样可以存在内存里用 pandas 做分析、一样可以直接先存到文本文件里…
liprais
2020-10-17 00:29:05 +08:00
@raymanr 移动平均你用 mysql 当然累死累活了
Hlianbobo
2020-10-17 01:07:54 +08:00
@raymanr 几百万行的数据一般存在什么文件中?
user8341
2020-10-17 02:35:49 +08:00
这不是奇怪的问题。完全是很合理的问题。用过 pandas 的人都应该思考一下,为什么不用数据库做。两种方法的优缺点在哪里。
imn1
2020-10-17 05:11:10 +08:00
@hooopo #10
我就猜到有人会较真这个,果然

你对
笔算也能算啊,SQL 怎么做不了呢?
我错了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/715734

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX