粗看 numpy 和 pandas 后的一点困惑

2020-12-07 15:20:03 +08:00
 Hlianbobo
本人没做过数据分析。粗看了一下《 Python 数据科学手册》《利用 Python 进行数据分析》这两本书中关于 numpy 和 pandas 的介绍。主要想了解一下这两个库能做些什么工作。看过以后形成了如下印象,想听听各位高手的看法。

看起来这两个库就是对矩阵(或表格)数据进行排序,索引,切片,特殊值批量替换(如 NaN,null ),格式转换(如字符串类型的时间数据,转换成时间类型的数据)然后可以根据日期数据进行各种遍历操作。如提取特殊时间段的数据。求指定时间段数据的和,平均值,标准差,各分位数……。数据的转置。批量运算。

总的印象就是我们日常在 excel 里做的工作通过代码加以实现。是这样么??????

当然我不否认通过代码实现在处理批量数据时比如 100 行整数。每行数据都要乘以指定的整数。或者有 100 个 excel 文件要做同样的批处理用代码实现肯定的提高效率。但是这些功能似乎用 sql 或 excel 自带的 vba 应该也可以实现吧(也许不如 python 代码简洁。但是也应该可以实现吧?)

以上是 numpy 和 pandas 的主要作用么?如果是,那么实现的数据处理功能感觉很初级吧,距离“数据科学”似乎还有点远?如果我对 numpy 和 pandas 的印象是错的。那么请各位高手举例指出。例如哪些数据处理是 excel 实现不了或者哪些海量数据的批量处理是 sql 或 vba 实现不了的?
5351 次点击
所在节点    Python
56 条回复
czfy
2020-12-07 15:27:12 +08:00
pandas 其中还有一个作用是各种 GLM 及变种的模型检验,类似的还有 R 以及各类统计软件( SPSS/STATA/SAS )也能做,这类基本上是统计的事情,研发是很少涉及的,当然你要说 excel 能不能做?也不是完全不能 ,但肯定没有 pandas 这类工具方便
numpy 用来做机器学习,我就没听说过 excel 可以用来做机器学习了
murmur
2020-12-07 15:27:19 +08:00
大体上结论没错,但是你有点看低 excel,excel 在一些人手里是当 BI 用得,excel 本身也有一堆数据处理功能,power pivot,不只是你看得那些个函数

真要说为什么不用 excel,大概一是要付费,二是总归要依靠 excel,没法拆出来部署,深度开发还是独立组件方便
zscself
2020-12-07 15:28:02 +08:00
我觉得你自己实践一下立马就明白了
liprais
2020-12-07 15:35:45 +08:00
站在岸边看是学不会游泳的
necomancer
2020-12-07 15:41:39 +08:00
例如哪些数据处理是 excel 实现不了或者哪些海量数据的批量处理是 sql 或 vba 实现不了的?

完全没有,毕竟 python 和 excel+vba 都是图灵完备的。
echowuhao
2020-12-07 15:43:00 +08:00
假如你又几个 G 的数据 要做各种运算 Excel 咋办

楼主用过 spss 之类的软件理论上 Excel 也都能做
Hlianbobo
2020-12-07 15:59:27 +08:00
@murmur 谢谢回复。如果 numpy 和 pandas 真的就是主要实现那些初级数据处理功能。那这些功能距离数据科学或数据分析还很远呢。
真要找出数据中的规律,并找出数据规律所反映出的问题,进而对未来数据进行预测,并给出业务建议。光会数据清洗,排序,转置,求和,算标准差,中位数,或者做个简单的线性回归是不足以实现上述四个目标的吧。
那么真正做“数据科学”“数据分析”相关工作的人,实现上述四个目标过程中真正发挥核心作用的库是什么库呢?
imn1
2020-12-07 15:59:47 +08:00
你看到的是浅层用法

1.质不同,浅层用法如提取等等当然和其他工具不相伯仲,深度计算呢,例如图片每个像素
2.量不同,10 万条数据试试?现在 10 万条还只能叫小数据呢

sql 你算算行列式?例如两个行列式相乘

数据分析最简单的是交叉分析,基本就是 sql 的用法,但进一步的数学模型,例如神经网络,sql 不能做吧
简单讲,部分数据参与计算的,例如行或列,sql 等是足够的,但全体数据一起参与计算的,例如图片的行列像素,每个 cell 都是平等的,这种计算就需要在内存划出一块进行,自然就需要一个相关的处理模块

