200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 我和Python从相识到相知再到相爱的故事

我和Python从相识到相知再到相爱的故事

时间:2019-02-08 07:31:09

相关推荐

我和Python从相识到相知再到相爱的故事

我在知乎上看到这样一个问题,于是花两小时写了这个回答的文章。

一、首先一对一回答题主的问题:

你学python多久了?

答:从学开始,边学边用,总共七八年了。

现在是什么水平呢?

答:全栈开发不敢说,但需要满足的业务场景基本都能用python搞定。

有从事相关的工作吗?

答:自从接触到python,就一直从事python开发工作了,专注数据开发,其他python周边也有。

或者有做相关的兼职吗?

答:在做python兼职,接一些小单,提升自己技术的同时,赚点零花钱。

二、详细说说我和python的缘分始终

现在是.10.6号的凌晨6点半,睡不着了,来知乎刷到这个问题。用我自己的真实经历,详细说说我是怎么开始走上python开发这条路的。

2.1、爬虫篇

我大概从七八年前,在客户现场,遇到一个比较棘手的业务场景,客户需要分析自己的业务数据,但是又没权限拿到总部数据的开放接口API,调配不到这么高权限的资源,只能从前台web页面对应的功能菜单上,一个个去筛选过滤条件,然后点击下载按钮,把数据下载成好几十个Excel再进行分析。针对这种情况,我作为技术支持团队的核心人员,无意间刷到python爬虫的技术文章,当时一直在犹豫,通过爬虫采集到的数据会不会不准确、业务前台页面改版了怎么办、爬虫程序不能稳定运行怎么办,但终归还是用上了python爬虫,毕竟当时也没别的办法了。

既然用爬虫爬前端页面,基础的html、css、就不说了,还得了解点JS、ajax异步、iframe切换什么的。知道前端怎么开发实现的,才能更加针对性地开发好自己的爬虫。

爬到大量数据,总不能存到Excel吧,得存到数据库,就学了对应的存取数据库的库,pymysql、cx_Oracle等,甚至后面还学到了先用sqlalchemy创建个连接,然后用pandasto_sql插入数据库也是超级方便。

这中间,还需要用到一些数据转换、数据清洗,比如爬到的数据是个tuple啊,list啊,总不能直接insert到数据库吧,于是接触到了python中最常用的数据处理的库pandas,先清洗一遍,好使。

一个python程序爬得慢,单个程序已经最优化了,于是又开始了解多线程、多进程什么的,开始学threading、multiprocessing这些库。

python爬虫开发好了之后,总不能每次都手动run它吧,心累,那就写个定时呗。部署到Linux服务器上,就用crontab配置下。如果是Windows Server呢,就配置个定时任务,都是一个道理。再不济了,把定时逻辑写到爬虫程序里面,用到datetime、time.sleep这些库,让程序一直后台运行,While True循环,一到晚上12点,就自己触发自己跑,这样的话,都不用麻烦那些OS层面的定时机制了,也行,条条大路通罗马~

这就是,一个爬虫,开启了我的python学习之路的历程。

2.2、数据分析篇

前面的爬虫,只是解决了数据源获取的问题。数据拿到手,怎么让数据"活"起来,让数据变得有价值,那就要做数据分析了,当然,我也绕不开的。

传统企业,或者大部分公司的非IT部门、非信息化部,很多都是在用Excel汇总、处理数据的,为什么不用数据库呢,因为不懂开发技术呗~

但我作为甲方爸爸的技术支持,必须得用上技术,哪怕撑撑自己的门面装个样子呢。于是学习python的读取Excel文件的库,先后用到了openpyxlxlrdxlwt,这些不仅能读写Excel,还能在Excel里做一些附件功能,比如搞个下拉框、单元格填充颜色、字体大小颜色等等。最后也用上了pandas,用read_excelread_csv把数据读取成DataFrame格式,然后经过各种数据清洗、转换、数据处理等ETL工作,最后再to_excelto_csv吐成Excel文件,落地成结果文件。这一套下来,该学到的python库都掌握得差不多了吧。

当然,有时候,用数据库比较方便些,自然就会用到SQL语言,至于什么时候用python,什么时候用SQL,甚至什么时候用Excel本身,要分不同的适用场景,后续我可以展开来细讲。

