Travel Tips
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
第一章、Python和数据化运营二
Python 用于数据化运营,将充分利用 Python 的强大功能和效率来满足数据化运营的复杂需求。
·Python 可以将数据化运营过程中的来源于企业内外部的海量、多类型、异构、多数据源的数据有效整合到一起,提供丰富的集成、开发、分析、建模和部署应用。
·Python 高效的开发效率能帮助数据化运营在最短的时间内进行概念验证,并提供科学的预测结果,为数据化运营的快速和准确提供基础。
·Python 可以将数据工作流程和 IT 工作流程无缝对接,有利于实现数据工作跟运营工作的融合,这也是数据驱动式数据化运营的工作方法,有利于真正实现数字化、智能化的运营工作。
Python 第三方库包括交互开发库、科学计算库、机器学习库、自然语言库、数据库连接库、图像处理库、网络爬虫库、图像展示库等。对于 Python 第三方库的安装,除了使用 setup 命令外,大多数都可以通过 pip 和 easy_install 命令安装。推荐使用 pip 进行本地或在线安装,
( 1 )使用 setup 命令从源码安装
每个第三方库都有一个源码文件压缩包,格式为 .tar.gz 或 .zip ,例如pandas-0.19.2.tar.gz 、 numpy-1.12.1.zip 。将压缩包从 pypi (或其他官方资源)中下载到要安装的服务器或本机并解压(这些步骤都非常简单),然后在系统终端的命令行窗口执行 setup 命令即可。以 “pandas-0.19.2.tar.gz” 文件为例说明整个过程:
1 )下载源码压缩包文件:不同的系统下载方法不同,最简单的方法是直接打开 https://pypi.python.org/pypi/pandas/0.19.2 并下载名为 “pandas-0.19.2.tar.gz” 的文件到本地,然后使用客户端工具复制到服务器。
2 )解压文件:打开系统终端的命令行窗口,进入该文件的下载路径(或拷贝路径)并解压,执行如下命令:cd [ 压缩包文件路径 ]tar -zxvf pandas-0.19.2.tar.gz [ 解压后的路径 ]上述命令执行后,会在制定的 [ 解压后的路径 ] 中解压当前压缩包的内容。
3 )执行 setup 命令:在系统终端的命令行窗口中,进入解压后包含setup.py 的路径(通常是 [ 解压后的路径 ]/pandas-0.19.2 ),执如下命令:
cd [ 解压后的包含了 setup.py 的路径 ] python setup.py install
上述代码会默认执行完成,如果环境配置正确会有提示安装成功。
离线安装第三方库 / 包时,不同的库 / 包可能存在依赖关系,如果在安装之前没有安装和配置好相应的包,那么可能报错。例如安装statsmodels 0.8 时,依赖 Python≥2.6 、 Numpy≥1.6 、 Scipy≥0.11 、Pandas≥0.12 、 Patsy≥0.2.1 等,因此大多数情况下,不建议手动离线安装。
( 2 )使用 pip 命令从 whl 文件安装
使用 pip 安装 Python 第三方库更加简单,只需先将符合要安装库的系统环境的 whl 文件下载到服务器或本地,然后在系统终端的命令行窗口输入命令 pip install[PackageName.whl] 即可。仍然以上述 Pandas 安装为例说明整个过程。
1 )下载 whl 文件:不同的系统所需要的 whl 文件不同,这需根据实际系统版本和 Python 程序版本而定。以笔者的 Windows 环境下 32 位的Python 2 版本为例,笔者在 https://pypi.python.org/pypi/pandas/0.19.2 处载名为 “pandas-0.19.2-cp27-cp27m-win32.whl”的文件到本地。
2 )安装 whl 文件:在系统终端的命令行窗口中进入下载路径(笔者路径为桌面),执行如下命令:
cd C:\Users\Administrator\Desktop pip install pandas-0.19.2-cp27-cp27m-win32.whl
命令执行完成之后,也会提示安装成功。使用 pip 命令安装包时,需要在系统终端的命令行窗口而非Python 或 IPython 工作界面中执相应命令。进入 Windows 终端的命令行窗口的方法是使组合件 Win+R ,然后在弹出的窗口中输入 “cmd” ,最后点击 “ 确定 ” 按钮。
3 )使用 pip 进行在线安装:大多数情况下,都建议采用 pip 进行在线安装,通过 pip 在线安装可以解决不同包之间的依赖关系(自动下载依赖包)。
在线安装的方法非常简单,只需在系统终端打开命令行窗口,然后输入如下命令:
pip install [PackageName]
以上述 Pandas 安装为例,在联网的前提下,只需直接在系统终端命令行输入 “pip install pandas” 即可完成安装。pip 本身是一个非常强大的第三方库 / 包管理工具,包括下载、安装、升级、卸载、搜索、查看过期和版本等功能。有关 pip 的更多信息,可查阅https://pip.pypa.io/en/stable/ 。
IPython 是一个基于 Python 的交互式 shell ,比默认的 Python shell 好用得多,支持变量自动补全、自动缩进、交互式帮助、魔法命令、系统命令等,内置了许多很有用的功能和函数。在本书所说 Python 第三方库中,若无特殊说明,默认使用 IPython 作为交互和测试工具。IPython 的安装可直接在系统终端的命令行窗口使用 pip installipython 完成。安装成功之后,进入系统终端命令行窗口,输入 ipython ,回车后进入交互开发界面,
Numpy ( Numeric Python )是 Python 科学计算的基础工具包,它提供的功能包括:
· 快速高效的多维数组 ndarray ,大多数 Python 的多维数据组都是基于 Numpy 进行处理的。
· 基于数组整体或元素级别进行科学计算的能力,需要迭代循环。
· 比较成熟的(广播)函数库。
· 用于整合 C 、 C++ 和 Fortran 代码到 Python 的工具包。
· 实用的线性代数、傅里叶变换和随机数生成函数。
·Numpy 和稀疏矩阵运算包 Scipy 配合使用更加方便。
· 多种库和算法间进行数据交互的 “ 数据容器 ” ,由低级语言(例如C )编写的库可直接读取 Numpy 的数据而不必经过转换。
有关 Numpy 更多信息,请查阅 http://www.numpy.org/ 。
Scipy ( Scientific Computing Tools for Python )是一组专门解决科学和工程计算不同场景的主题工具包,主要功能包括:
· 数值积分和微分方程求解器。
· 扩展了有 numpy.linal 的线性代数历程和矩阵分解功能。
· 函数优化器(最小化器)以及根查找方法。
· 信号处理工具。
· 系数矩阵和系数线性系统求解器。
有关 Scipy 的更多信息,请查阅 https://www.scipy.org/install.html 。
Pandas ( Python Data Analysis Library )是一个用于 Python 数据分析的库,它的主要作用是进行数据分析。 Pandas 提供用于进行结构化数据分析的二维表格型数据结构 DataFrame ,类似于 R 中的数据框,能提供类似数据库中的切片、切块、聚合、选择子集等精细化操作,为数据分析提供了便捷。另外, Pandas 还提供了时间序列功能,用于金融行业的数据分析。
Pandas 的安装直接使用 pip install pandas 命令即可。安装成功之后,在 IPython 中输入 import pandas 时,若不报错则说明该库已经成功安装并导入。
有关 Pandas 的更多信息,具体查阅 http://pandas.pydata.org/ 。
Statsmodels 是 Python 统计建模和计量经济学的工具包,包括一些描述性统计、统计模型估计和统计测试,集成了多种线性回归模型、广义线性回归模型、离散数据分布模型、时间序列分析模型、非参数估计、生存分析、主成分分析、核密度估计以及广泛的统计测试和绘图等功能。
有关 Statsmodels 的更多信息,具体查阅 http://statsmodels.sourceforge.net/index.html 。
scikit-learn (又称 Sklearn )是一个基于 Python 的机器学习综合库,内置监督式学习和非监督式学习两类机器学习方法,包括各种回归、 K近邻、贝叶斯、决策树、混合高斯模型、聚类、分类、流式学习、人工神经网络、集成方法等主流算法,同时支持预置数据集、数据预处理、模型选择和评估等方法,是一个非常完整的机器学习工具库。 scikit-learn 是 Python 数据挖掘和机器学习的主要库之一。scikit-learn 缺少了某些常用算法,例如关联规则算法、时间序列算法等。不过结合 Pandas 和 Statsmodels 可以实现时间序列算法。关联规则相对简单, pipy 上也有很多开源库,当然如果你动手能力强,使
用 Python 自行编写难度也不大
有关 scikit-learn 的更多信息,具体查阅 http://scikit-learn.org/stable/index.html 。
在安装 scikit-learn 之前一定要确保 Numpy (含 mkl )、Scipy 、 Matplotlib 按顺序安装,这样才能保证不同库的依赖关系正确建立,否则可能会导致 scikit-learn 安装或导入报错。
由于 NLTK 本身不支持中文分词,因此在针对中文的处理过程中,我们会引入其他分词工具,例如结巴分词。结巴分词是国内的 Python 文本处理工具包,分词模式分为三种:精确模式、全模式和搜索引擎模式。结巴分词支持繁体分词、自定义词典等,是非常好的 Python 中文分词解决方案,可以实现分词、词典管理、关键字抽取、词性标注等。
有关结巴分词的更多信息,具体查阅 https://github.com/fxsjy/jieba/ 。
Gensim 是一个专业的主题模型(主题模型发掘文字中隐含主题的一种统计建模方法) Python 工具包,用来提供可扩展统计语义、分析纯文本语义结构以及检索语义上类似的文档等功能。
具体查阅 http://radimrehurek.com/gensim/ 。
数据库存储是企业数据存储的基本方式,数据库类型包括MySQL 、 Oracle 、 SQL Server 、 DB2 、 Sybase 等,基于大数据场景下还
会包括 Hive 、 HBase 、 MongoDB 、 Redis 等的数据存储。
网络是企业重要的外部数据来源,因此获取和处理 HTML 的信息是Python 数据接入和处理的重要能力。Beautiful Soup 是网页数据解析和格式化处理工具,它严格意义上来讲不是一个纯抓取类的工具,因为它不具备抓取能力,通常配合 Python的 urllib 、 urllib2 等库一起使用。
图形展示是数据可视化的必要内容,在 Python 中,通常使用Matplotlib 实现图形展示。Matplotlib 是 Python 的 2D 绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,开发者可以仅需要几行代码,便可以生成绘图、直方图、功率谱、条形图、错误图、散点图等。
图像处理提供针对视频和图像数据的输入、分析、处理和挖掘等功能, Python 最常用的图像和视频处理库是 PIL 和 OpenCV 。
PIL ( Python Imaging Library )是一个常用的图像输入、处理和分析库,提供了多种数据处理、变换的操作方法和属性。
有关 PIL 的更多信息,具体查阅 http://www.pythonware.com/products/pil/ 。
OpenCV 是一个强大的图像和视频工作库。它提供了 Python 、 C 、C++ 和 Java 接口,支持 Windows 、 Linux 、 Mac OS 、 iOS 和 Android 。OpenCV 的设计效率很高,它以优化的 C/C++ 编写,库可以利用多核处理。除了对图像进行基本处理外,还支持图像数据建模,并预制了多种
图像识别引擎。
案例场景:每个销售型公司都有一定的促销费用,促销费用可以带
来销售量的显著提升;当给出一定的促销费用时,预计会带来多大的商
品销售量?
· 来源:生成的模拟数据,非真实数据。
· 用途:用来做第一个销售预测案例。
· 维度数量: 1 。
· 记录数: 100 。
· 字段变量:第一列是促销费用,第二列是商品销售量。
· 数据类型:全部是浮点数值型。
· 是否有缺失值:否。
本案例中,我们会使用四个库:
·Re :正则表达式,程序中通过该库来实现字符串分割。
·Numpy :数组操作和处理库,程序中用来做格式转换和预处理。
·Sklearn :算法模型库,程序中使用了线性回归方法 linear_model 。
·Matplotlib :图形展示库,用来在建模前做多个字段关系分析。
代码如下:
import re import numpy from sklearn import linear_model from matplotlib import pyplot as plt
Python 导入库有两种方式:
· 导入直接导入库,方法是 import[ 库名 ] ,例如 import numpy ;对于某些名称比较长的库,我们会使用 as 方法为其取个别名以方便后续使用,例如 import numpy as np 。
· 导入库中的指定函数,方法是 from[ 库名 ]import[ 函数名 ] ,例如from sklearn import linear_model ;这种情况下也可以使用 as 其取个别名方便后续使用,例如 from matplotlib import pyplot as plt 。
本案例中的数据存于 txt 格式文件中,我们使用 Python 默认的读取文件的方法。代码如下:
fn = open('data.txt','r') all_data = fn.readlines() fn.close()
不仅是文件对象,包括数据库游标、数据库连接等资源,在使用完成后都需要及时关闭,这样能减少对资源的无效占用。同时,这还能防止当其他功能模块对该对象进行重命名、删除、移动等操作时,不会由于文件对象的占用而报错。
在本阶段,主要实现对读取的列表数据进行清洗转换,以满足数据分析展示和数据建模的需要。代码如下:
x = [] y = [] for single_data in all_data: tmp_data = re.split('\t|\n',single_data) x.append(float(tmp_data[0])) y.append(float(tmp_data[1])) x = numpy.array(x).reshape([100,1]) y = numpy.array(y).reshape([100,1])
第四步 数据分析。
到现在止我们已经拥有了格式化的数据,但这两列数据集到底应该使用哪种模型还未可知。因此先通过散点图来观察一下。代码如下:
plt.scatter(x,y) plt.show()
代码 plt.scatter ( x , y )的意思是用一个散点图来展示 x 和 y ,plt.show ()的作用是展示图形。
通过散点图发现, x 和 y 的关系呈现明显的线性关系:当 x 增大时, y增大;当 x 减小时, y 减小。初步判断可以选择线性回归进行模型拟合。
建模阶段我们使用 Sklearn 中的线性回归模块实现,代码如下:
model = linear_model.LinearRegression() model.fit(x, y)
模型已经创建完成,本阶段进行模型拟合的校验和评估,代码如下:
model_coef = model.coef_ model_intercept = model.intercept_ r2 = model.score(x,y)
通过上述步骤我们可以获得线性回归方程y=model_coef*x+model_inter-cept ,即y=2.09463661*x+13175.36904199 。该回归方程的决定系数 R 的平方是0.78764146847589545 ,整体拟合效果不错。
我们已经拥有了一个可以预测的模型,现在我们给定促销费用( x )为 84610 ,销售预测代码如下:
new_x = 84610 pre_y = model.predict([[new_x]]) print (pre_y)
代码执行后,会输出 [[190402.57234225]] ,这就是预测的销售量。为了符合实际销量必须是整数的特点,后续可以对该数据做四舍五入,使 round ( pre_y )获得预测的整数销量。案例场景虽然简单,但完整地演示了如何从输入数据到输出结果的整个过程,其中,我们用到了以下基础知识:
·Python 文件的读取;
·Python 基本操作:列表操作(新建、追加)、 for 循环、变量赋值、字符串分割、数值转换;
·Numpy 数组操作:列表转数组、重新设置数组形状;
· 使用 Matplotlib 进行散点图展示;
· 使用 Sklearn 进行线性回归的训练和预测;
· 用 print 输出指定数据。
Sed ac lorem felis. Ut in odio lorem. Quisque magna dui, maximus ut commodo sed, vestibulum ac nibh. Aenean a tortor in sem tempus auctor
December 4, 2020 at 3:12 pm
Sed ac lorem felis. Ut in odio lorem. Quisque magna dui, maximus ut commodo sed, vestibulum ac nibh. Aenean a tortor in sem tempus auctor
December 4, 2020 at 3:12 pm
Donec in ullamcorper quam. Aenean vel nibh eu magna gravida fermentum. Praesent eget nisi pulvinar, sollicitudin eros vitae, tristique odio.
December 4, 2020 at 3:12 pm
我是 s enim interduante quis metus. Duis porta ornare nulla ut bibendum
Rosie
6 minutes ago