隔壁有一帖:数据结构重要还是算法重要
做业务、数据结构,没有 numpy 等等也能做,但做算法,尤其是核心算法,如果没有这种科学计算类型的模块,基本就是小刀砍大树,不知何年何月可以完成
Hlianbobo
2020-12-07 16:01:28 +08:00
@echowuhao 几个 G 的数据用数据库+sql 语言是不是也可以实现 pandas 和 numpy 的那些功能?另外,pandas 和 numpy 处理几个 G 的数据跑起来是不是也会很慢?
都没用过。想听听你的评价。
echowuhao
2020-12-07 16:04:09 +08:00
@Hlianbobo 可以 简单的 sql 能做 复杂不行

几个 G 没压力 再往上几个 T 就是大数据的那套 你也可以说 Excel 都可以做
Hlianbobo
2020-12-07 16:07:27 +08:00
@imn1 谢谢回复。你提到的一些 sql 做不了的例如:神经网络行列式相乘。numpy 和 pandas 是可以单独完成上述工作?还是需要其他库配合才能完成?
确实如你所说,我翻那两本书有大量篇幅是介绍 numpy 和 pandas 的浅层用法的。不知道有没有关于这两个库深层用法的书推荐?
echowuhao
2020-12-07 16:12:39 +08:00
@Hlianbobo sql 也可以做机器学习 有相关的库 图灵完备的语言都可以

主要是那种工具最适合的问题 我见过有人把 Excel 当数据库用的
imn1
2020-12-07 16:18:07 +08:00
@Hlianbobo #11
你看的书里面的是基础,还是要懂的,高级计算技巧也是在这些基础上扩展出来的
深层用法没必要先看书,搜一些文章看看用途,有个感知就好哦,实际用到再去找文献,因为算法决定怎么用

就像学武功,一招一式可以看书学,但没有书教你实战怎么打的,因为实战是招式组合出来的,可能有些技巧,例如对付对手的某个招式怎么破拆,但不会有书写着对付另一个武功是怎么破解的
tfdetang
2020-12-07 16:22:26 +08:00
先说 numpy, 算是 python 数据科学的基石了。除了上文中说到的切片,索引等,还可以高效执行各种矩阵运算。理论上你可以只用 numpy 实现一个简单的深度学习框架。实际上现有的机器学习框架数据类型也都兼容 numpy 数据类型。

pandas 也是基于 numpy 的一个应用。 你确认你说的那些用 sql 和 excel 很容易实现吗?基于日期序列进行数据统计、聚合(按周,按工作日,按季度)。 更何况你可以自己写各种 python 函数直接 apply 到数据表上。开发时间起码比 sql 什么的少一倍。
yzbythesea
2020-12-07 16:29:55 +08:00
@Hlianbobo

numpy 和 pandas 主要都是做 data/feature engineering,所以和 excel 有很多类似的地方

但是我们选这两个,更多的是因为 python 有很好的机器学习大环境啊。比如很多机器学习模型的库 python 都可以调( sklearn,scipy ); 代码共享和审阅完美和 git 融合;代码的 CI/CD 也可以走一般代码的流程;你模型用 python 写好,程序员也看得懂,可以很快改成生产环境的代码。这些都是 excel 不具备的。当然性能也是一个需求,毕竟工业界机器学习的数据量都是特别大的,100G,1TB 都遇到过。
la2la
2020-12-07 16:31:43 +08:00
抛开场景谈技术,感觉没有什么意义。
Hlianbobo
2020-12-07 16:33:21 +08:00
@yzbythesea 谢谢回复。可以这样理解么?numpy 和 pandas 只是对数据做粗加工。真正做数据分析的是 sklearn,scipy 。
yy77
2020-12-07 16:35:51 +08:00
这二个都是其他库要依赖的基础库。比如 numpy 的 array 和 pandas 的 dataframe 。不懂这 2 个的用法,在学习其他的框架时设计到这 2 个的知识就会觉得有点不理解。
yalin
2020-12-07 16:35:52 +08:00
数据入库前处理
yzbythesea
2020-12-07 16:47:11 +08:00
@Hlianbobo 其实 numpy 和 pandas 也做到了数据分析( excel 也做到了),比如他们都挖掘出了海量数据背后的特征,然后这些清理好的特征,可以用来做进一步数据分析或者机器学习。

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

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

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

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

© 2021 V2EX