【Friday BI Fly】2016年05月06日 Python零基础入门实战 微信直播文字版记录 【全程回放】

浏览: 3682

公告

周五BI飞起来,天善商业智能BI社区每周五下午举办问答社区在线答疑活动,每周五晚上举办行业、厂商工具、技术相关的微信在线直播活动。

2016年05月06日 Friday BI Fly 微信直播主题–python零基础入门实战

【活动预告】详情请关注天善问答社区活动页面http://www.flybi.net/project/

Clipboard Image.png

Clipboard Image.png

Clipboard Image.png

主持人:加入本群的同学们,感谢大家参加由天善智能举办的 Friday BI Fly 活动,每周五微信直播,每周一个话题敬请关注。

【群规】本群为商业智能和大数据行业、技术、工具的交流学习群。不准发广告,只能发红包,发广告者一律移除微信群。

本次微信直播讨论内容

1、Python快速入门

2、python整个产品线

3、如何使用Python自动从网络下载资源 

本期嘉宾介绍

人民日报大数据专家  牟瑞

牟瑞专栏  天天向上  http://www.flybi.net/people/marey111

 Hadoop入门课程地址  视频专栏  http://www.hellobi.com/course/39

主持人:大家好,我是微信直播活动的主持人咖啡,每周一个主题,一场跟数据有关的行业、工具、技术的交流盛宴。我们的口号是“Friday BI Fly  周五BI飞起来”。

大家期待已久的python零基础入门分享来了,近期python和R语言火爆程度有点令人震惊,通过博客以及朋友圈分享的文章就能看出来了,从近期发布的职位上也能看出来,很多职位尤其是数据分析,大数据相关的职位都会要求会python或R语言,今天我们就邀请了这方面的专家给大家分享,给大家快速入门python指点迷津。有请牟瑞牟老师!

Python零基础入门实战

大家好,我是牟瑞,全栈工程师,今天由我来给大家介绍下Python的相关知识。下面我们正式开始,首先我们来看看Python是什么?

关于Python不得不说的故事

什么是Python

Python是一种面向对象、解释型计算机程序设计语言,由Guidovan Rossum于1989年发明,第一个公开发行版发行于1991年。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为程序的名字,是因为他是一个叫Monty Python的喜剧团体的爱好者。

Python是纯粹的自由软件, 源代码解释器CPython遵循 GPL(GNU General Public License)协议。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中[2]  有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

以上内容来自百度百科,参考地址如下:

http://baike.baidu.com/link?url=KeDN0gKlhXXo_eq_wEogBVvPU09vZeLhtD8ll2cXw6Cnke5svjLrLH7StpipQ-HC-wUnjO_fkVFfwxb_-Tcweq#reference-[5]-21087-wrap

Python的哲学:

在python中输入:import this,我们会看到python的哲学

import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.       
Explicit is better than implicit.    
Simple is better than complex.       
Complex is better than complicated.  
Flat is better than nested.      
Sparse is better than dense.      
Readability counts.           
Special cases aren't special enough to break the rules.   
Although practicality beats purity.   
Errors should never pass silently.    
Unless explicitly silenced.          
In the face of ambiguity, refuse the temptation to guess. 
There should be one-- and preferably only one --obvious way to do it. 
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.    
Although never is often better than *right* now.  
If the implementation is hard to explain, it's a bad idea.  
If the implementation is easy to explain, it may be a good idea.   
Namespaces are one honking great idea -- let's do more of those!  

翻译过来中文就是

优美胜于丑陋
明了胜于晦涩
简单胜过复杂
复杂胜过凌乱
扁平胜于嵌套
间隔胜于紧凑
可读性很重要
即使假借特例的实用性之名,也不违背这些规则
虽然实用性次于纯度
错误不应该被无声的忽略
除非明确的沉默       
当存在多种可能时,不要尝试去猜测
应该有一个,最好只有一个,明显能做到这一点
虽然这种 方式可能不容易,除非你是python之父
现在做总比不做好
虽然过去从未比现在好
如果这个实现不容易解释,那么它肯定是坏主意
如果这个实现容易解释,那么它很可能是个好主意
命名空间是一种绝妙的理念,应当多加利用

