Python

来自Wiki.Citydatum
Reiziuh讨论 | 贡献2018年10月4日 (四) 08:50的版本
跳转至: 导航搜索
TODO
提示:欢迎帮助我们进一步提升文章质量,当前重点任务包括:
  • 章节补充:补充案例、上手章节内容;
  • 图片补充:用python绘制示例图表、以python为主要工具构建的网站或应用的截屏;
  • 内容优化:概况章节的补充完善,补充来源引用与更多阅读章节的链接;


Python标识

Python是一款自由、开源的高级解释性计算机编程语言,遵循 GPL(GNU General Public License)协议。Python语法简洁清晰,具有丰富和强大的库,能够把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。在IEEE发布2017年编程语言排行榜中,Python高居首位[1]

概况

发展历程

  • Python是一种高级编程语言,由荷兰人Guido van Rossum创建并于1991首次发布。

主要特点

  • Python是一种解释性语言,特别强调代码的可读性,最典型的例子就是Python用行缩进来区分代码块,而不是其他编程语言中较为常见的大括号。
  • Python常常被称为胶水语言,能将其他编程语言制作的各种模块连接在一起。

  • Python拥有一个强大的标准库,提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。Python标准库提供的工具适用于多种类型的任务,如:针对面向互联网的应用,提供了对MIME、HTTP等标准格式与协议的支持;针对图形用户界面(GUI)应用,提供了关系数据库连接、随机数生成、任意位数小数算法支持、正则表达式操作、单元测试等各类模块。Python标准库命名接口清晰、文档良好,很容易学习和使用。
  • Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能无所不包,覆盖科学计算、Web开发、数据库接口、图形系统多个领域,并且大多成熟而稳定。第三方模块可以使用Python或者C语言编写。截止2018年3月, Python官方第三方资源库Python Package Index (PyPI)已收录超过13万项各类功能包。

与R语言的比较

  • 共同点R语言与Python是数据分析领域中最流行的两个编程语言,他们都是免费的、都有活跃的社区支持,以及都提供开源的工具和库;
  • 应用场景:R语言的优势在于统计和图形模型,因此它更多的被学者、数据科学家和统计人员所采用;而Python更注重生产力和代码可读性,作为一种通用语言,Python拥有相对R语言更为广泛的应用领域,如Web开发、机器学习、智能控制等,因而在具有软件工程背景的数据科学工作者、开发者、工程师和程序员中更受欢迎;
  • 学习曲线:Python的用户学习曲线较平缓;而R语言对初学者来说,有一个较为陡峭的学习曲线,且R语言在数据分析之外的功能很有限,一些用户库写得较差、运行较为缓慢;

应用

Python灵活且各类爬虫库、数据分析库、数据可视化库较为丰富,很适合用于做数据抓取的主体架构,并基于这些数据做分析及可视化[2],可将互联网上越来越丰富的数据为各种类型的城市规划与研究所用。

网络数据抓取

  • 交通:抓取12306火车、机票网站数据;搭建各个机场的实时流量图;
  • 财经:抓取雪球及各类财经网站数据;
  • 住宅:抓取58、搜房、链家等房屋租售数据;
  • 自然资源:抓取天气数据,环境质量(PM2.5)数据;
  • 地点舆情:抓取新浪微博的用户发言及舆论数据;
  • 科技行业:抓取各应用商店的App的下载量及评论数据;追踪各门类App下载量热点,热点行业走势;
  • 服务行业:抓取大众点评及美团网的餐饮及各类线下门店消费及评价情况;绘制城市早晚高峰时段(某类)人群出行的热点图;

数据分析

上手

网络爬取

Python3.x的标准库urllib,将Python2.x的标准库urllib,urllib2功能进行了整合,提供网络爬取的相关功能。一个简单的抓取基本操作如下:

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()

数据分析

基本操作流程

操作流程 步骤说明 常用命令/库.函数
数据导入/导出 读写csv、Excel等格式文件;
连接、读写、查询MySQL数据库;
pandas.read_csv("路径文件名或文件网址")、pandas.read_excel("路径文件名或文件网址")、to_csv('文件名', encoding='utf-8', index=False);
MySQLdb.connect(host='服务器URL', port=端口号,user='用户名', passwd='密码', db='数据库名称')、pandas.read_sql('SQL语句', con=连接变量);
提取和筛选需要的数据 -- --
统计描述 -- --
数据处理 转置;
排序;
处理缺失值;
数据分组;
值替换;
dataframe.T;
dataframe.sort_values(by='字段名’);
dataframe['字段名'].fillna(缺失替换值);
df.groupby('字段名');
data.replace(查找值,替换值);
统计分析 t检验;
方差分析;
卡方检验;
计数统计;
回归分析;
--
可视化 -- --

常见相关库

名称 功能概述
numpy python科学计算的基础包;numpy提供了快速高效的多维数组对象ndarray、对数组执行元素级计算以及直接对数组执行数学运算的函数、读写硬盘上基于数组的数据集的工具,线性代数运算、傅里叶变换、随机数生成功能,以及将C、C++、Fortran代码集成到python的工具;
pandas 提供了能够快速便捷处理结构化数据的大量数据结构和函数;pandas兼具numpy高性能的数组计算功能以及电子表格和关系型数据(如SQL)灵活的数据处理能力,提供了复杂精细的索引功能,以便更为便捷地完成重塑、切片和切块、聚合以及选取数据子集等操作;
MySQLdb 提供MySQL数据库连接等功能的Python库;
xlrd 提供读取Excel文件功能的Python库;
matplotlib 最为流行的数据图表绘制Python库;
scipy 一组专门解决科学计算中各种标准问题域的包的集合;
statsmodels 用于统计分析各类模型的模型集合;(Github页面
scikit-learn 一些用于数据挖掘与分析的,简单、高效的工具集(官方网站

参考

参考资料

外部链接