社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

7个python案例中的数据思维

大数据分析和人工智能 • 5 年前 • 403 次点击  

最近小马哥上线了7天入门python,今天我们也来说下python的7个案例。重点是这些案例反映的思维,在我看来,代码也是思维的一种良好体现


我记得上大学C语言的时候,有个题目是a,b两变量的数据交换。当是我给出的答案是


a,b=b,a,结果惨被打脸。就大部分编程语言而言,这样一个小小的需求,基本上都要通过中间变量去实现。而对于python,a,b=b,a这种写法就已经满足。其实随着学python的深入,会发现这门语言跟人的直觉思考方式非常相似。不信我们来看7个案例

 

1、计算1+2+…+100的和

普通实现:for循环累计,至少3行代码

Python实现:print(sum(range(1,101)))


解析:

sum函数在无参时,不管内部是什么都是全部相加(range返回的并不是列表,而是自身的对象,这都不重要),所以用一行代码就可以实现。


比如print(sum([1,2],[3,4])),返回值会是10。有没有发现,这种实现方式跟你大脑里面的初步逻辑:1,2,…100先罗列出来,然后直接相加就行了很像。这个过程中不需要用到循环,没学过编程的人也不可能想到循环

 

2、输入列表[1,2,3,4,5],希望能实现输出是[1,4,9,16,25]

普通实现:先定义一个函数实现平方功能,再for循环调用,至少5行代码


Python实现:

print(list(map(lambdax:x**2,[1,2,3,4,5])))

解析:将平方函数一次性映射与每一个元素,是不是很符合函数的本质,高中的时候,我们学过,函数即直接映射,我们压根不用关心该函数的名称,只需要知道功能就行,是不是很简单粗暴有效。所以python强大就强大在这些地方:各种函数库,你要做的就是搬过来

 

3、列表[[1,2,3],[4,5,6],[7,8,9]]所有子集展开,输出为[1,2,3,4,5,6,7,8,9]

普通实现:通过索引来实现


Python实现

print([ jfor i in [[1,2,3],[4,5,6],[7,8,9]] for j in i ])

解析:一层一层分解,先把第一层取出来,看有哪些元素,在此基础上重复操作一次,压根不需要索引。作为分析师,学会对问题进行识别,然后用一些生活中的方法论去解决尤为重要。最怕的就是问题还没想清楚,就直接用户分群聚类(这种情况我见到太多,不想当面吐槽),兄弟,赶紧去面壁

 

4、x="abc",y="def",z=["d","e","f"],分别求出x.join(y)和x.join(z)返回的结果


解析:

两者的返回值是一样的,都是dabceabcf,join函数能够将列表、元组、字符串中的元素直接进行拼凑,非常好用和人性化。我想到了我第一款正式数据分析软件是SAS,那个时候经常为各种文件格式、变量格式头疼不已,光sas导入文件可能就有各种bug,非常头疼,但还是用了好几年。我们在工作的过程中,往往会形成一种惯性:明明某个业务很有问题,但总是有借口去选择不解决;明明发现自己的分析思路不太体系化,只要能满足当前需要,就选择忽视它。对于分析师产品运营,一直在做业务的优化优化,但如果你自身都没有优化好,你怎么能把工作做的更好。

 

5、打印出杨辉三角前十行

程序及答案:


解析:

该案例本身的问题非常清晰,难就难在问题的拆解阶段:怎么样去简洁实现杨辉三角。这里用到了两个基础但很混淆知识点,1是列表的+操作是添加,map函数是对列表的每个元素进行操作,而不是列表整体。可以看出,要想进行良好的问题拆解,必须要有扎实的基本功。最近有一位同学遇到一个问题:注册购买率同比下降,而他在看分子分母各自的影响值,这就暴露出问题的拆解阶段需要加强。所以当遇到一个明确的业务问题而无从下手时,就已经说明你对业务的理解要加深:体验产品入手,然后看指标体系,再去和业务沟通。

 

6、计算2+22+222+2…2222,多少个2由输入控制


解析:

该问题肯定是用循环来解决,难点就是在于怎么样去有效的累积每一个因子。


这里利用小小的字符串相加就很好的实现了每一次的拼接。所以不要小看任何一个知识点。在数据分析中,数据异常是最考验分析师的零散知识点理解深入度。比如趋势异常:你看的是多久趋势,能不能这样环比同比,真的是异常吗。很多时候不是问题多复杂,而是思维固化。最近我也在和很多研发同学聊一些数据异常,他们的反馈是:数据分析师这个思维力太强了,能够打的很开,很快定位到问题

 

7. 企业发放的奖金根据利润提成。


利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

 

解析:

按照一般的编程逻辑,肯定是通过if elif来分段实现,这是最好理解和最通俗的做法。不过:作为一名分析师,我们的代码、ppt、excel、专题报告还是要有专业度的,所以既要能实现需求,还要能满足审美要求。


这里通过增加辅助列表来实现。实际上,借助额外辅助这种思维非常非常常见。上次文案中的图表制作,就用到了很多辅助线。我们高中做立体几何的时候经常画各种虚拟线,也是这种思想。所以无论你的职位是什么,思维都是想通的,也是需要训练的

 

好的,今天对python的初步讲解就到这里。顺便提下:上面的代码如果你不太理解,那就先记住他,任何一门学科都是需要记忆力的,而这个也是可以训练的。


思维课大家学习的热情太高,基于此:本周我会整理出20本经典的分析思维书籍(购买思维课的请下周直接找小雪),助你在2019的第二季度再一次与与别人拉开差距


每一次的努力,都会增加未来成功的概率,思维训练这件事上,我们是认真的。加油吧,少年


推荐文章作者开发的数据分析案例思维课程


这门课的特点:案例讲解,由BAT数据分析专家带你领略数据分析思维的乐趣,目前好评如潮,记住有了思维和方法论再去入门,这样你定位更加清晰,后期也可作为自己思维的提升,多看几遍

上线3个月月已有近2000人加入学习


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/31624
 
403 次点击