这个哲学听起来很像圣经里面的赞美诗,实际上也确实是这样,Python非常棒,请尽情的赞美它!

Python的口号:

人生苦短,我用python

我经历过非常多的语言,这句话非常好,非常有体会。

Clipboard Image.png

这个人就是创始人为Guidovan Rossum。

python的开发效率非常高,而且是有强制的缩进,使得不管是写代码的人还是看代码的人都非常清楚(就好似写诗一样,写一段换一行)。人生只有短短几十年,开发效率低就是等于在浪费生命,做不完我想做的事,用python吧!它能让你在有限的生命里干完你想干的事儿:)。

为什么要用python:

²  简练

使用像Python这样的动态类型语言编写的代码往往比用其他主流语言编写的代码更加简短。这意味着,在完成示例的过程中会有更少的录入工作,而且这也意味着我们将更容易记住算法并真正领会算法的原理。

²  易于阅读

Python不时被人们指为“可执行的伪代码”。虽然很明显这是夸大之词,但是它表明,大多数有经验的程序员可以读懂Python代码并领会代码所要表达的意图。

²  易于安装

不管是Windows,Linux还是Mac系统,只要配置好Python的环境,只需要easy_install  XX或者pip install XX 就可以安装所需要的第三方扩展包。当然,对于Windows 64bit的操作系统来说,可能稍微麻烦一点,有些会出现兼容性问题,不过也都可以找到相应的解决方案。

²  易于扩展

Python附属了很多的标准库,这些涉及数据函数,XML解析,以及网页下载(笔者注:Python的BeautifulSoup是笔者见过的做好的HTML/XML解析工具之一,速度快,文档例子非常多),RSS解析,SQLLite等等

²  交互性

Python可以直接从命令行运行程序,它还有交互提示,允许我们键入函数调用,创建对象,并以交互的形式对包进行测试。

²  多范式

Python支持面向对象,过程式和函数式的编程风格。机器学习算法千差万别,最为清晰的做法是针对不同算法采用不同的范式。有时将函数作为参数传入很有用处,而有时我们则需要再对象中捕获状态。对于这两种方式,Python都比较好的予以支持。

²  多平台和开源免费

Python有一个针对所有主流平台的单一参考实现,并且对所有的平台都是免费的。Linux和Mac系统一般都是自带Python的环境。Windows需要自行安装,从visual studio 2013开始,微软平台也开始支持Python的开发功能。

在这里还有一个需要格外注意的事情,对于Python来言,Python 解释器不是完全线程安全的。在Python 多线程当中,存在一个叫Global Interpreter Lock(GIL)的东西,直译就是全局解释器锁。它的作用在于让同一时刻只能有一个线程对于python对象进行操作。Python已经提供了各种机制让我们进行多线程同步,为什么又要整这个GIL呢?这是因为程序员控制的同步是对各个程序中可见的变量,而GIL同步的是解释器后台的不可见变量,比如为了进行垃圾回收而维护的引用计数。如果没有GIL,有可能出现由于线程切换导致的对同一个对象释放两次的情况。这点需要格外注意。

参考阅读如下:

为什么要使用Python:http://blog.csdn.net/caimouse/article/details/41550045

为什么我们要用Python

http://www.cnblogs.com/huxi/archive/2010/12/19/1910425.html

Python 论优缺点:

http://www.cnblogs.com/xupeizhi/archive/2012/07/21/2602861.html

Python线程状态和全局解释器锁:

http://blog.csdn.net/cglover/article/details/2566450

一张PythonJava的一个实现对比: http://spark.apache.org/examples.html

Clipboard Image.png

Clipboard Image.png

我们可以看到,只需要三行代码,python就实现了一个清晰,明了的wordcount实现。

已经有越来越多的人感受到了生命的可贵,并且加入到了Python的阵营中:

2016年4月TIOBE编程语言排行榜:

Clipboard Image.png

Python的学习版本:

