数据分析中-比python更趁手的兵器-下篇
更多精彩请看原文出处:http://c.raqsoft.com.cn/article/1533097163381?r=CGQ
话说上一回(早下班系列:比 python 更称手的兵器),本菜鸟刚揶揄了一番某 python 培训班的代码,结果还没等收到其他小伙伴的纷纷好评,就先被本公司的大侠给打脸了。
大侠给出了如下代码:
import pandas as pd
data = pd.read_table(‘D:/data.txt’,sep=‘ ‘)
data.PRICE = data.PRICE.str[1:].str.replace(‘,’,”).astype(‘int64’)
out = data.groupby([‘STYLE’,‘BEDROOMS’]).mean()
刨除 import 语句后,同样是三行代码!而运行效率嘛,也跟集算器也差不多:同样是 1.4s 左右!
这可真是:出师未捷脸被打,常使菜鸟泪……不对,菜鸟还不能就此放弃……
仔细一想,如果连对付这么简单的一个 22.3M 的小量数据都做得那么水,那鼎鼎大名的 python 在编程语言界也就不用混了,谷歌、脸书等那么卖力推荐 python 更只会被视为脑残。
那么上一篇文章真正得出的结论其实是:就算你参加了好几个月的 python 培训班,毕业之后,你的 python 可能也只能写出类似上一篇的那种被我这样的菜鸟还疯狂嘲讽的代码。
所以,今天的再次对比,咱就不玩上次的那种“菜鸡互啄”式的对比了,上点干货:
一、玩一点真正的大数据计算
上次偷了个懒,弄个 22.3M 的东西来冒充大数据,结果惨遭打脸,至今仍隐隐作疼……这次不敢再偷懒了,既然说是大数据,那不上他个几 G 的,也敢称为“大”么?
这回咱先上集算器的:
A | |
---|---|
1 | =file(“D:/data.txt”).cursor@t(#1,#2:decimal,#3:int,#4:decimal,#5;,” “) |
2 | =A1.run(decimal(replace(replace(#5,”$”,””),”,”,””)):PRICE) |
3 | =A2.groups(STYLE,BEDROOMS;avg(SQFEET):SQFEET,avg(BATHS):BATHS,avg(PRICE):PRICE) |
相比上次代码基本没变动多少,就是几个涉及要计算平均值的数据类型,从 int 改成了 decimal。毕竟是用大数据去计算聚合函数嘛,若还用 int 那就等着被爆出负数吧……
至于计算结果,看一看 SQFEET、BATHS 和 PRICE 三列就知道:因为是计算平均值,而大数据文件其实是用整块原始数据循环复制粘贴出来的,所以最终结果,跟原先一模一样,所以是完全正确地!
然后该 python 了,同样先上代码
import pandas as pd
data = pd.read_table(‘D:/data.txt’,sep=‘ ‘)
data.PRICE = data.PRICE.str[1:].str.replace(‘,’,”).astype(‘int64’)
print(data.groupby([‘STYLE’,‘BEDROOMS’]).mean())
接下来该测试结果了……咳,不出所料,python 家的 pandas 愉快地罢工了(内存溢出)
二、读个其他类型的文件试试
上次弄的 TXT 文本文件,是不是觉得看着太 Low,不上档次?这回咱就读个 Excel 吧。
鉴于 python 要处理大数据文件实在有点麻烦(且本人也比较懒),就不拿大数据继续欺负 python 了。回到一开始的小数据文件进行测试。只不过咱给他改成 Excel 的。
同样先上集算器的:变两行代码了(得感谢 Excel 的金额类数值的固定格式)
A | |
---|---|
1 | =file(“D:/data.xlsx”).importxls@tc() |
2 | =A1.groups(STYLE,BEDROOMS;avg(SQFEET):SQFEET,avg(BATHS):BATHS,avg(PRICE):PRICE) |
计算结果依旧:
接下来该上 python 了,主要代码倒也是两行
import pandas as pd
data = pd.read_excel(‘D:/data.xlsx’,sheet_name=0)
print(data.groupby([‘STYLE’,‘BEDROOMS’]).mean())
计算结果也完全一样
不过计算前别忘了安装 xlrd 和 xlwt 两个库,否则 pandas 会报错给你看哦!至于怎么安装这两个库?不难,反正我是用 pip 在线安装的。怎么安装 pip?呵呵,请看本系列的第一篇
这个比较,就算打个平手吧,毕竟 python 也不是吃素的。
三、算一点稍微复杂的东西
如果觉得平时你不需要处理多大的数据,也不嫌安 python 的各种第三方库麻烦(反正主要就折腾一次),那是否就不需要考虑集算器了呢?我觉得倒也未必……说实话,之前举例的这种分类后求平均值,太幼儿园了……根本无法体现出多少差别。所以下面咱就算个稍微复杂一点的:计算一下在至少连涨三天的股票中能达到至少连涨四天的股票的比例吧。
先看看一组原始数据:
还是先上集算器的代码,其实严格来讲整段代码可以缩成一大行(不过感觉太赖皮就不做了)。
A | |
---|---|
1 | =file(“E:/Stock.xlsx”).importxls@t().sort(Date).group(Company) |
2 | =A1.((a=0,~.max(a=if(Price>Price[-1],a+1,0)))) |
3 |
=string(A2.count(~>=4)/A2.count(~>=3),”0.00%”)
|
思路很简单,按日期排序再按股票分组,然后计算出每支股票最长上涨了多少天,再看这个值不低于 3 或不低于 4 的股票个数就完了,只是写出连涨的逻辑会有些考验,集算器有很好的跨行引用机制,就不在话下了。
计算结果嘛,因为数据不多,有耐心的可以心算验算一下
再看看 python 解决此题需要的代码(已做了尽量的简化,若还有不足欢迎指导)
import pandas as pd
defiterate(col):
prev = 0;
res = 0;
val = 0;
for curr in col:
if curr – prev > 0:
res += 1;
else:
res = 0;
prev = curr;
if val < res:
val = res;
return val;
data = pd.read_excel(‘E:/Stock.xlsx’,sheet_name=0).sort_values(‘Date’).groupby(‘Company’)[‘Price’].apply(iterate);
print(‘%.2f%%’% (data[data>=4].count()/data[data>=3].count()* 100));
基本思路其实都差不多,只是 python 没有太好的跨行引用机制,得搞个自定义函数才能实现这种略繁琐的逻辑,比较适合遇到问题喜欢 DIY 的同学们。计算结果因为都一样就不贴出来了
当然,也不是说集算器什么方面都比 python 强,比如来个深度学习神经网络啥的,暂时集算器里还没加上这类功能(毕竟术业有专攻)。总之,遇到大数据或感觉 python 类库安装起来太麻烦时,不妨考虑一下集算器。
更多精彩请看原文出处:http://c.raqsoft.com.cn/article/1533097163381?r=CGQ
数据分析中-比python更趁手的兵器-下篇相关推荐
- python中数据分析的流程为-在数据分析流程中整合Python和R(一)
EARL 是一个关于 R 语言的会议.今年的会议中却出现了大量关于Python的讨论.我认为,这个现象部分归功于在会议前一天举办的,关于整合 Python 和 R 的三小时研讨会. 本文是此系列三篇文 ...
- python的excel数据分析_excel VS python 谁更适合数据分析?
我常常会听到这样的问题,"金融分析中,为什么我要学习像python这样的编程语言,甚至使用它超过excel呢?" 在金融领域,python成为炙手可热的分析工具,这几乎已经成为共识 ...
- python r语言 数据分析_R vs. Python,数据分析中谁与争锋?
点击上方" CSDN ",选择"置顶公众号" 关键时刻,第一时间送达! 作者丨Sunil Kappal 译者丨安翔 R和Python两者谁更适合数据分析领域?在 ...
- 数据分析与挖掘中常用Python库的介绍与实践案例
数据分析与挖掘中常用Python库的介绍与实践案例 一.Python介绍 现在python一词对我们来说并不陌生,尤其是在学术圈,它的影响力远超其它任何一种编程语言, 作为一门简单易学且功能强大的编程 ...
- Python的数据分析中交叉验证
[小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python的数据分析中 交叉验证 ● 选择题 以下说法错误的是: A ...
- python在大数据分析中的应用
每个人都喜欢Python,如果您打算开始从事数据科学事业,我们可以肯定Python在您心中已经占有特殊的位置.它直观且易于在任何平台上运行,并且具有大量令人惊叹的库和工具.与其他编程语言相比,Pyth ...
- Python数据分析中数据预处理:编码将文字型数据转换为数值型
[小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python数据分析中 数据预处理:编码 将文字型数据转换为数值型 选择题 对于以下pyth ...
- 不容错过,数据分析中最常用的10大Python库
学习数据分析绝非易事,有无数种工具和资源可供使用.因此,有时会让我们很难弄清楚该学习什么技能,该使用哪种工具. 在本文中,我们就来给大家介绍一下数据分析中最常用的10个Python库.看看这些库你都用 ...
- Python数据分析中的数据预处理:数据标准化
[小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python数据分析中的 数据预处理:数据标准化 ● 选择题 以下关于 ...
最新文章
- Python3 编程第一步
- 深入理解golang 的栈
- elementary os java,吐槽ELEMENTARY OS系统/ELEMENTARY OS系列文章汇总
- SQL Server 2008 R2 性能计数器详细列表(三)
- 浮点数转换成字符串函数
- .net mvc 获取项目文件夹路径
- 选择排序及其不稳定性介绍
- 优酷ts转换mp4_下载腾讯视频并转成MP4
- 手机电阻屏和电容屏哪个好?电容屏和电阻屏的区别!
- 商誉专题RN及H5项目总结
- TCP自时钟/拥塞控制/带宽利用之脉络半景解析
- 清华领军计划计算机试题,清华大学自主招生考试试题难吗
- 必要的先决条件安装失败_先决条件
- Exploratory Social Network Analysis with Pajek(第三版)11
- SAP UI5 应用开发教程之八十三 - SAP UI5 的自动化测试套件页面的开发步骤介绍试读版
- 胡说八道JVM—垃圾回收算法和垃圾回收器
- PNETLAB中可以导入的交换机、防火墙等设备镜像
- VS(Visual Studio)与VC(Visual C++)版本对应关系
- chapter10 十大算法
- 高价值制造创新智慧工厂新型能力,制造业大数据应用场景