斯坦福 IT

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

赞力太弱。手动点赞一下。那些17万以上的肯定是给计算机专业做data engineer的。平常人转行拿到那些职位还是有很大难度的。不过试一下也不会少了什么。印度人随便学个hello world都是软件工程师,咱中国人都是太过谦虚,妄自菲薄。反正闲着也是闲着,与其网上打架,不如闭关修炼半年,神功练成拿一个大包裹岂不美哉?
 
你说的是我一直反对的做法。

Python是编程语言(瑞士军刀),SQL是查询语言(菜刀),Python是给SQL帮忙的。无限的扩展Python编辑器,在里面跑SQL,是本末倒置,或者说,根本不清楚数据分析的目的和原理。

你在瑞士军刀加一个菜刀插件,我为什么不直接用菜刀啊?!

只有在确实不能使用SQL的时候,才考虑借Python帮忙,不能上来直接什么都有Python。

BI,数据分析,数据科学,大数据,核心还是:查询。SQL是最好的查询语言,是亲爹。Python是编程语言,是二叔,R是统计语言,是大姑。二叔和大姑,不能替代亲爹。

Python编辑器上加SQL插件,是二叔穿亲爹的衣服,冒充老爹。傻啊?!想爸爸,直接找亲爹就完了。
用python连接不同的sql确实很常见和实用。目的也是你提的,能用sql就不用自己写逻辑。python调用sql只是把要运行的query发到对应的数据库,具体还是数据库运行sql,query,并不是用python的interpreter去运行sql。
 
现在推Python是潮流,因为大家想去SQL化。关系型数据库慢慢会边缘化,文件型数据库慢慢成为主流,也许以后真的就是SQL给Python当替补了。

Python = JAVA + SQL,一种语言管所有。程序开发和BI两个团队也合并了。呵呵。

还可以开一节课:Python 和 Java (.net 早就挂了,就不讨论了)
python还替不了。除非学会cython或用c或c++写自己的库,那才能一招鲜吃遍天
 
赞力太弱。手动点赞一下。那些17万以上的肯定是给计算机专业做data engineer的。平常人转行拿到那些职位还是有很大难度的。不过试一下也不会少了什么。印度人随便学个hello world都是软件工程师,咱中国人都是太过谦虚,妄自菲薄。反正闲着也是闲着,与其网上打架,不如闭关修炼半年,神功练成拿一个大包裹岂不美哉?

完全正确。BI Big Data 领域,属于半IT行业,也属于新兴高薪行业,传统行业转行过来的可能性和可操作性比CS要容易很多。
 
现在很多文章神化python在数据分析的地位,其实主要原因是他在人工智能方面的library是最完善和易用的,而且tensorflow ,sklearn呵pytorch这三大神级library。和他本身的功能无关。如果有团队愿意用Java搞出一模一样的library,很多企业会转移用Java或Scala。会python而不会这几个library,其实还是没有用
 
完全正确。BI Big Data 领域,属于半IT行业,也属于新兴高薪行业,传统行业转行过来的可能性和可操作性比CS要容易很多。
我会说big data要求比传统行业更高。要会的东西更多。是传统行业的基础上加上大数据的要求,所以更难转移。你可以提哪些要求是传统行业有的大数据没有。
 
现在很多文章神化python在数据分析的地位,其实主要原因是他在人工智能方面的library是最完善和易用的,而且tensorflow ,sklearn呵pytorch这三大神级library。和他本身的功能无关。如果有团队愿意用Java搞出一模一样的library,很多企业会转移用Java或Scala。会python而不会这几个library,其实还是没有用

SQL
串行计算 - 必杀
非完全开源(Oracle和MySQL都是一个老板,大家拒绝再交保护费) - 杀

JAVA(全能型选手)
并行计算 - 不杀
非完全开源(Oracle是JAVA老板,Google是安卓老板,大家不愿意受控制) - 杀

Python(不完善的全能型选手,不完善才有建功立业的空间,强推)
并行计算 - 不杀
完全开源(没有大佬,大家都可能成为大佬,跑马圈地,冲啊!)- 不杀

.NET(微软的私房菜,虽然开源了)- 杀
 
我会说big data要求比传统行业更高。要会的东西更多。是传统行业的基础上加上大数据的要求,所以更难转移。你可以提哪些要求是传统行业有的大数据没有。
对很多传统行业来说,big data并不一定好入门,主要原因是很多人的工作内容跟big data没有关系。比如我用Python做很多数据处理的自动流程,但是数据的规模跟big data没有关系,在本行业内想过渡到big data处理目前看来是没有指望。其实只要有需求,我相信行业内转big data比科班出身容易,因为需要有对本行业数据和工作流程的了解
 
我会说big data要求比传统行业更高。要会的东西更多。是传统行业的基础上加上大数据的要求,所以更难转移
对很多传统行业来说,big data并不一定好入门,主要原因是很多人的工作内容跟big data没有关系。比如我用Python做很多数据处理的自动流程,但是数据的规模跟big data没有关系,在本行业内想过渡到big data处理目前看来是没有指望。其实只要有需求,我相信行业内转big data比科班出身容易,因为需要有对本行业数据和工作流程的了解
我是传统数据处理和大数据都干过。大数据主要是要理解partitioning和small size fileproblem。有空我开个帖子谈
 
第五课: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 is
member_id date channel spend
1001 1/1/2018 mobile 100
1001 1/1/2018 desktop 100
1002 1/1/2018 mobile 100
1002 1/2/2018 mobile 100
1003 1/1/2018 desktop 100
1003 1/2/2018 desktop 100

The output data is
date channel total_spend total_members
1/1/2018 desktop 100 1
1/1/2018 mobile 100 1
1/1/2018 both 200 1
1/2/2018 desktop 100 1
1/2/2018 mobile 100 1
1/2/2018 both 0 0


SQL solution:

CREATE VIEW member_spend AS
SELECT
date,
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_spend
FROM
spending
GROUP BY date, member_id;


SELECT
date,
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_members
FROM member_spend
GROUP BY
date,
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’].spend
spending[‘desktop_spend’] = spending[spending.channel == ‘desktop’].spend
member_spend = spending.group_by([‘date’, ‘member_id’]).sum([‘mobile_spend’, ‘desktop_spend’]).to_frame([‘mobile_spend’, ‘desktop_spend’].reset_index()

SQL

SELECT
date,
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_members
FROM member_spend
GROUP BY
date,
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

member_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())
会用python pandas就能够应聘数据科学家?表示严重怀疑,data science工作提的最多的是linear regression, machine learning, or cloud deployment什么的,不否认我相信会Pandas肯定也能学会这些,但是招人的公司不这样想啊,他们都是想找有技术有经验,来了就能用的,不会只考你会不会Pandas就让你做data science的工作的。不写自己会scikit-learn, spark的话面试都不会给你机会吧
 
如果把上面6节课的精神全部领会,保证你100%可以通过面试,拿到25万美金的Facebook和谷歌Offer。掌握了5节课,就可以拿到18万美金的亚麻或者微软的Offer。
这纯粹瞎扯,现在大厂考算法都考成什么样了都。
 

注册或登录来发表评论

您必须是注册会员才可以发表评论

注册帐号

注册帐号. 太容易了!

登录

已有帐号? 在这里登录.

Similar threads

顶部