python主要分为python2.x和python3.x版本,针对python2.x,python3.x,有一个非常重要的升级,就是Unicode的编码问题。

推荐使用python2.x版本,主要是基于以下的几点:

1.        python2.x目前应用最广,很多公司的系统都还比较老,还没有进行较大规模的升级,因此还在使用python2.x版本。

2.        非常多的第三方lib包还在使用python2.x版本,还没有升级到python3.x版本。

3.        很多的内部公司的操作系统,比如centos6.x系列,默认是安装的python2.6,在公司内部网络里,我们也可以轻松使用python进行编程。

Python的学习推荐:

很多同学都比较喜欢看书,我们先来推荐几本书:

入门篇:

1.《Python基础教程》 出版社:人民邮电出版社

Clipboard Image.png


2.《Python入门经典》 出版社: 机械工业出版社

Clipboard Image.png

3.《深入浅出 Python(中文版)》出版社:中国电力出版社

Clipboard Image.png

提高篇:

1.《Python Cookbook(第3版)中文版》出版社: 人民邮电出版社

Clipboard Image.png

2.《Python核心编程(第2版)》中文 《Core PYTHONProgramming》 出版社: 人民邮电出版社

Clipboard Image.png

专业篇:

1.《集体智慧编程》出版社: 电子工业出版社

Clipboard Image.png

2.《利用Python进行数据分析》中文出版社: 机械工业出版社  《Python for DataAnalysis》英文

Clipboard Image.png

3.《Python自然语言处理》出版社:人民邮电出版社

Clipboard Image.png

下面来介绍几个学习的网站:

天善社区-Python专区:http://www.flybi.net/category/47

廖雪峰的官方网站-Python教程:

http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

GitHub:各类开源软件的大本营,包含非常多的Python第三方包及使用教程,说明再来两个比较好的Python微信公共号:Python开发者(PythonCoder)、Python程序员

Python的美妙学习之旅

python新手需要了解

1.程序的组成部分:什么是模块、表达式和语句、空白、注释、标记、对象命名  

2.变量:什么是有效变量、非法变量   

3.对象和类型:什么是对象,什么是基本类型、内置类型、非变量类型,如何赋值  

4.运算符:整数运算符、浮点运算符、混合运算符、增强运算符

5.控制语句:if语句,循环语句    6.print语句的用法

更详细的内容可以参阅《Python入门经典》。

python熟手应该知道(非常重要):   

1.字符串:字符串索引及分片,字符串操作,格式化输出 ;  

2.列表和元组:什么是列表,列表的操作(索引和分片、运算符、列表循环),列表函数与方法(range、split、join、sorted、reverse等),什么是元组及元组与列表的区别(面试中会经常问到);  

3.字典和集合:什么是字典,什么是集合,字典的索引及赋值,字典和集合各自对应的函数和方法(get,len,sorted,reverse,zip等);

4.函数:什么是函数,什么时候使用函数,如何调用函数,什么是参数(实参,形参和命名空间,可变参数,默认参数),什么是作用域,return的不同使用方式;

5.文件:打开,关闭,读写文件。

Python高手应该明白:

Clipboard Image.png

上面的内容是一个Python学习者最起码应该掌握的技能,更多的技能还需要在工作和实践中不断的去学习。

打造属于自己的爬虫       

先推荐一个博客:http://www.flybi.net/blog/seng/category/517 里面有很多的关于Python爬虫的例子。    

对于一个pythoner来说,实现一个爬虫非常的容易

Clipboard Image.png

最简单的一个爬虫就结束了。
    如果我们想要获取网页的内容,一般来说有三种方式,由简到难的三种方式DOM、SAX、文本匹配。在我们比较简单的爬虫技术开发中,一般使用xpath、css selector、正则表达式三种实现方式来对html、xml的进行解析。xpath相关的内容教程可以参考:http://www.w3school.com.cn/xpath/ 非常简单易学。

Python下的相关库非常多,我们来简单的介绍几个:

BeautifulSoup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户,提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,BeautifulSoup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。

官方地址:https://www.crummy.com/software/BeautifulSoup/bs4/doc/

