加拿大华人论坛 加拿大百科科长开讲:SQL,Python 和 R 语言,20年老兵三分钟给你讲明白,超越一切大学教授和网络博主



在加拿大


20年一线老兵,只说干货:1. 有数据库的时候,就只用SQL;2. 没有数据库的时候,也没有条件建库的时候,1G以下的CSV可以勉强用EXCEL手工处理,1G以上的就必须用Python或者R等语言了;3. 5个G的CSV巨型文件,如果只是统计,那么就用R。如果除了统计之外,还需要重新处理排序和归纳数据列表,那就用Python;4. SQL是查询语言,R是统计语言,Python是多功能编程语言(可以兼任查询和统计的功能,当然也可以像JAVE和C一样编程序);5. 为什么会没有数据库呢?大型互联网和金融分析,需要当天或者2-3个小时内出结果,客户出于安全等考虑,不会授权给乙方数据库操作权限。所以,你只有一个SFTP上面导出的CSV文件,或者AWS CLOUD直接Read Only文件,10G数据量,2个小时内出结果,你的IT DBA不可能给你资源建库,导入数据,然后慢慢用SQL和BI工具处理,你也没有那么多时间。所以Python和R就是你的好朋友了;6. 即使是甲方自己的人员,出于Production服务器的运行效率,也不会允许BI或者DA等人员,直接在后台数据库上跑SQL,而且很多最新的Apps后台用的也不是传统的SQL服务器,根本无法用SQL+BI的传统方法;7. 但是对于一个数据科学家或者Data Engineer,90%还是需要SQL,毕竟那种极端案例不多,不是天天都需要996,711去处理10个G的CSV文件,90%的企业,包括亚麻厂,鸽厂,窗户厂,平时也还是在用SQL+BI+PPT去汇报;8. SQL是九阳神功,Python和R是倚天剑和屠龙刀,没有SQL,任何人在大数据分析这个行业里,走不长,也走不远,很多大学毕业的小孩,尤其是财务背景的文科生转到BI或者DA,总想弯道超车绕过SQL,那是走不通的,SQL无法被超越和替代,SQL是一切万物的基础体能,3000米都跑不下来,还学踢足球?

评论
wodelaoba 说:嗯,酝酿一下点击展开...洗耳恭听,搬个小板凳坐下。

评论
如果是外行,能看懂吗?

评论
不懂,点赞,争取看懂,转行程序员。

