粗看 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 实现不了的?
5375 次点击
所在节点    Python
56 条回复
crclz
2020-12-07 16:48:31 +08:00
@murmur 确实。上世纪有用 excel 当库存管理系统的。
princelai
2020-12-07 16:55:26 +08:00
你说的基本都是对的但是有点狭隘,知道为什么现在机器学习、科学计算和数据分析大部分都用 python 这种比较慢的脚本语言当接口吗,因为生态好,除了 np 和 pd,scipy,sklearn,statsmodels,matplotlib,seaborn 都基于 numpy,pytorch 的 tensor 也和 np.array 基本一致,以上这些,excel,SQL,R,julia 目前甚至未来都是做不到的。
wuwukai007
2020-12-07 17:06:16 +08:00
pandas 计算移动平均线
df.rolling(15).mean()
sql 卒,
numpy 计算数组拟合函数
np.polyfit(x, y, 1)。
excel 卒,
pandas 计算 后 N 天减前 N 天值
df.diff(N)
sql,卒
pandachow
2020-12-07 17:16:23 +08:00
这就是数据科学啊…
Zait
2020-12-07 17:34:48 +08:00
excel 可不可以? 当然可以,excel 用到飞起一样很值钱。其实用纸和笔一样能算
为什么不用 excel ? 量变引起质变。另外生产环境总不能部署个 excel 吧。。。
Tony042
2020-12-07 17:45:28 +08:00
@imn1 额,提一个层主说的不太准确的地方,两个行列式相乘,我估计层主想说的是两个矩阵相乘吧,行列式是一个标量,计算行列式本身还算复杂,两个行列式相乘就只是两个数相乘。然后补充一下,我个人觉得,numpy 主要是用来做科学计算吧,底层做了大量优化,比如把大矩阵相乘优化到了 N^2.7 复杂度。
liprais
2020-12-07 17:46:16 +08:00
zxyangyu
2020-12-07 17:53:06 +08:00
虽然确实只是 pandas 、numpy 浅显的部分,不过看了一圈回答,我还是想聊聊关于数据科学。
算标准差,中位数,或者做个简单的线性回归这些方法只是工具,况且这种工作完全是机械化的,已经有库实现了比如 pandas_profiling,甚至于自动建模工具 H2O,把这些机械的工作当成数据科学就太想当然了。
我认为数据科学重要的是分析,是挖掘数据价值。交易量突然下跌的原因,业务适合什么预测模型,目标客户和实际用户是否一致,对这些问题给出有数据理论支撑有说服力的答案才是体现你价值的关键。
你可以把 pandas 、numpy 理解成各种各样的 web 框架,只是将你从繁琐的底层协议里解放出来的工具,你总不能说我用了一个旧一点,性能差点的框架满足了业务,我就不是 web 开发了吧,excel 同理。
binxin
2020-12-07 18:19:35 +08:00
就我遇到实际情况而言:
1. 假如某个数据我只整理分析一次,pandas 效率被 excel 吊打。
2. 假如老是要做重复 /类似的整理分析,花点时间写脚本就有收益。
liuzhaowei55
2020-12-07 18:24:30 +08:00
毕竟只是个工具,你没有感受到他的魅力可能是因为还没有遇到合适的场景。
shm7
2020-12-07 18:32:18 +08:00
这两本书你可能没认真看。否则里面会有解释书干嘛的。有个词语叫 EDA 。
574402766
2020-12-07 18:37:11 +08:00
我觉得有一点:numpy 和 pandas 能直接在 python 里用,而 excel 不能。
jccg90
2020-12-07 18:39:57 +08:00
numpy 和 pandas 和 excle 或者 sql 的区别,主要是性能

各种矩阵操作很复杂,但是使用矩阵操作,可以更好的利用 cpu 或者 gpu,并行化程度更高

这对于大数据来说是非常重要的。。。数据的量级一上去,有些事情 excel 就搞不定了
IgniteWhite
2020-12-07 18:44:21 +08:00
我的应用场景:科研作图,每天有一堆同样类型的数据,同样的拟合过程,同样的作图需求。

用 origin pro (别提 excel 了,非线性拟合缺很多东西),我已经弄好模版了,但还是要手动导入数据,手动去掉数据文件头部的仪器参数行,再点一堆按钮做拟合,虽然也有模版可以创建但还是很麻烦,作出来的图要调线的粗细,图例位置等等。

用 numpy 加 matplotlib,用 jupyter 做 IDE:用任意一台电脑,打开网页版的 jupyterlab 上传数据文件。你只需要把数据文件按照自己的规则命名,我写好的 python 代码就会 parse 文件名来决定曲线簇的图例,用 regex 自动去掉参数行,作出来的图很精美。这一切,只需要点个运行的快捷键,不到半分钟就自动搞定了。
IgniteWhite
2020-12-07 18:47:21 +08:00
@IgniteWhite 补充一下非线性回归这个事,强大的非线性回归性能,或者说矩阵处理性能是机器学习的基石。你不用就不说了,但凡是用机器学习,如果用 VBA 脚本在 excel 里搞,怕是不方便吧
shm7
2020-12-07 18:47:51 +08:00
@jccg90 是不是不懂装懂了。pandas 以及其底层 numpy 都是 cpu 的。并行计算… 我服
IgniteWhite
2020-12-07 18:51:03 +08:00
英国用 excel 做 covid19 数据分析,怎么着,算错人了。原因是 excel 里存的数据太多,文件太大,出问题了。于是他们分开成几个小点的文件解决了问题。你说 excel 这不是惹笑话嘛。
tairan2006
2020-12-07 18:51:31 +08:00
excel 能处理的数据量有限。。不然玩啥大数据
hello2060
2020-12-07 18:55:35 +08:00
我没有实际经验,我只在 dataquest 上过一个月的课,学了 numpy pandas 的一些基本,我的想发和你差不多。基本上输入就是格式化好的 csv, 用 python 来操作。

具体的数据科学该怎么做,我想你是不是该去 kaggle 看看。
IgniteWhite
2020-12-07 19:06:37 +08:00
@jccg90
@shm7
GPU 依靠的是 CUDA,或者基于 CUDA 的 ROCm,或者 Intel 的 PlaidML 。基于 numpy 的库,比如 pytorch 和 tensorflow 会负责和 CUDA 通讯,numpy 本身不管这事。不过 numpy 提供的 tensor 数据结构的确是扔到 CUDA 那边,在 GPU 一堆核里面计算的,你可以说 GPU 的多核计算本来就是个并行架构。

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

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

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

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

© 2021 V2EX