ScrapyPython开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。官方地址:http://scrapy.org/

Selenium是一个web的自动化测试工具,可以使用代码的方式模拟浏览器的请求行为,对于某些使用JS加载的网站,非常好用。缺点:效率有点低。
    官方地址:http://www.seleniumhq.org/ 

newspager:一个非常小巧的新闻类网页识别的工具。   

官方地址:https://github.com/codelucas/newspaper

更多福利Python的第三方lib大放送请参阅:https://www.zhihu.com/question/24590883/answer/46457511

Clipboard Image.png

Clipboard Image.png

在爬虫的实际工作中,由于爬虫抓取内容的多样性,为了快速的去验证内容和快速开发,我们一般优先采用文本或者mongodb来存放我们的抓取后的数据。一般不采用关系型的数据库。

好了,上面的内容就是我的简单分享,大家有什么问题,可以速度提问。

主持人:好的,感谢牟老师给我们带来的精彩分享,分享的内容比较幽默有趣,给我们演示了python代码示例,以及学习python该阅读的书及该注意的地方。我估计有些同学已经自学了一段时间了,过程中有没有遇到问题呢,下面就进入我们的自由讨论环节,畅所欲言大家在学习python过程中遇到的问题,只要是跟今天的主题有关的,大家都可以提出来。

自由讨论

问题1python可以做数据可视化吗?

牟瑞-人民日报媒体技术:Python有非常牛的3大框架:Django,Tornado,Flask。但是可视化还是大部分的Js 框架,比如Echart,D3。

罐头:数据可视化还是应该靠可视化工具吧

 

问题2:应对淘宝的反扒机制,有没有什么好的办法

牟瑞-人民日报媒体技术淘宝的之前我个人使用的就是不断更换IP地址,然后小号token登陆。

Rong反扒机制, 我的理解就是模仿成正常的操作。

 

问题3 pythonscrapy现在还没有完全兼容3.x ,所以存在一个GIL锁,那对于提高爬取效率,和有效的利用多核来看,有什么更好的建议?

牟瑞-人民日报媒体技术:可以使用容器技术,或者指定进程,在每一颗CPU上启动一个Python进程。

hi,I'm frank好的,谢谢建议。目前我们是打包scrapyd+scrapy project = docker 的形式,在看有没有更好的更有效的方案。

Rongscrapyd+scrapy project = docker 应该效率还好吧?

牟瑞-人民日报媒体技术:这种方式对于Python来说是比较好的了。

hi,I'm frank@人民日报媒体技术-牟瑞 其实这样一是减少运维成本,二是解耦合,都以api方式互相调用。三,基于api可以做更多的东西,比如dashbord

hi,I'm frank比如这种:

Clipboard Image.png

rong同意大鱼的说法, 现在etl也逐渐api化了

牟瑞-人民日报媒体技术:@深圳_爬虫_大鱼 你们已经做到前面了。

hi,I'm frank嗯,之前做过etl[Smile],现在做爬虫,感觉以前的一套完全可以灵活的用起来。见笑了

牟瑞-人民日报媒体技术:很多技术都是相通的。。

hi,I'm frank当然,爬虫只是一个rawdata ,数据清洗的小伙伴们负责piepline的部分。

 

问题4 scrapypy2.67使用是吧?

牟瑞-人民日报媒体技术: scrapy现在应该是支持Python3.0了

 

问题5python主要应用在哪些方面例如爬虫?web开发?数据分析?

牟瑞-人民日报媒体技术:Python是个动态胶水语言,用来数据处理的各个方面都可以。

 

问题6python经常遇到中文乱码,有没有方便处理的经验呢?

牟瑞-人民日报媒体技术:#coding:UTF-8

 

问题7:你们做爬虫涉及数据分析吗?数据分析你们是用什么技术实现的。

牟瑞-人民日报媒体技术:留下来的数据肯定是要分析的啊,我们现在用的比较多的是R来建模,也有Python,但是不是很多。

 

问题8:有没有好的代理服务推荐

牟瑞-人民日报媒体技术:@广州~陈宏 换IP地址用的?

