1、场景描述

在数据统计分析过程中,求累计值(总和)是最常用的统计指标之一,市面上的各种流行数据库均支持的查询方式基本如下:

select sum(c) from table_name;

当数据量在小规模时,sum只是一瞬间的事情,让你感觉电脑真牛逼啊,我掰手指头要算半天的数,它居然可以这么快,下面是1万多条数据的字段求和,只用了8ms。

但是当数据量不断增长到一个量级时,比如说,先定个小目标:一亿条订单求总额,你可以尝试在常规的数据库上执行同样的语句需要多长时间。

在我的电脑上执行这样的查询,大约需要10s。

或者更大的量级,十亿、百亿、万亿?你一秒钟给我算出来,哈哈,电脑也算懵逼了。

采用分布式存储、分布式计算,是目前解决大规模计算的通用方法,让你吃100个馒头,估计一礼拜也吃不完,做慈善,一人一个分给班里的同学,几分钟就没了,吃不完的那个放学别走。

2、举栗说明

今天我们不讲分布式计算,先看看如何在单机上达到最优的计算性能。

以下的示例,用python语言模拟求1亿条订单金额的平均值。

大家注意:我国小学生以后的课程都有python了,在未来编程是个基本技能。

2.1 首先用传统的For Loop方式

还是一亿条数据跑分

结果:

看来也不快啊,花了十几秒,python在没有特定优化的前提下,比Java,Go语言慢了不少。

2.2 内置 sum 函数上场

不过我们知道python有内置的sum函数,是不是会快一点?让我们来试试:

结果:

不到十秒,快了一点点,但还是不理想。

2.3 神兵numpy

听说有个numpy库,可以向量化(vectorization)执行各种运算,牵到台上看看:

结果:

哎呀48毫秒,真心牛逼啊,足足快了几百倍,比Go、Java都快,不信你可以自己写个Go语言的版本对比一下。

2.3 没完

听说还有个叫numba的,看简写nb也很NB,要不把刚才的那些再跑一遍瞧瞧:

可以看出numba对For Loop的提升明显,对内置sum和numpy向量化影响不大。

来个最终对比图,一目了然(柱子越低性能越好):

3、结论:磨刀不误砍柴工

现在有些数据库为了满足OLAP的需求,已经集成了向量化处理,通过测评,的确是显著提高了数据分析统计的性能,限于篇幅,今天不在此展开了。

Python numpy库主要提供:

ndarray,速度快且空间高效的多维array,可进行向量化算术操作和更高级推广应用能力。

标准数学函数,可快速执行整个array上的数据操作,而不需要写循环:

比如说arr = np.array([[1.,2.,3.],[4.,5.,6.]]),可以进行arr * arr,arr * 0.5,1/arr等运算,这些运算都是对array中的元素做相应的计算,即向量化的操作。

欢迎关注公众号:数猎天下DataHunter

-数据分析展示就用 DataHunter-

数据可视化大屏展示工具-免费试用​www.datahunter.cn?channel=weibo

python 求均值_数据分析:寻找Python最优计算性能相关推荐

  1. python求平均值_如何用python求平均值

    学习了Python相关数据类型,函数的知识后,利用字符串的分割实现了输入任意多个数据,并计算其平均值的小程序.思路是接收输入的字符串,以空格为分隔符,将分割的数据存入列表(lst1)中,将lst1中的 ...

  2. python求加速度_如何利用Python 为自然语言处理加速度

    自去年发布 Python 的指代消解包(coreference resolution package)之后,很多用户开始用它来构建许多应用程序,而这些应用与我们最初的对话应用完全不同. 利用 spaC ...

  3. python 相关性分析_数据分析---用Python进行相关性分析(兼谈假设检验)

    一.相关关系和相关系数 世上除了因果关系,还有相关关系. 有一个叫"相关系数"的指标来量化两个事物之间的相关程度. 其中相关系数用"r"表示,取值范围介于-1和 ...

  4. python求图形面积_如何使用python语言中的if语句实现求取图形面积

    在python设计语言中,逻辑运算符和判断语句结合起来使用,可以实现不同的功能.一般情况下,如果知道三角形的三边,可以利用三边计算出它的面积:规范的四边形知道对角的两边,就可以计算出对应的面积.下面利 ...

  5. 怎么用python求导_如何使用Python求导?

    展开全部 通过符号e69da5e6ba903231313335323631343130323136353331333365633865计算 from sympy import *x=Symbol(&q ...

  6. python sklearn 归一化_数据分析|Python特征工程(5)

    OX00 引言 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已.由此可见,特征工程在机器学习中占有相当重要的地位.在实际应用当中,可以说特征工程是机器学习成功的关键. 特征做不好,调 ...

  7. 手把手教你用Python求均值、中值和众数

    导读:数据科学入门:集中趋势度量--均值.中值和众数. 作者:保罗·戴特尔(Paul Deitel).哈维·戴特尔(Harvey Deitel) 来源:大数据DT(ID:hzdashuju) 本文我们 ...

  8. python求均值标准差不用numpy_【Python】不用numpy用纯python求极差、平均数、中位数、众数与方差,python的打印...

    python作为数据分析的利器,求极差.平均数.中位数.众数与方差是很常用的,然而,在python进行统计往往要使用外部的python库numpy,这个库不难装,然而,如果单纯只是求极差.平均数.中位 ...

  9. python医学应用_数据分析工具鄙视链:Python、R语言是老大,Excel只能称小弟?

    最新行业报告 2020数据分析.商业分析行业报告工作岗位与职能.薪资对比.热招公司等多方面详细解读帮助你一网打尽,斩获心仪Offer! 扫码回复[数据分析 0]立即领取 History语言发展史ABC ...

最新文章

  1. rpm、yum、编译安装轻松管理centos7程序包
  2. H3 BPM微信接入配置
  3. Beyond Compare 3 设置自动换行
  4. python pcl_windows 10 环境pcl-python 安装
  5. 【带着问题学PMP】【4.1】制定项目章程
  6. 高效办公之云端实时协作企业办公软件:石墨文档
  7. ubuntu安装anaconda3+cuda11.2+cuDNN+pytorch1.7
  8. 基本流水线与记分牌算法和Tomasulo算法
  9. 关于计算机的英语单词及例句,小学生必背英语单词及例句(四年级).doc
  10. java玩hypixel_著名服务器Hypixel入驻《我的世界》中国版
  11. puzzle(0151)《24点》
  12. linux 按键检测 防抖,GPIO输入——按键检测
  13. python求标准正态分布的分布函数值(具体实现及调用函数)
  14. 回车符与换行符的区别
  15. 判断三个数是否能构成三角形_七年级 初一下册数学三角形专题复习提纲及经典例题...
  16. 阿里总部对外解密双11超级工程背后的数据库技术
  17. 基于连续小波变换的厄尔尼诺海平面周期变化数据集分析
  18. fl2440——u-boot启动过程的简要分析
  19. 以太坊-EVM第3部分——动态数据类型的表示方法
  20. Day11:文件和异常

热门文章

  1. 纸牌游戏CardBattle的设计与开发
  2. http://offlineinstallersofts.com/
  3. 关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器
  4. Redis的系统级命令
  5. Linux 64bit下Oracle11g安装手册
  6. [物理学与PDEs]第4章习题3 一维理想反应流体力学方程组的数学结构
  7. silverlight 实时更新 marquee效果
  8. ECShop显示某商品销售累计
  9. Android Studio开发概要记录
  10. 【ROM修改教程】添加高级电源重启菜单(安卓4.0.4官方ROM)