数据分析,当然不止于Excel一种数据格式,还有word啊PPT啊PDF啊,我差不多都用到了一些,包括docx、pptx、pdfminer、PyPDF2这些对应的python库。恩?好像楼歪了,有点自动化办公的味儿了~

2.3、数据可视化篇

数据分析完了,总不能把光秃秃、硬邦邦的Excel文件发给爸爸们吧,人家不懂技术,也不能逼着人家去学技术啊~于是,当然要做成更加友好、更加直观的可视化图表了。

如果是简单地开发一些图表,单纯表达数据计算结果、数据分布等情况,用matplotlib这种python最基础的可视化库就足够了。

但如果想开发可视化大屏,就是企业大厅的墙上挂的那种,是通过组合各种图表然后美化界面,达到数据大屏的效果。业界市场上有很多商用产品,比如DataV、FineReport、Tableau、PowerBI等等,但是我最终选择了用百度的Echarts开发了一个数据大屏,除了因为他是免费开源外,界面也不丑,还可交互。

我开发这个大屏,基本把上述所有用到的技术(包括下面的Flask框架)都串起来做了一遍。

2.4、web开发篇

可视化生成的各种图表,以怎样的形式发给爸爸们看呢,总不能把png图片、或者html文件通过邮件post给他们吧,咱们是技术人员不是嘛~ 当然是部署到服务器上,然后让人家在网页上看了。就像访问百度网站一样简单。给爸爸们省时间就是给自己省时间,慢就是快的道理,你懂得~

当时,在我的认知范围内,python的web开发主要有FlaskDjango两种主流框架。我这个人比较懒,能写一行代码办成的事,绝对不写两行代码,自然而然的选择了Flask这个轻量级的开发框架。Django大而全,我没必要用他!

最简单的应用Flask,就是把生成的图表文件,render到template里面,这样,在URL里直接访问http://localhost:5000,就能看到可视化图表了,本地测试没问题,部署到服务器,localhost换成服务器的ip地址就能访问了,超级方便对不对。

稍微复杂一点的应用Flask呢,就是前后端分离,用Flask实现后端接口API的开发,这个工作的前提,就是要和前端开发的小伙伴约定好接口协议,把数据拼装成什么格式吐给他,json、string还是什么其他的都无所谓,但一定要提前约定好,这个很关键,防止后面的前后端扯皮,懂的人已经点赞我了~

2.5、总结

至此,一套完整的数据分析流程就都包含了:

数据采集 -> 数据清洗、数据分析 -> 数据可视化

每个环节都要用到不同 python库,整个流程做下来,想不提升都难。

当然,python的应用领域还远远不止于此,另外还有自动化测试、自动化运维、自动化办公、科学计算、机器学习、深度学习、人工智能算法、大数据等。

记得之前有个HR问我的职业规划是什么,我答,以python开发为基础的人工智能方向。做人如果没梦想和咸鱼有什么分别,哈哈!既然选择了,那就一路走下去吧~

三、关于python副业兼职

我本人身在一个末流省会城市,不像一线城市996、007那么大压力,算是工作生活平衡得开,自己的业余时间也比较丰富,就想着用python接些单子赚点零花钱这样。

有些程序员同事不认可开发兼职这种事,认为很浪费时间、精力,有这时间还不如自己研究一门技术。但是我认为,技术变现需要一个思维转换的过程,把自己从螺丝钉变成老板。不要低头干活,还要抬头看路!

我对自己看的很清楚,我不是那种技术钻很深的人,也永远做不到技术总监、CTO的头衔,所以一定要开拓自己的非技术发展方向,比如产品、运维、管理、沟通等方面。

同时,也不要觉得自己技术很菜,就输出不了任何价值。大佬为小牛提供知识,小牛为小白提供知识。于是根据自己的这个感悟,整理了一个知识变现模型:

最后

如果对Python感兴趣的话,可以试试我的学习方法以及相关的学习资料

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑培训的。

一方面是学习时间相对较短,学习内容更全面更集中。

Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

温馨提示:篇幅有限,已打包文件夹,获取方式在“文末”!!!

二、Python必备开发工具

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、Python练习题

检查学习结果。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。