斯坦福 IT

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

传统行业最好在自己行业内找数据分析和自动化编程的机会
好贴!
不能沉底啊!
大家怎么不讨论了啊?
宇航员说几句(句句金言):

1. 在自己行业内

这几个字很重要
科长 所言都仅仅是工具而已
当然由于普通人不会这些工具,才导致了所谓的数据科学家等的出现

2. 如果你通晓本行业情况,可能比纯数据科学家更受欢迎。

比如,保险行业要招一个数据科学家
宇航员会用科长提到的R和Python
那么,宇航员如果去竞聘,肯定秒杀非保险行业的人,甚至科长这样的技术大拿

原因正如科长指出的:学习这些工具,仅需3分钟
(当然是夸张的说法,但是时间不长,是肯定的,就像学习开车,不是造车)
而你要学习保险知识,则需要数年的慢慢积累。

与大家商榷。
希望深入讨论。
谢谢大家!
 

未尝不可

思考的芦苇
第五课: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())
哈哈,科长的太强调编程语言了,有点忽悠人
在我眼里,这个行业到了一定的年限,
基本上语言已经不是考核重点了,都是共通的,
再新的语言,稍微花一点时间学一下,就能上手了
 
哈哈,科长的太强调语言了,
在我眼里,这个行业到了一定的年限,
基本上语言已经不是考核重点了,都是共同的,
语言也确实很重要
所以,科长功不可没,居功至伟。
比如,我们众多加拿大技术移民就是在语言上吃了大亏
虎落平川糟印度人欺负

宇航员之所以能在精算领域所向披靡游刃有余
就是因为宇航员英语(和同类人比而已)出类拔萃
 
科长还是有干货的,不过喜欢夸张的说,
科长当然有本领
这是不争的事实

对于有本事的人, 我不反感(甚至鼓励他们)傲气
人家有资本啊:何况科长那么风趣?
这在技术人员(也就是书呆子)中,是非常难得的品质,是极其聪惠的体现
比如:宇航员
非常难得!

所以,我建议大家:

1. 人啊,一定要全面,文理都通,才能游刃有余。例子:江泽民
2. 要时刻紧盯技术发展前言科技,更新知识。

谢谢大家!
 

未尝不可

思考的芦苇
我当然明白
编程语言之于专业人员
恰恰类似于英语之于技术移民

我没有想到你连这个也没看不懂
出乎意料啊

啥啊,面试软件工程师,

一个会一种编程语言的,作出了一道算法题

一个会2种编程语言,只能解出简单的数据查询

你会选哪一个?
 
呵呵,说的我都想改行了!不过编程需要天赋,弱弱问一句,没有天赋的非IT人士,能有机会吗?

没有机会,别问了,哥就是没有coding天赋的,虽然我还磨了一个软件工程的master出来,但事实印证不擅长就是不擅长。 我花了2年认清了这个现实,然后在另一条道路上去发力和投入,并不后悔。而且我的工作领域一直多少和软件相关,只是不擅长做码农并不是你和整个IT行业绝缘了。

科长和宇航员两个直炮筒已经精辟的帮我们点到了实质,软件始终都是工具,只搞纯软在将来也就是民工的角色,交叉学科,交叉职业是吃香的趋势,具备其他专有行业背景,再懂点编程,你就是香饽饽大拿。职场上掌握议价权。

和投资一样,自我职业的规划切忌人云亦云,每个人都是特殊的一块料,一窝蜂去挤某一个不一定适合自己的行当都不会达到预期。不过先清晰地认识自己,倒是必要的第一步。
 
没有机会,别问了,哥就是没有coding天赋的,虽然我还磨了一个软件工程的master出来,但事实印证不擅长就是不擅长。 我花了2年认清了这个现实,然后在另一条道路上去发力和投入,并不后悔。而且我的工作领域一直多少和软件相关,只是不擅长做码农并不是你和整个IT行业绝缘了。

科长和宇航员两个直炮筒已经精辟的帮我们点到了实质,软件始终都是工具,只搞纯软在将来也就是民工的角色,交叉学科,交叉职业是吃香的趋势,具备其他专有行业背景,再懂点编程,你就是香饽饽大拿。职场上掌握议价权。

和投资一样,自我职业的规划切忌人云亦云,每个人都是特殊的一块料,一窝蜂去挤某一个不一定适合自己的行当都不会达到预期。不过先清晰地认识自己,倒是必要的第一步。
谢谢回复。说得太好了。点了一个赞,可是好像赞力为“0”了。
 

注册或登录来发表评论

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

注册帐号

注册帐号. 太容易了!

登录

已有帐号? 在这里登录.

Similar threads

顶部