查看“Python”的源代码
←
Python
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{{提示|欢迎帮助我们进一步提升文章质量,当前重点任务包括: * 章节补充:补充案例、上手章节内容; * 图片补充:用python绘制示例图表、以python为主要工具构建的网站或应用的截屏; * 内容优化:概况章节的补充完善,补充来源引用与更多阅读章节的链接;}} [[文件:pythonLogo.png|192px|缩略图|Python标识]] Python是一款自由、开源的高级解释性计算机编程语言,遵循 GPL(GNU General Public License)协议。Python语法简洁清晰,具有丰富和强大的库,能够把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。在IEEE发布2017年编程语言排行榜中,Python高居首位<ref>[http://36kr.com/p/5084329.html IEEE发布2017年编程语言排行榜:Python高居首位]</ref>。 == 概况 == === 发展历程 === * Python是一种[[高级编程语言]],由荷兰人Guido van Rossum创建并于1991首次发布。 === 主要特点 === * Python是一种[[解释性语言]],特别强调代码的可读性,最典型的例子就是Python用行缩进来区分代码块,而不是其他编程语言中较为常见的大括号。 * Python常常被称为[[胶水语言]],能将其他编程语言制作的各种模块连接在一起。 === 设计哲学 === * Python设计哲学(Zen of Python)包括了19条Python语言的基本原则,由Tim Peter于1999年在Python邮件列表中首次提出和发布。原始文档及后续的版本中都提及,应为20条基本原则而非19条,缺失的原则由Gindo进行补充,但实际上从未发布; * Python设计哲学被Python优化提议(PEP,Python Enhancement Proposals)收录,作为第20号信息文档,可在Python官方网站中查看。同时作为Python编译器的复活节彩蛋,输入代码 <code>import this</code> 即会显示; {| class="wikitable" |- valign = "top" | Beautiful is better than ugly.<br/>Explicit is better than implicit.<br/>Simple is better than complex.<br/>Complex is better than complicated.<br/>Flat is better than nested.<br/>Sparse is better than dense.<br/>Readability counts.<br/>Special cases aren't special enough to break the rules.<br/>Although practicality beats purity.<br/>Errors should never pass silently.<br/>Unless explicitly silenced.<br/>In the face of ambiguity, refuse the temptation to guess.<br/>There should be one—and preferably only one—obvious way to do it.<br/>Although that way may not be obvious at first unless you're Dutch.<br/>Now is better than never.<br/>Although never is often better than right now.<br/>If the implementation is hard to explain, it's a bad idea.<br/>If the implementation is easy to explain, it may be a good idea.<br/>Namespaces are one honking great idea—let's do more of those! <br/> ''Zen of Python, by Tim Peter'' || '''优美胜于丑陋'''(Python 以编写优美的代码为目标)<br/>'''明了胜于晦涩'''(优美的代码应当是明了的,命名规范,风格相似) <br/>'''简洁胜于复杂'''(优美的代码应当是简洁的,不要有复杂的内部实现) <br/>'''复杂胜于凌乱'''(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁) <br/>'''扁平胜于嵌套'''(优美的代码应当是扁平的,不能有太多的嵌套) <br/>'''间隔胜于紧凑'''(优美的代码有适当的间隔,不要奢望一行代码解决问题) <br/>'''可读性很重要'''(优美的代码是可读的) <br/>'''即便假借特例的实用性之名''' <br/>'''也不可违背这些规则'''(这些规则至高无上)<br/>'''不要包容所有错误'''<br/>'''除非你确定需要这样做'''(精准地捕获异常,不写except:pass风格的代码) <br/>'''当存在多种可能,不要尝试去猜测''' <br/>'''而是尽量找一种,最好是唯一一种明显的解决方案'''(如果不确定,就用穷举法) <br/>'''虽然这并不容易,因为你不是 Python 之父'''(这里的 Dutch 是指 Guido) <br/>'''做也许好过不做'''<br/>'''但不假思索就动手还不如不做'''(动手之前要细思量) <br/>'''如果你无法向人描述你的方案,那肯定不是一个好方案'''<br/>'''反之亦然'''(方案测评标准) <br/>'''命名空间是一种绝妙的理念,我们应当多加利用'''(倡导与号召)<br/>''中文翻译源自[https://blog.csdn.net/gzlaiyonghao/article/details/2151918 《Python之禅》的翻译和解释],略有修改。'' |} === 库 === * Python拥有一个强大的标准库,提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。Python标准库提供的工具适用于多种类型的任务,如:针对面向互联网的应用,提供了对MIME、HTTP等标准格式与协议的支持;针对图形用户界面(GUI)应用,提供了关系数据库连接、随机数生成、任意位数小数算法支持、[[正则表达式]]操作、单元测试等各类模块。Python标准库命名接口清晰、文档良好,很容易学习和使用。 * Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能无所不包,覆盖科学计算、Web开发、数据库接口、图形系统多个领域,并且大多成熟而稳定。第三方模块可以使用Python或者C语言编写。截止2018年3月, Python官方第三方资源库[https://pypi.org/ Python Package Index] (PyPI)已收录超过13万项各类功能包。 === 与R语言的比较 === * '''共同点''':[[R语言]]与Python是数据分析领域中最流行的两个编程语言,他们都是免费的、都有活跃的社区支持,以及都提供开源的工具和库; * '''应用场景''':R语言的优势在于统计和图形模型,因此它更多的被学者、数据科学家和统计人员所采用;而Python更注重生产力和代码可读性,作为一种通用语言,Python拥有相对R语言更为广泛的应用领域,如Web开发、机器学习、智能控制等,因而在具有软件工程背景的数据科学工作者、开发者、工程师和程序员中更受欢迎; * '''学习曲线''':Python的用户学习曲线较平缓;而R语言对初学者来说,有一个较为陡峭的学习曲线,且R语言在数据分析之外的功能很有限,一些用户库写得较差、运行较为缓慢; == 应用 == Python灵活且各类爬虫库、数据分析库、数据可视化库较为丰富,很适合用于做数据抓取的主体架构,并基于这些数据做分析及可视化<ref>[https://www.zhihu.com/question/28975391 知乎:你用 Python 做过什么有趣的数据挖掘/分析项目?]</ref>,可将互联网上越来越丰富的数据为各种类型的城市规划与研究所用。 === 网络数据抓取 === * 交通:抓取12306火车、机票网站数据;搭建各个机场的实时流量图; * 财经:抓取雪球及各类财经网站数据; * 住宅:抓取58、搜房、链家等房屋租售数据; * 自然资源:抓取天气数据,环境质量(PM2.5)数据; * 地点舆情:抓取新浪微博的用户发言及舆论数据; * 科技行业:抓取各应用商店的App的下载量及评论数据;追踪各门类App下载量热点,热点行业走势; * 服务行业:抓取大众点评及美团网的餐饮及各类线下门店消费及评价情况;绘制城市早晚高峰时段(某类)人群出行的热点图; === 数据分析 === == 上手 == === 网络爬取 === Python3.x的标准库urllib,将Python2.x的标准库urllib,urllib2功能进行了整合,提供网络爬取的相关功能。一个简单的抓取基本操作如下: <pre> from urllib import request #Python3.x下引用库,Python2.x下引用urllib2,通过urllib2.urlopen()调用 file = request.urlopen("http://wiki.citydatum.com") data = file.read() #读取全部页面,数据格式为bytes类型 data_str = data.decode('utf-8') #解码,转换为str类型 fhandle=open("./1.html","wb") #将爬取的网页保存在本地 fhandle.write(data) fhandle.close() </pre> === 数据分析 === ==== 基本操作流程 ==== {| class="wikitable" |- ! 操作流程 !! 步骤说明 !! 常用命令/库.函数 |- | rowspan = 2 | '''数据导入/导出''' || 读写csv、Excel等格式文件 || pandas.read_csv("路径文件名或文件网址")、pandas.read_excel("路径文件名或文件网址")、to_csv('文件名', encoding='utf-8', index=False); |- | 连接、查询、读写MySQL数据库 || MySQLdb.connect(host='服务器URL', port=端口号,user='用户名', passwd='密码', db='数据库名称')、pandas.read_sql('SQL语句', con=连接变量); |- | rowspan =2 | '''提取和筛选数据''' || 浏览与提取数据 || df.head(), df.tail(), df.columns, df.index, df.ix[行范围,列范围 (.loc、.iloc、.iat等), df.shape; |- | 筛选数据 || dataframe[筛选条件(支持逻辑运算符)]; |- | '''统计描述''' || 计数、均值、分位指等 || dataframe.describe(); |- | rowspan = 5 | '''数据处理''' || 转置 || dataframe.T; |- | 排序 || dataframe.sort_values(by='字段名’); |- | 处理缺失值 || dataframe['字段名'].fillna(缺失替换值); |- | 数据分组 || df.groupby('字段名'); |- | 值替换 || data.replace(查找值,替换值); |- | rowspan = 5 | '''统计分析''' || t检验 || 对两样本来自是否有显著差异进行推断;独立样本t检验:ttest_ind(Group1,Group2);配对样本t检验:ttest_rel(Group1,Group2); |- | 方差分析 || levene方差齐性检验:levene(*args, **kwds) ,如果p<0.05,则方差不齐; |- | 卡方检验 || 指统计样本的实际观测值与理论推断值之间的偏离程度;单因素卡方检验,chisquare(observed,expected); |- | 计数统计 || dataframe['字段名'].value_counts(); |- | 回归分析 || 数据拟合,广义线性回归; |- | rowspan = 2 | '''可视化''' || 图表设置、绘制、存储 || plt.figure();lmplot().savefig('路径文件名'); |- | xkcd风格的图表 || plt.xkcd(); |} ==== 常见相关库 ==== {| class="wikitable" |- ! 名称 !! 功能概述 |- | '''numpy''' || python科学计算的基础包;numpy提供了快速高效的多维数组对象ndarray、对数组执行元素级计算以及直接对数组执行数学运算的函数、读写硬盘上基于数组的数据集的工具,线性代数运算、傅里叶变换、随机数生成功能,以及将C、C++、Fortran代码集成到python的工具; |- | '''pandas''' || 提供了能够快速便捷处理结构化数据的大量数据结构和函数;pandas兼具numpy高性能的数组计算功能以及电子表格和关系型数据(如SQL)灵活的数据处理能力,提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作; |- | '''MySQLdb''' || 提供MySQL数据库连接等功能的Python库; |- | '''xlrd''' || 提供读取Excel文件功能的Python库; |- | '''matplotlib''' || 最为流行的数据图表绘制Python库; |- | '''scipy''' || 一组专门解决科学计算中各种标准问题域的包的集合; |- | '''statsmodels''' || 用于统计分析各类模型的模型集合;([https://github.com/statsmodels/statsmodels Github页面]) |- | '''scikit-learn''' || 一些用于数据挖掘与分析的,简单、高效的工具集([http://scikit-learn.org/stable/ 官方网站]) |} == 参考 == === 参考资料 === <references /> === 外部链接 === * [https://www.python.org/ 官网] * [https://en.wikipedia.org/wiki/Python_(programming_language) Wikipedia] * [https://baike.baidu.com/item/Python 百度百科] * [https://www.cnblogs.com/zhizhan/p/5546599.html Python数据分析入门] * [https://www.zhihu.com/question/20899988 知乎:如何入门 Python 爬虫?] * [http://python.jobbole.com/81332/ 伯乐在线:Python爬虫入门] * [http://www.360doc.com/content/18/0429/06/36490684_749590101.shtml Python VS R,哪个更适合开发者?] [[分类:编程语言]]
该页面使用的模板:
模板:提示
(
查看源代码
)
返回至
Python
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
分类索引
最近更改
随机页面
用户指南
编辑助手
工具
链入页面
相关更改
特殊页面
页面信息