[Python]战“疫”期,阿里云云效团队在家高效开发实录
背景 在数据科学世界 , Python 是一个不可忽视的存在 , 且有愈演愈烈之势 。 而其中主要的使用工具 , 包括 Numpy、Pandas 和 Scikit-learn 等 。
Numpy Numpy 是数值计算的基础包 , 内部提供了多维数组(ndarray)这样一个数据结构 , 用户可以很方便地在任意维度上进行数值计算 。
本文插图
我们举一个蒙特卡洛方法求解 Pi 的例子 。 这背后的原理非常简单 , 现在我们有个半径为1的圆和边长为2的正方形 , 他们的中心都在原点 。 现在我们生成大量的均匀分布的点 , 让这些点落在正方形内 , 通过简单的推导 , 我们就可以知道 , Pi 的值 = 落在圆内的点的个数 / 点的总数 * 4 。
这里要注意 , 就是随机生成的点的个数越多 , 结果越精确 。
用 Numpy 实现如下: import numpy as npN = 10 ** 7# 1千万个点data = http://news.hoteastday.com/a/np.random.uniform(-1, 1, size=(N, 2))# 生成1千万个x轴和y轴都介于-1和1间的点inside = (np.sqrt((data ** 2).sum(axis=1)) < 1).sum()# 计算到原点的距离小于1的点的个数pi = 4 * inside / Nprint('pi: %.5f' % pi)
可以看到 , 用 Numpy 来进行数值计算非常简单 , 只要寥寥数行代码 , 而如果读者习惯了 Numpy 这种面相数组的思维方式之后 , 无论是代码的可读性还是执行效率都会有巨大提升 。
pandas pandas 是一个强大的数据分析和处理的工具 , 它其中包含了海量的 API 来帮助用户在二维数据(DataFrame)上进行分析和处理 。
pandas 中的一个核心数据结构就是 DataFrame , 它可以简单理解成表数据 , 但不同的是 , 它在行和列上都包含索引(Index) , 要注意这里不同于数据库的索引的概念 , 它的索引可以这么理解:当从行看 DataFrame 时 , 我们可以把 DataFrame 看成行索引到行数据的这么一个字典 , 通过行索引 , 可以很方便地选中一行数据;列也同理 。
我们拿 movielens 的数据集 作为简单的例子 , 来看 pandas 是如何使用的 。 这里我们用的是 Movielens 20M Dataset. import pandas as pdratings = pd.read_csv('ml-20m/ratings.csv')ratings.groupby('userId').agg({'rating': ['sum', 'mean', 'max', 'min']})
通过一行简单的 pandas.read_csv 就可以读取 CSV 数据 , 接着按 userId 做分组聚合 , 求 rating 这列在每组的总和、平均、最大、最小值 。
“食用“ pandas 的最佳方式 , 还是在 Jupyter notebook 里 , 以交互式的方式来分析数据 , 这种体验会让你不由感叹:人生苦短 , 我用 xx()
scikit-learn scikit-learn 是一个 Python 机器学习包 , 提供了大量机器学习算法 , 用户不需要知道算法的细节 , 只要通过几个简单的 high-level 接口就可以完成机器学习任务 。 当然现在很多算法都使用深度学习 , 但 scikit-learn 依然能作为基础机器学习库来串联整个流程 。
我们以 K-最邻近算法为例 , 来看看用 scikit-learn 如何完成这个任务 。import pandas as pdfrom sklearn.neighbors import NearestNeighborsdf = pd.read_csv('data.csv')# 输入是 CSV 文件 , 包含 20万个向量 , 每个向量10个元素nn = NearestNeighbors(n_neighbors=10)nn.fit(df)neighbors = nn.kneighbors(df)
fit接口就是 scikit-learn 里最常用的用来学习的接口 。 可以看到整个过程非常简单易懂 。
Mars——Numpy、pandas 和 scikit-learn 的并行和分布式加速器 Python 数据科学栈非常强大 , 但它们有如下几个问题:
- 现在是多核时代 , 这几个库里鲜有操作能利用得上多核的能力 。
推荐阅读
- 畜牧业@畜牧互联网再次引爆:阿里养猪,京东养鸡,快看大佬们都在干嘛
- 『腾讯科技』淘宝天猫蒋凡在阿里内网回应传闻:深表歉意,恳请公司展开调查
- #阿里巴巴#将饿了么卖给阿里,套现600亿的大学生,如今在干什么呢?
- 服务@云市场跨步式发展 打造ToB云市场阿里腾讯外“第三股势力”
- 『程序员』阿里程序员感慨:公司期权套牢了我,外面开五六万的薪资都不想接
- 「创作者来直播」阿里老师给检察官做直播,猜猜带的什么货?
- ■奶奶大学同学让我别学Python了,吃枣药丸,劝我学汇编,说是时髦
- 『湘潭』华为、京东、阿里云……湘潭欲打造的这个“英雄联盟”很是“牛”
- 「程序员小助手」奶奶大学同学让我别学Python了,吃枣药丸,劝我学汇编,说是时髦
- #新开普#阿里系进驻后股价翻倍,这家豫股却遭大股东减持套现63次丨立方财报眼