村长今天主要想跟大家分享测试一下100万行的数据在Excel、SQL与Python中的处理效率有多大的差异,如下图所示:
我们根据销售日期和客户名称两个维度统计2020年1月和2月的销售金额,看一下如何分别在Excel、SQL与Python中处理,且处理效率如何。
1、Excel处理
函数公式:
=SUMPRODUCT((TEXT(数据!$A$2:$A$1000001,"YYYY-MM")=A2)*(数据!$B$2:$B$1000001=B2),数据!$C$2:$C$1000001)
公式计算完成时间:2分20秒
2、SQL处理
SQL语句:
SELECT TO_CHAR(XSRQ,'YYYY-MM') 销售月份,KHMC 客户名称,SUM(XSJE) 销售金额 FROM MY_SALE
WHERE 1=1
AND (TO_CHAR(XSRQ,'YYYY-MM') = '2020-01' OR TO_CHAR(XSRQ,'YYYY-MM') = '2020-02')
GROUP BY TO_CHAR(XSRQ,'YYYY-MM'),KHMC
ORDER BY TO_CHAR(XSRQ,'YYYY-MM'),INSTR('甲,乙,丙,丁,戊,己,庚,辛,壬,癸',KHMC)
SQL计算完成时间:0.574秒
3、Python处理
Python代码:
numpy np pandas pd time datetime start = time.time() df=pd.DataFrame(pd.read_excel()) df1 = df.loc[(df[] >= ) & (df[] <= ), [,,]] df1[] = df[].apply(x: datetime.datetime.strftime(x,)) df2 = df1.groupby([,])[].sum() end = time.time() elapsed = (end - start) (+(elapsed) + ) (df2)
代码执行完成时间:55秒
通过对100万数据的多维度汇总求和我们发现,在数据库中用SQL计算效率是最高的,用时仅不到1秒钟,Excel的计算效率是最低的,两分多钟,很多时候我们甚至会以为Excel已经崩溃了(电脑配置差一点的Excel已经挂掉了),而Python的计算效率也不高,55秒,这是因为Python需要从Excel表中读取100万行的数据然后再用读取到的数据进行分析,而且无论是Excel还是SQL其实在处理数据时都有很大的局限性,想要了解更多Excel、SQL与Python对于数据的处理方法,可以继续关注村长的微信公众号,让村长与你一起共同学习,共同进步!
发表评论