评论
Servants talk about People; Gentlefolks discuss Things. 我的Gaspé半岛自驾之旅原创小说:圆同路情愫不要让自己变老一个杠精的自白 超赞 赏 反馈:bowen685 和 shw019 0.25 wodelaoba科长 2$(VIP 0,#333) 5,8862019-12-28#5 第二课:ETL 和 Data Pipeline程序员是把鱼苗投入大海(湖泊),BI数据科学家是渔民,把长大的鱼苗从大海里面捞出来。这干工作分三步:1. 数据准备(传统客户端:ETL,云端:Data Pipeline)2. 数据分析(传统客户端:SAP BO,Power BI,云端:Python写脚本,AWS自带工具等)3. 数据可视化(Tableau,Qlikview,PPT等)传统环境下,分析企业内部数据,进销存ERP,CRM,SCM,财务人事Workday,销售和市场,这些都是企业局域网内部的,相当于淡水湖泊,这时候渔民成为BI,做报表的叫BI Developer,底层数据处理的叫做ETL Developer,核心工具SQL + SSIS + 各种前端BI软件(SAP BO,MS Power BI,Tableau,Qlikview),数据接口叫ODBC,JDBC,数据分析前的准备工作叫做ETL,鱼塘成为数据仓库Date Warehouse(Data Mart)。这个阶段的数据大部分都是结构化的,数据量可控,报告周期:周报,月报,季报,年报。传统环境的数据分析,相当于肉少(数据小),刺多(维度多)。做好了,并不简单。互联网环境下,目前和未来,数据都向云端转移,从淡水湖泊向大海进军,做报表的叫数据科学家,底层数据处理的叫做Data Engineer,数据接口是各种网络端口和API程序。肉多(数据大),刺小(维度少)。看着复杂,其实相对传统环境反而简单,但是消耗时间,因为数据量不可控,报告周期:日报,6小时报,1小时报。淡水:ETL,萃取,转移,录入,将不同内部业务系统的各种数据,各种离线的CSV,TXT,PDF,通过清理,整合到数据仓库(鱼塘)的过程。前端的BI人员只需要在数据仓库内就可以轻松找到所需要的所有数据和维度,而且由于重新整合了数据结构,所以BI人员的报表应该不用担心效率问题。深海:Data Pipeline = 传统ETL + SUM (互联网上各种非结构化数据,赞转评,跳转,点击,Review,下单付款信息,后台仓库的ERP,上传附件,库存数据的毫秒级更新,等等)。最大的特点是,支持公有云上面的各种数据处理整合。亚马逊和微软的公有云业务上都有自己的Data Pipeline产品,其实就是云端的ETL工具。R语言,SAS软件,SPSS软件,是个人版桌面统计工具(家里的鱼缸),不是企业版的BI工具,更不是互联网公有云上的数据科学分析工具,这里不讨论。SAS应用场景局限在一些金融机构,比如基金经理下面都会带几个助理,这几个助理会有人用SAS类似的统计软件处理数据。大学研究所里,做实验,在个人电脑上用SPSS分析一下实验数据,其实就是超大号的EXCEL。

评论
第三课:Data Warehouse (Data Mart) 和 Data Lake,Data Ocean这个内容,我在第一课 课后答疑 1.2 简单概述了一点。Database 数据库:封闭的有大门的,里面有整齐货架的标准仓库。Data Warehouse 数据仓库:为了解决数据库的查询效率缺陷而设计,分区域设计的仓库,将大仓库里的数据按照类型重新在依照同类型分区域摆放。从数据库导入数据仓库的过程叫做ETL。业务系统运行在数据库上,报表系统运行在数据仓库上。互联网时代的又出现了,露天堆放的货场,货场的优势就是存数据快,货场可以成为:文本数据库和图数据库。图数据库不是存图片的,图数据库没有表,只有线(列,Column),每条线上都可以堆放不同类似的数据,这是传统数据库上的Column不可思议的,抓数据的时候,不是表和表之间的关联,而是把每条线上所需的点构成软连接,从而形成一个虚拟的临时网络图,故谓之“图数据库”。人类的大脑就是“图数据库”,这种又称为,神经网络。Data Lake:Database + Data Warehouse + 露天堆放场 (文件数据库)+ 各种离线数据Data Ocean:Data Lake + 其它任何没有包括的内容阿里巴巴的所谓自研数据库,叫 Ali Data Ocean,其实是个伪科学。淘宝和天猫,其实后台的科技含量很低,甚至低于京东,和亚马逊无法比,整体访问量惊人,存储量巨大,但是这都毫无意义。因为天猫上百万商家,都是独立的系统,后面就是一个个开源的MySQL,只是简单的网页页面串联起来。用户在NIKE店下单,只影响NIKE店家的后台进销存系统,不会影响三只松鼠。NIKE,三只松鼠,这些店家都是一个小的MySQL系统,蚂蚁雄兵,聚沙成塔。阿里的模式,可以无穷扩大,而不需要技术突破。阿里的最大科技含量在于他的蚂蚁金服,广告系统,会员系统。蚂蚁金服的数据量不及VISA和万事达信用卡,甚至数据量不及工商银行等,广告系统不及Google的十分之一,FB的五分之一。会员店家系统,确实是他的特长,网络上的万达商城,小商品城嘛。但是,京东和亚马逊这些直营电商,后面是一个总的大库,不可能像阿里一样,构建几百万个小MySQL来处理。所以,亚麻厂研发出来了云计算AWS,用新型的文本数据库技术突破解决了问题。京东还是要依靠甲骨文,IBM这些传统大厂来用老方法不断优化,开发自营平台,不仅仅是财务,业务和成本的必须,也是技术上的必须,所有都自营,IT后台不好消化。阿里玩的是机海模式,亚麻是技术突破后的降维打击。

评论
看来是很干净利落的样子。

评论
第四课:关系型数据库 vs. 对象数据库 vs. 文本数据库 vs. 图形数据库 vs. 无数据库(纯文本文件)

评论
第五课:BI developer 和 Data Scientist给大家看一道笔试题吧,多伦多温哥华的行情能做出SQL解法的,可以进入初级BI开发人员的面试,起薪7万加刀能做出Python和R的解法,可以进入初级Data Scientist的面试,起薪10万加刀如果都能做出来,可以考虑应聘Data Engineer Level I,起薪11万加刀Problem: Member can make purchase via either mobile or desktop platform. Using the following data table to determine the total number of member and revenue for mobile-only, desktop_only and mobile_desktop.The input spending table ismember_id date channel spend1001 1/1/2018 mobile 1001001 1/1/2018 desktop 1001002 1/1/2018 mobile 1001002 1/2/2018 mobile 1001003 1/1/2018 desktop 1001003 1/2/2018 desktop 100The output data is date channel total_spend total_members1/1/2018 desktop 100 11/1/2018 mobile 100 11/1/2018 both 200 11/2/2018 desktop 100 11/2/2018 mobile 100 11/2/2018 both 0 0SQL solution:CREATE VIEW member_spend ASSELECTdate,member_id,SUM(CASE WHEN channel == ‘mobile’ THEN spend ELSE 0 END) AS mobile_spend,SUM(CASE WHEN channel == ‘desktop’ THEN spend ELSE 0 END) AS desktop_spendFROMspendingGROUP BY date, member_id;SELECTdate,CASE WHEN mobile_spend > 0 AND desktop_spend = 0 THEN ‘mobile’ WHEN mobile_spend = 0 AND desktop_spend > 0 THEN ‘desktop’ WHEN mobile_spend > 0 AND desktop_spend > 0 THEN ‘both’ END AS channel,SUM(mobile_spend + desktop_spend) AS total_spend,COUNT(*) AS total_membersFROM member_spendGROUP BYdate,CASE WHEN mobile_spend > 0 AND desktop_spend = 0 THEN ‘mobile’ WHEN mobile_spend = 0 AND desktop_spend > 0 THEN ‘desktop’ WHEN mobile_spend > 0 AND desktop_spend > 0 THEN ‘both’ END;Python pandas:spending[‘mobile_spend’] = spending[spending.channel == ‘mobile’].spendspending[‘desktop_spend’] = spending[spending.channel == ‘desktop’].spendmember_spend = spending.group_by([‘date’, ‘member_id’]).sum([‘mobile_spend’, ‘desktop_spend’]).to_frame([‘mobile_spend’, ‘desktop_spend’].reset_index()SQLSELECTdate,CASE WHEN mobile_spend > 0 AND desktop_spend = 0 THEN ‘mobile’ WHEN mobile_spend = 0 AND desktop_spend > 0 THEN ‘desktop’ WHEN mobile_spend > 0 AND desktop_spend > 0 THEN ‘both’ END AS channel,SUM(mobile_spend + desktop_spend) AS total_spend,COUNT(*) AS total_membersFROM member_spendGROUP BYdate,CASE WHEN mobile_spend > 0 AND desktop_spend = 0 THEN ‘mobile’ WHEN mobile_spend = 0 AND desktop_spend > 0 THEN ‘desktop’ WHEN mobile_spend > 0 AND desktop_spend > 0 THEN ‘both’ END;Python pandasmember_spend[member_spend.mobile_spend>0 & member_spend.desktop_spend==0], ‘channel’] = ‘mobile’member_spend[member_spend.mobile_spend==0 & member_spend.desktop_spend>0], ‘channel’] = ‘desktop’member_spend[member_spend.mobile_spend>0 & member_spend.desktop_spend>0], ‘channel’] = ‘both’tot_members = member_spend.groupby([‘date’, ‘channel’]).size().to_frame(‘tot_members’).reset_index()tot_spend = member_spend.groupby([‘date’, ‘channel’].agg({‘mobile_spend’:sum, ‘desktop_spend’:sum}).to_frame([‘mobile_spend’, ‘desktop_spend’])tot_spend[‘tot_spend’] = tot_spend[‘mobile_spend’] + tot_spend[‘desktop_spend’]output = tot_members.concat(tot_spend[‘tot_spend’])R dplyr:output <- spending %>% group_by(member_id, date)%>% summarise(mobile_spend = sum(spend[channel == 'mobile']), desktop_spend = sum(spend[channel == 'desktop'])) %>% mutate(channel = ifelse((mobile_spend>0 & desktop_spend>0), 'both', ifelse(mobile_spend==0, 'desktop', 'mobile'))) %>% group_by(date, channel)%>% summarise(total_spend = mobile_spend + desktop_spend, total_member = n())

评论
第六课:ETL developer 和 Data Engineer

评论
wodelaoba 说:20年一线老兵,只说干货:1. 有数据库的时候,就只用SQL;2. 没有数据库的时候,也没有条件建库的时候,1G以下的CSV可以勉强用EXCEL手工处理,1G以上的就必须用Python或者R等语言了;3. 5个G的CSV巨型文件,如果只是统计,那么就用R。如果除了统计之外,还需要重新处理排序和归纳数据列表,那就用Python;4. SQL是查询语言,R是统计语言,Python是多功能编程语言(可以兼任查询和统计的功能,当然也可以像JAVE和C一样编程序);5. 为什么会没有数据库呢?大型互联网和金融分析,需要当天或者2-3个小时内出结果,客户出于安全等考虑,不会授权给乙方数据库操作权限。所以,你只有一个SFTP上面导出的CSV文件,或者AWS CLOUD直接Read Only文件,10G数据量,2个小时内出结果,你的IT DBA不可能给你资源建库,导入数据,然后慢慢用SQL和BI工具处理,你也没有那么多时间。所以Python和R就是你的好朋友了;6. 但是对于一个数据科学家或者Data Engineer,90%还是需要SQL,毕竟那种极端案例不多,不是天天都需要996,711去处理10个G的CSV文件。点击展开...谢谢。虽然是外行,但给了我大方向上的思路。很不错。

评论
哭了,第一课都没看懂,赶快溜许个心愿:哆啦A梦,如果有SQL从0基础开讲的课就好了。

评论
如果把上面6节课的精神全部领会,保证你100%可以通过面试,拿到25万美金的Facebook和谷歌Offer。掌握了5节课,就可以拿到18万美金的亚麻或者微软的Offer。

评论
glenogre1 说:哭了,第一课都没看懂,赶快溜许个心愿:哆啦A梦,如果有SQL从0基础开讲的课就好了。点击展开...你跟我在办公室一周,保证你SQL达到中级水平,CS大学本科的那个Level。

评论
wodelaoba 说:你跟我在办公室一周,保证你SQL达到中级水平,CS大学本科的那个Level。点击展开...哈哈,今晚可以做个黄粱美梦了。求办公室地址

评论
glenogre1 说:哈哈,今晚可以做个黄粱美梦了。求办公室地址 点击展开...你什么背景,要转行吗?

评论
看这套路,会讨论大数据技能库?

评论
wodelaoba 说:20年一线老兵,只说干货:1. 有数据库的时候,就只用SQL;2. 没有数据库的时候,也没有条件建库的时候,1G以下的CSV可以勉强用EXCEL手工处理,1G以上的就必须用Python或者R等语言了;3. 5个G的CSV巨型文件,如果只是统计,那么就用R。如果除了统计之外,还需要重新处理排序和归纳数据列表,那就用Python;4. SQL是查询语言,R是统计语言,Python是多功能编程语言(可以兼任查询和统计的功能,当然也可以像JAVE和C一样编程序);5. 为什么会没有数据库呢?大型互联网和金融分析,需要当天或者2-3个小时内出结果,客户出于安全等考虑,不会授权给乙方数据库操作权限。所以,你只有一个SFTP上面导出的CSV文件,或者AWS CLOUD直接Read Only文件,10G数据量,2个小时内出结果,你的IT DBA不可能给你资源建库,导入数据,然后慢慢用SQL和BI工具处理,你也没有那么多时间。所以Python和R就是你的好朋友了;6. 即使是甲方自己的人员,出于Production服务器的运行效率,也不会允许BI或者DA等人员,直接在后台数据库上跑SQL,而且很多最新的Apps后台用的也不是传统的SQL服务器,根本无法用SQL+BI的传统方法;7. 但是对于一个数据科学家或者Data Engineer,90%还是需要SQL,毕竟那种极端案例不多,不是天天都需要996,711去处理10个G的CSV文件,90%的企业,包括亚麻厂,鸽厂,窗户厂,平时也还是在用SQL+BI+PPT去汇报;8. SQL是九阳神功,Python和R是倚天剑和屠龙刀,没有SQL,任何人在大数据分析这个行业里,走不长,也走不远,很多大学毕业的小孩,尤其是财务背景的文科生转到BI或者DA,总想弯道超车绕过SQL,那是走不通的,SQL无法被超越和替代,SQL是一切万物的基础体能,3000米都跑不下来,还学踢足球?点击展开...sql 能不能算这个,admin 设置了奖金求算法求家园币分布预测模型根据 admin 发布数据,家园币用户共 3000名,家园币总额 100000 另,500家园币以上用户共持有 50000 家园币 https://forum.iask.ca/threads/889318/ 根据以上数据及家园富豪榜,参照社会经济学规律,自选数据预测模型,估计: (1)持有 500 家园币的用户可能有多少? (2)家园币中位数,即第一千五百名用户持有多少家园币?forum.iask.ca

  ·中文新闻 2024 年美国大选结果:特朗普不能吓到安东尼·艾博尼斯、彼得
·中文新闻 2024 年美国大选:哈里斯落选后,乔·拜登的演讲试图提振民主党

加拿大百科-加拿大

不打游戏,我买了个游戏键盘

华人网原因无他,好键盘都是游戏键盘 我最基本的诉求是键帽字体清晰可见。我打字时虽然会盲打,但有些键还是要看的,例如数字/符号键、F功能键等。当把眼睛从屏幕转到键盘时,由于屏 ...

加拿大百科-加拿大

视频编辑器

华人网最近去百幕大,波士顿旅行,拍了不少视频。有的是用相机拍的,有的是用GoPro 拍的。想把这些视频根据日期,地点等加在一起。谷歌后发现微软Windows 11 带有 Clipchamp 这个视频编辑器, ...

加拿大百科-加拿大

开车的成本,我的10年Ford Edge

华人网我的福特开了10年,里程是85000公里,去养护时,问了一下这些年花费了多少维修费用?工作人员告诉我一共$4700,加上我前两年换了轮胎$1000,电池几百刀,合计6千多加元。在国内时我 ...

加拿大百科-加拿大

temu霸屏,怎么驱除?

华人网随便打开一个网页,发现temu的广告到处都是,上下左右,霸占了一大半面积,简直是强行抢占了别人的页面,非常离谱。我试图使用Google Report an ad/listing功能,填写Complaint on multiple ad ...

加拿大百科-加拿大

大家在拼多多上买东西了吗

华人网拼多多最近在加拿大开店了。 评论 拼多多app被Goolge下架了。Google suspends Chinas Pinduoduo app on security concernsAlphabet Incs Google suspended the Play version of PDD Holdings Incs Pinduoduo app for security concerns ...

加拿大百科-加拿大

请问抗焦虑症的替代药物

华人网家人在国内一直每天服用下面两种抗焦虑症的药,试过其他药都没有效果。准备回加拿大了,但是在加拿大的医保卡已经过期,另外不知道来加拿大有没有同样的替代药物?请问有没有 ...

加拿大百科-加拿大

亚马逊账号被黑记

华人网上来报个到,亚马逊账号被黑了,都不知道对方是怎么操作的...故事有点长,等有时间了再来更新。 评论 现在都有two step authentication,还能被黑,难道魔高一丈?最有效的解决途径是打 ...

加拿大百科-加拿大

大统华升职!!

华人网在大统华做supervisor要什么条件才可以升副主管,主管?薪水大约多少? 评论 大统华labor太卷了 评论 zxzwan2010 说:大统华labor太卷了点击展开...我问卷不卷了吗? 评论 赞!!! 太棒啦! ...

加拿大百科-加拿大

关于立遗书

华人网大家觉得有必要立遗嘱吗在安省 现在自住房想以后留给孩子独生子 评论 有比没有好, 没有的话万一有事真的很麻烦 评论 平安书有钱有业有孩子的必须做,如果大吉利是忽然走了,所 ...

加拿大百科-加拿大

世界十大最丑建筑。转帖

华人网互联网 榜首反而最具设计感? 评论 美学向来没有一定的準则,每个人的审美观各有不同,话虽如此,但当大多数人都认为一件事物是美或醜,总会有一定的参考价值。 评论 早前国外一 ...