周勇:是的

牟瑞-人民日报媒体技术:@广州~陈宏 推荐ADSL。。没有比这更好的了。。

  

问题9:请教下,数据主要存储在哪里?

hi,I'm frank爬虫的数据适合mongo 等nosql的数据库

牟瑞-人民日报媒体技术: 对,优先是非结构化的数据库,,等非常稳定后可以变成结构化的。

hi,I'm frank@牟瑞-人民日报媒体技术 上次云栖大会问过阿里的数据讲师,都讨论过一下

hi,I'm frank对了,用mongo的同学记得mongo尽量打包成docker限制资源。

 

问题10:有什么书讲的比较详细,会涉及一些底层的东西?

牟瑞:爬虫的辅导书,我个人建议是直接参考Scrapy的官方文档。

 

问题11:感觉现在还是用python2比较多,实际上现在建议是用2还是3

牟瑞-人民日报媒体技术:我个人建议是用2。。。然后实际用到了再学些3。

娜样好吗:如果新手学了3可以自如用2吗

Timkeng我是新手,要学习的话,是要从Python2.x开始吧!

Rong我建议3,Scrapy 1.1也会支持python3了

卢兆灯:2跟3语法差别不大,主要是库的差别。被2的编码问题坑过很多次了。。。 3的编码问题会好很多

 

问题12:麻烦问下用数据分析的话是不是要学pandas包?

牟瑞-人民日报媒体技术:数据分析的入门建议在学习中真正用的哪个是哪个。。实际上SPSS最容易入门。。Pandas包只是用来处理数据非常的方便。

娜样好吗:谢谢,也就是一般从事数据分析岗位spss,用途较广?python主要用于爬虫?

牟瑞-人民日报媒体技术:@娜样好吗--合肥 spss是入门最容易。。作为一个数据分析师,要处理各种各样的数据。。复合型人才还是主要的。。Python可以非常快速的处理各种数据。

娜样好吗:是不是这样逻辑,用python进行数据抓取,sql数据库进行整理筛选,用spss处理,小白,请见谅

牟瑞-人民日报媒体技术:这样的应用是可以的,工具是死的,组合是活的,你用Python,R也可以处理。

主持人:再次感谢牟老师的精彩分享以及耐心细致的回答,我们今天的微信直播活动到这里就要结束了,大家问题太多了,没来得及回答的请提问到社区http://ask.hellobi.com/question,今天的微信直播活动文字版记录会发布到http://ask.hellobi.com/blog/tianshansoft/category/354以及天善智能公众号

下期预告

2016年05月13日晚8点半大数据挖掘与违约欺诈分析、违约欺诈分析模型评估与应对等交流会第16场http://ask.hellobi.com/blog/tianshansoft/3822

今天的微信直播活动到这里就结束了,喜欢天善智能的朋友们请继续关注我们,每周五晚8:30,我们不见不散哦!

参与方式

每周 Friday BI Fly 微信直播参加方式,加个人微信:liangyonghellobi ,并发送微信:行业+姓名,即可参加天善智能微信直播活动。

天善智能介绍

天善智能是一个专注于商业智能BI、数据分析、数据挖掘和大数据技术的垂直社区平台,旗下包括问答社区、在线学院和招聘平台三个网站。

问答社区和在线学院是国内最大的商业智能BI 和大数据领域的技术社区和在线学习平台,技术版块与在线课程已经覆盖 商业智能、数据分析、数据挖掘、大数据、数据仓库、Microsoft BI、Oracle BIEE、IBM Cognos、SAP BO、Kettle、Informatica、DataStage、Halo BI、QlikView、Tableau、Hadoop 等国外主流产品和技术。

天善智能积极地推动国产商业智能 BI 和大数据产品与技术在国内的普及与发展,合作成员包括:帆软软件、Smartbi、永洪科技、ETHINKBI、TASKCTL、奥威Power-BI、上海启路科技、上海亦策等。

Clipboard Image.png

推荐 5
本文由 天善智能 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

感谢牟瑞分享。
感谢牟老师的分享。

要回复文章请先登录注册