前言
为什么要写这本书
随着商业竞争形势的日益严峻,企业需要不断寻找提高利润率、降低成本、提高产出价值的有效方法,而数据化运营恰好是满足企业这一需求的关键武器。数据化运营包含了运营和数据两种要素,前者需要较多的业务经验,而后者对数据分析提出了更高的要求。只有把二者结合起来,在技能、经验和技术的支持下,数据化运营才能在企业内部真正落地、生根、发芽。
对数据化运营而言,各企业普遍关注的结构化数据分析、挖掘的场景非常丰富,例如销售预测、会员生命周期维护、商品结构分析等,这些普遍的共同认知为本书提供了接地气的基础。但除了这些“传统内容”外,还有很多非结构化的数据主题,它们在数据化运营过程中的作用越来越重要,例如主题挖掘、图片分析、文本挖掘、图像识别、语音识别等,这些内容拓展了数据化运营发挥价值的场景基础。
Python作为数据工作领域的关键武器之一,具有开源、多场景应用、快速上手、完善的生态和服务体系等特征,这些特征使其在数据分析与数据化运营的任何场景中都能游刃有余;即使在其为数不多的短板功能上,Python仍然可以基于“胶水”的特征,引入对应的第三方工具、库、程序等来实现全场景、全应用的覆盖。在海量数据背景下,Python对超大数据规模的支持性能、数据分析处理能力、建模的专业程度及开发便捷性的综合能力方面要远远高于其他工具。因此,Python几乎是数据化运营工作的不二之选。
纵观整个国内技术书籍市场,有关Python的书籍不少,但普遍都是基于工具层面的介绍,且侧重于工具本身的方法、参数、调用、实例,与真正实践结合的较少;而有关数据化运营的书籍,目前市场上还为数不多,现有的数据化运营方面的书籍大多是基于Excel等工具的入门级别的分析类书籍。因此,本书结合Python和数据化运营两个方面,在数据分析工作流程和数据化运营主题结合的基础上,通过指标、模型、方法、案例配合工具的形式,详细介绍了如何使用Python来支持数据化运营,尤其是传统工具无法满足的应用场景。
本书第1版上市后,得到来自各行各业很多好友和读者的支持和反馈,在此致以感谢!第2版在第1版基础上做了很多优化甚至重写,还新增了很多内容。
优化以及重写的内容
❑ 全部代码基于Python 3做优化或重写,书中的Python版本是Python 3.7。
❑ 基于Jupyter做调试、分析和应用,更适合数据分析师的应用场景,包括探索性分析、数据预处理、结果可视化展示、交互式演示等。
❑ 网页数据解析中基于Class做功能封装和处理,便于以网页对象为主体的数据工作。
❑ PIL/Pollow的替换和方法应用介绍,多用于图像处理工作。
❑ 第4章数据挖掘的案例部分,每一个案例都经过重写,并增加了很多知识点,以实际案例为需求,实际应用数据挖掘算法做建模和分析应用。
❑ Matplotlib调用3D图形展示多个维度的信息,并可通过拖曳展示不同角度下数据的分布情况。
❑ 第5章第1个案例是RFM代码的重构,以及针对不同分组的精细化运营策略的制定。
❑ 第5章第2个案例是基于嵌套Pipeline和FeatureUnion复合数据工作流的营销响应预测,并基于复合(两层管道)的Pipeline做数据工作流管理。
❑ 第6章第2个案例是基于集成算法GBDT和RandomForest的投票组合模型的异常检测,GBDT和RandomForest是两个典型的代表模型“准确度”和“稳定度”的算法,这种兼顾“准”和“稳”的模型搭配更符合实际需求。
❑ 第7章基于自动节点树的数据异常原因来下探分析树形图的内容和可视化,优化了代码和样式,可视化效果更好,并能获得更多信息,包括维度分解过程、主因子、其他因子和潜在因子等。
新增的内容
❑ 基于Anaconda的Python环境的安装和配置,更方便初学者快速搭建Python应用环境。
❑ Jupyter基础工具的用法,包括安装、启动、基础操作、魔术命令、新内核安装和使用、执行shell命令、扩展和插件使用、系统基础配置等。
❑ 基于Pandas的get_dummies做标志转换,即OneHotEncode转换。
❑ 特征选择的降维中新增feature_selection配合SelectPercentile、VarianceThreshold、RFE、SelectFromModel做特征选择。
❑ 特征转换的降维中新增PCA、LDA、FA、ICA这几个数据转换和降维的具体方法。
❑ 特征组合的降维中新增基于GBDT、PolynomialFeatures、gplearn的genetic方法做组合特征。
❑ 第4章的分类算法中新增使用XGboost做分类应用,以及配合graphviz输出矢量图形。
❑ pyecharts的数据可视化的应用和操作,尤其是关联关系图的应用。
❑ Python通过rpy2调用R程序,实现关联算法的挖掘,包括直接执行程序文件、代码段、变量使用等。
❑ Python通过rpy2调用auto.airma实现自动ARIMA的应用,降低Python在时间序列算法应用时的门槛。
❑ 自动化学习:增加了对于自动化数据挖掘与机器学习的理论、流程、知识和应用库介绍,并基于TPOT做自动化回归和分类学习案例演示。
我希望能尽自己的微薄之力,将过往所学、所感、所知提炼出来供更多人了解。如果读者能从本书中感悟一二,我将倍感欣慰;如果读者能将其用于工作实践,这将是本书以及数据工作之福!
读者对象
本书旨在提供有关数据与运营的综合知识的介绍和应用,虽然基础工具是Python,但本书并没有就Python基础规则和语法做详细介绍,因此希望读者具有一定的Python基础。相信我,只要你认真看过Python教学视频(网络上有很多),只需大概2个小时就能具备这种基础。
本书对读者的知识背景没有特定要求,书中的内容都尽量言简意赅、深入浅出。本书适合以下几类读者阅读:
❑ 企业运营人员。本书的核心命题就是运营,其中涉及会员运营、商品运营、流量运营和内容运营四大主题,无论运营人员希望获得运营知识,还是希望获得数据分析和挖掘方法,都可以从书中找到。
❑ 数据分析师。毫无疑问,数据分析师是本书的核心受众群体之一,书中介绍的数据抽取、预处理和分析挖掘经验一定能为数据分析师带来很多“不一样”的收获,每个运营主题下的小技巧、模型和案例更能激发数据分析师的灵感——原来数据工作还能这样做。
❑ Python工程师。坦白讲,本书不是一本专门介绍Python语法、规则的书籍。但Python作为一种“万能”工具,在数据分析和挖掘领域具有举足轻重的地位,对于任何一位工作领域中涉及数据(或大数据)的Python工程师来说,本书的价值会成倍增长。书中对Python数据处理、计算和挖掘库的应用介绍,以及对有关工具库的用法、注意点和小知识的介绍一定会使Python工程师的工作和能力更上一层楼。
❑ 数据挖掘工程师。数据分析与挖掘在实际运营中都是不分家的,本书没有冠以“挖掘”之名,但并不意味着没有挖掘(或机器学习)算法。本书第4章基本都是围绕常用算法展开的知识介绍,其中各个算法类的“大坑”都是笔者多年经验的总结;在运营主题的案例中几乎都用到了算法来解决实际问题。除了基本的数据挖掘以外,本书还涉及自然语言处理、日志处理、文本挖掘、图像处理等相关知识。
如何阅读本书
本书内容从逻辑上共分为两大部分,第一部分是有关数据分析类的主题,第二部分是有关数据化运营的主题。
第一部分包括第1~4章和附录,主要介绍了Python和数据化运营的基本知识、数据来源获取、数据预处理,以及数据分析和挖掘的关键经验。其中:
❑ 第1章是Python和数据化运营的基本知识介绍。
❑ 第2章对传统的结构化和非结构化数据来源及获取、读取和解析进行了介绍,包括数据文件、数据库、API、流式数据、外部公开数据等,也提到了如何读取网页、文本、图片、视频、语音等类型的数据。
❑ 第3章总结了10个有关数据化运营过程的数据预处理经验,涵盖了常见的数据清洗、标志转换、数据降维、样本不均衡、数据源冲突、抽样、共线性、相关性分析、数据标准化、数据离散化等内容,并在扩展内容中简单介绍了有关网页、日志、图像、自然语言的文本预处理工作,作为拓展知识阅读。
❑ 第4章总结了数据分析、挖掘和网站分析方法的8个主题类,内容涵盖聚类、回归、分类、关联、异常检测、时间序列、路径分析、漏斗分析、归因分析、热力图分析及其他统计分析相关话题,各个类别中都以关键经验为基础,围绕应用误区、注意事项和应用方法展开详细介绍。
第二部分包括第5~9章,分别介绍了会员运营、商品运营、流量运营和内容运营四大主题,以及提升数据化运营价值的方法。在每个数据化运营主题中都包含了基本知识、关键指标、应用场景、数据分析模型、数据分析小技巧、数据分析“大实话”及两个应用案例。
❑ 基本知识:有关运营主题的基本内涵、价值、用途等方面的介绍。
❑ 关键指标:运营主题的主要评估和矩阵指标,按类别拆分和归纳。
❑ 应用场景:总结数据对于运营的价值落地在哪些场景中。
❑ 数据分析模型:“大型”的数据分析方法,包括统计分析、数据挖掘、网站分析、数学模型。
❑ 数据分析小技巧:“小型”的数据分析方法,看起来相对简单但非常有效。
❑ 数据分析“大实话”:有关运营或数据分析的潜在规律的解释及介绍。
❑ 应用案例:每个运营主题都包含两个应用案例,基本上每个案例的应用算法和技巧都不相同,目的是呈现不同算法在不同场景下的差异化应用。
除了以上内容外,以下信息是对本书中涉及特定内容的解释和说明。
渐进式的内容:本书的Python代码和实现部分,在不同章节可能会具有不同的代码风格,包括定义规则、注释、功能实现等,这是因为笔者试图遵循循序渐进的原则,先介绍功能实现,然后再介绍其他的备选方案,以及规范、原则等来辅助Python的实现。这样做一方面是希望尽量多地展示解决同一类问题的不同方法,让读者能根据自身实际情况选择最“合适”的用法示例;另一方面是因为,考虑到可能有很多读者不具备较强的Python基础知识,笔者不希望一上来就让这些读者感觉到使用Python会受到各种“条条框框”的限制,从而打击他们使用Python的信心,毕竟,能实现功能需求是第一位的。
内容延伸:本书第1~4章都有内容延伸章节,其内容是有关非结构化主题的读取、分析、处理。由于每个主题展开来都能写成一本书,因此仅在内容延伸中抛砖引玉,有兴趣的读者可以了解和学习。
相关知识点:本书很多章节中都有“相关知识点”部分,其内容是关于特定工具、知识、算法、库等方面的较为详细的介绍,充当了本书的知识堡垒。
本章小结:每章的结尾都有“本章小结”,在小结中包含4部分内容。
❑ 内容小结:有关本章内容的总结。
❑ 重点知识:本章需要读者重点掌握的知识和内容。
❑ 外部参考:本章提到但是无法详细介绍的内容,有兴趣的读者可以基于外部参考构建自己的知识图谱。
❑ 应用实践:基于本章内容给出在实践中落地的建议。
提示:对于知识点的重要提示和应用技巧,相对“相关知识点”而言,每条提示信息内容量较少,一般都是经验类的总结。
注意:特定知识需要引起注意的点,这些注意点是应用过程中需要避免的“大坑”。
特定名词的混用:本书提到了库和包、模型和算法等词,虽然有含义差异,但书中并没有划清它们的界限,因此在很多时候它们都是等价的。
关于附录的使用方法:除了第9章外(该章节没有代码),本书的每一章都有对应源数据和完整代码,该内容可在本书附件中找到,附件可以在华章网站(http://www.hzbook.com)或者笔者网站——数据常青藤(http://www.dataivy.cn/book/python_book_v2.zip)下载。需要注意的是,为了让读者更好地了解每行代码的含义,笔者在注释信息中都使用了中文标注,每个程序文件的编码格式都是UTF-8。
勘误和支持
由于笔者水平有限,加之撰写时间也有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。读者可通过以下途径联系并反馈建议或意见:
❑ 微信沟通:本书已建立讨论群,读者可先添加笔者个人微信(TonySong2013),后续笔者会将读者加入本书的讨论群中。
❑ 网站讨论区:在笔者网站——数据常青藤的书籍讨论区(http://www.dataivy.cn/python-data-analysis-and-data-operations/)留言。
❑ 电子邮箱:发送E-mail到517699029@qq.com。
致谢
在本书撰写过程中,得到了来自多方的指导、帮助和支持。
首先,感谢彭亮先生和史研先生。彭亮先生使我感受到什么是高度和专注,并促使我的数据工作从真正意义上步入正途。史研先生对于大数据的广博认知和敏锐洞察力,让我有更多机会深入到不同的数据分支,去探索未曾了解的领域。
其次,感谢机械工业出版社华章分社第二事业部的杨福川老师,杨老师在我出版了两本书之后鼓励我继续撰写本书,并为本书的撰写提供了方向和思路指导。另外,感谢全程参与审核、校验等工作的李艺老师及其他背后默默支持的出版工作者,他们的辛勤付出保证了本书的顺利面世。
再次,感谢在各个数据项目和工作中提供支持的领导、朋友、伙伴,尤其是田学锋,他是我的良师益友,他有着非比寻常的视野、胸怀和独到的见解,在我的人生道路上给予了我非常多的指导和启迪。还要感谢跟我一起工作的小伙伴(排名不分先后):庞程程、徐子东、赵光娟、王成、吕兆星、郑传峰、杨晓鹏、陈骏、江涛、曹佳佳、麻建昕、史晓春、杨勇等。
最后,感谢我的父母、家人和朋友,尤其是我的夫人姜丽女士,是她在我写书的这段期间把家里的一切料理得井井有条,使得我有精力完成本书的全部撰写工作。
谨以此书献给热爱数据工作并为之奋斗的朋友们,愿大家身体健康、生活美满、事业有成!
宋天龙(Tony Song)