Python
来自Wiki.Citydatum
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 | 一些用于数据挖掘与分析的,简单、高效的工具集(官方网站) |