《Python数据分析与数据化运营》新书上线

2018-1-11更新:

1. 常见问题汇总。关于本书中很多读者会有一些知识点和应用上的疑问,我特地新开了一篇文章“《Python数据分析与数据化运营》常见问题”来汇总这些问题。里面会涉及到各种疑问或混淆知识点,希望能给大家解惑。如果大家有什么疑问,可以直接在那留言,我会将一些跟本书相关的知识性问题总结出来并在此回答。

2.内容勘误。由于本书的作者水平有限并受限于有限的撰稿时间,以及整个出版环节众多可能会出现信息不对称,书中难免会出现一些错误或者不准确的地方,在此陈列出来供读者参考。这些已经发现的“错误”,会在下一次重印或再版时修正,有关修正的部分,会额外做标记,请读者朋友留意。具体请查看“《Python数据分析与数据化运营》勘误

写在正式内容之前

《Python数据分析与数据化运营》是我的第三本书,前两本分别是《网站数据挖掘与分析》、《企业大数据系统构建实战》(合著)。

python数据分析与数据化运营

坦白讲,写这本书蛮有压力,原因有三:

  1. 在之前的两本书基础上,很多读者已经具有了一定的认知基础和期望,如果写的水平跟之前相同甚至不如之前,会给读者感觉没有什么更进一步的东西。
  2. 我自身对于内容的定位并不想纯粹的讲技术、原理和代码,而是把我这些年的认知争取都系统性的归纳和总结起来,形成一个知识体系,这种知识体系在目前的市面上是没有直接的参考材料可依的,是纯经验式的总结和提炼(当然这也构成了这本书的核心竞争力的关键因素之一)。
  3. 对于数据化运营而言,这是一个非常大的话题,而且不同行业、企业对于运营的定义和范畴大相径庭,这无疑增加了归纳知识体系性和完整性的难度。

但幸运的是,在出版社老师以及众多领导和朋友的支持、帮助下,我完成了大纲以及各章节内容,并且几乎已经将我的“知识底细”毫无保留的呈现出来,感觉“身体被掏空”。在完成本书之后,我在回顾内容时发现自己也学到了很多新的东西,这种东西以往都埋没在日常忙碌的间隙,只有在总结和回顾时才有更深的体会和更新的理解。

对次数而言,首先我要跟各位朋友道歉,因为在写作过程中,虽然我尽量言简意赅,但内容仍然大大超出当初的计划,达到了541页,对应的价格也相对市场主流的价格较高,目前7折左右应该是在70的样子。但是,相信我,这本书凝聚了我的大量心血,这个定价对得起它的价值!原因有二:

  1. 本书中的系统性的经验,是在之前任何一本书中都不曾有过的,而且都是我10年的积累所得。里面很多思想都是突破传统的认知,争取从新的角度去解析。由于京东、当当等有关书籍的目录太过于粗放,我在下面会放出更详细的目录,大家可以自己下载《Python数据分析与数据化运营》目录提示:该目录是基于我的终稿生成的,是未排版设计之前我这边的版本,而非出版社排版后的版本。但没有关系,目录和内容都是对应的。
  2. 对于数据工作层面,除了完整的数据工作流的知识和应用外,在分析挖掘时用到的KMeans聚类的自动K均值的确立方法、基于软方法的多分类模型组合评估模型的应用、基于自动下探(下钻、细分)的应用、基于增量学习的多项式贝叶斯分类等都是非常重要且实用的方法,现学现用绝对没问题。除了Python在数据分析和挖掘时用到的sklearn和statsmodels以外,还有下面几个知识点如果你感兴趣的话,同样值得一探究竟:
  • pipeline管道技术的应用
  • 基于超参数的自动参数值的优化方法
  • 特征自动选择
  • 文本分类、文本主题挖掘
  • 基于自动时间序列ARIMA的P、D、Q的调整
  • python决策树规则输出

tree

  • 基于自定义图像的文本标签云

Python数据分析与数据化运营

  • 非结构化数据,例如图像、音频、文本等处理
  • 对象持久化处理

好了,我想说的就是这些,下面进入此书的正式介绍。

为什么要写这本书

随着商业环境的日益严峻,企业需要不断寻找提高利润率、降低成本、提高产出价值的有效方法,而数据化运营恰好是满足企业这一需求的关键武器。数据化运营包含了运营和数据两种要素,前者需要较多的业务经验,而后者则对数据分析提出了更高要求。只有把二者结合起来,在有足够技能、经验和技术的支持下,数据化运营才能在企业内部真正落地、生根、发芽。

对数据化运营而言,各企业普遍关注的结构化数据分析、挖掘的场景非常丰富,例如销售预测、会员生命周期维护、商品结构分析等,这些普遍的共同认知为本书提供了接地气的基础;但除了这些“传统内容”外,还有很多非结构化的数据主题,它们在数据化运营过程中的角色越来越重要,例如主题挖掘、图片分析、文本挖掘、图像识别、语音识别等,这些内容拓展了数据化运营发挥价值的场景基础。

Python作为数据工作领域的关键武器之一,具有开源、多场景应用、快速上手、完善的生态和服务体系等特征,使其在数据分析与数据化运营中的任何场景都能游刃有余;即使是在为数不多的短板上,Python仍然可以基于其“胶水”的特征,引入对应的第三方工具/库/程序等来实现全场景、全应用的覆盖。在海量数据背景下,Python对超大数据规模的支持性能、数据分析处理能力和建模的专业程度以及开发便捷性的综合能力要远远高于其他工具。因此,Python几乎是数据化运营工作的不二之选。

纵观整个国内市场,有关Python的书籍不少,但普遍的思路都是基于工具层面的介绍,而且侧重于工具本身的方法、参数、调用、实例,与真正实践的结合较少;有关数据化运营的书籍,目前市场上还为数不多,现有的数据化运营也大多是基于的Excel等工具的入门级别的分析。本书结合了Python和数据化运营两个方面,在结合了数据分析工作流程和数据化运营主题的基础上,通过指标、模型、方法、案例配合工具的形式,详细介绍了如何使用Python来支持数据化运营,尤其是传统工具无法满足的应用场景。

我希望能尽自己的微薄之力,将过往所学、所感、所知提炼出来供更多人了解。如果读者能感悟一二,我将倍感欣慰;如果读者能将其用于工作实践,这将是本书以及数据工作之福!

读者对象

本书定位于提供有关数据与运营的结合知识的介绍和应用,虽然基础工具是Python,但本书并没有就Python基础规则和语法做详细介绍,因此希望读者具有一定的Python基础。相信我,只要你认真看Python教学视频(网络上很多),只需大概2个小时就能具备这种基础。

本书对读者的知识背景没有特定要求,书中的内容都尽量言简意赅、深入浅出。本书适合以下几类读者阅读:

  • 企业运营人员。本书的核心命题就是运营,其中涉及到会员运营、商品运营、流量运营和内容运营四大主题,无论运营人员希望获得运营知识还是数据分析和挖掘方法,都可以从书中获益。
  • 数据分析师。毫无疑问,数据分析师是本书的核心受众群体之一,本书中介绍的数据抽取、预处理和分析挖掘经验一定能带来很多之前“不一样”的收获,每个运营主题下的小技巧、模型和案例更能激发数据灵感——原来数据工作还能这样做。
  • Python工程师。坦白讲,本书不是一本专门介绍Python语法、规则的书籍。但Python作为一种“万能”工具,在数据分析和挖掘领域具有举足轻重的地位,任何一个Python工程师如果知识领域中包含数据(或大数据),那么其价值会成倍增长。本书中Python数据处理、计算和挖掘库的应用介绍以及有关工具库的介绍、用法、注意点和小知识一定会对Python工程师的工作领域和认知产生新的启迪。
  • 数据挖掘工程师。数据分析与挖掘在实际运营中都是不分家的,本书没有冠以“挖掘”之名但并不意味着没有挖掘(或机器学习)算法,本书第4章基本都是围绕常用算法展开的知识介绍,其中各个算法类的“大坑”都是笔者多年经验的总结;在运营主题中提到的基于超参数优化的Gradient Boosting的预测,基于LogisticRegression、RandomForest、Bagging概率投票组合模型的异常检测,基于自动K值的KMeans果聚类分析,基于潜在狄利克雷分配(LDA)的内容主题挖掘,基于多项式贝叶斯的增量学习的文本分类等都是与“挖掘算法”相关的应用。算法是数据工作的核心组成,其介绍必不可少。

如何阅读本书

本书内容从逻辑上共分为两大部分,第一部分是有关数据分析类的主题,第二部分是有关数据化运营的主题。

第一部分的内容包括1/2/3/4章和附录,主要介绍了Python和数据化运营的基本知识、数据来源获取、数据预处理以及数据分析和挖掘的关键经验。其中:

  • 第2章的数据源包含了传统的结构化和非结构化数据来源及获取,包括数据文件、数据库、API、流式数据、外部公开数据等,也提到了如何读取网页、文本、图片、视频、语音等类型的数据。
  • 第3章的数据预处理总结了常用的11条结构化数据的预处理经验,并介绍了有关网页数据解析、日志解析、图像预处理和自然语言预处理的内容。
  • 第4章的数据分析和挖掘经验总结了8个数据分析、挖掘和网站分析方法的主题类,各个类别中都以关键经验为基础展开详细介绍。

第二部分的内容包括5/6/7/8/9章的内容,分别介绍了会员运营、商品运营、流量运营和内容运营四个大主题以及提升数据化运营价值度的方法。在每个数据化运营主题中都包含了基本知识、评估指标、应用场景、数据分析模型、数据分析小技巧、数据分析大实话以及2个应用案例。

  • 基本知识:有关运营主题的基本内涵、价值、用途等方面的介绍。
  • 评估指标:运营主题的评估指标,按类别拆分和归纳。
  • 应用场景:数据对于运营的价值落地在哪些场景中的总结。
  • 数据分析模型:“大型”的数据分析方法,包括统计分析、数据挖掘、网站分析甚至数学模型。
  • 数据分析小技巧:“小型”的数据分析的方法,看起来相对简单但非常有效。
  • 数据分析大实话:有关运营或数据分析的潜在规律的解释及介绍。
  • 应用案例:每个运营主题都包含2个应用案例,基本上每个案例的应用算法和技巧都不相同,目的是呈现不同算法在不同场景下的差异化应用。

除了以上内容外,以下信息是在本书中涉及特定内容的解释和说明:

渐进式的内容:本书的Python代码和实现部分,在不同章节可能会看到具有不同代码风格的写法,包括定义规则、注释、功能实现等,这是因为笔者试图遵循循序渐进的原则,先介绍功能实现,然后再介绍其他的备选方案以及规范、原则等来辅助于Python实现。这种做法一方面是尽量多的展示解决同一类问题的不同方法,让读者能根据自身实际情况选择最“合适”的用法示例;另一方面,可能有很多读者不具备较强的Python基础知识,因此笔者不希望一上来就让这些读者感觉到要用Python工作会受到各种“条条框框”的限制,这样会大大打击使用Python的信心,毕竟,能实现功能需求是第一要素。

内容延伸:本书第1/2/3/4章都有内容延伸章节,其内容是有关非结构化主题的读取、分析、处理,由于每个主题如果展开来写都能写一本书,因此仅在内容延伸中抛砖引玉,有兴趣的读者可以加以了解和学习。

相关知识点:本书很多章节中都有“相关知识点”内容介绍,其内容是关于特定工具、知识、算法、库等方面的较为详细的介绍,他们充当了本书的知识堡垒。

本章小结:每章的结尾都有“本章小结”,在小结中包含4部分内容:

  • 内容小结:内容小结是有关本章内容的总结
  • 重点知识:重点知识是本章重点需要读者掌握的知识和内容
  • 外部参考:外部参考是本章提到的对应内容但是无法详细介绍的内容,都在外部参考中列出,有兴趣的读者可以基于外部参考构建自己的知识图谱。
  • 应用实践:基于本章内容推荐读者在实践中落地的建议。

提示:对于知识点的重要提示和应用技巧,相对“相关知识点”而言,每条提示信息内容量较少,一般都是经验类的总结。

注意:特定知识需要引起注意的方面,这些注意点是应用过程中需要避免的“大坑”。

特定名词的混用:本书中提到了库和包、模型和算法等词虽然有含义差异,但本书并没有划清他们的界限,因此在很多时候他们都是等价的。

关于附件的使用方法:除了第9章外,本书的每一章都有对应源数据和完整代码,该内容可在本书附件中找到,附件可以在华章网站http://www.hzbook.com、笔者网站http://www.dataivy.cn、百度网盘https://pan.baidu.com/s/1kWPYaSv下载。需要注意的是,为了更好的让读者了解每行代码的含义,笔者在注释信息中都使用了中文标注,每个程序文件的编码格式都是UTF-8。

 

附件简介

附件是一个压缩包,容量大概有106M。解压缩后有9个文件夹,其中:

  • chapter1-chapter8是每个章节里面用到的源数据和程序源代码
  • lib是在第一章提到的各种安装程序、库、包的地址列表以及个别包

 

本书第一版的源代码文件以及数据,由于本书第一版基于Python2实现的,笔者提供Python2版本的原书代码以及对应的Python3代码(注意PILLOW和PYMYSQL库在python2和python3有差异),可通过如方式下载:

Python2版本的原书代码:
链接: https://pan.baidu.com/s/1fTxQcMQjB8ekl74HxrZIXA
提取码:  ik7q

Python3版本的代码:
链接: https://pan.baidu.com/s/1-9oL2vo6RnVfwiFh7MBbYA
提取码:  q84e

 

《《Python数据分析与数据化运营》新书上线》上有24条评论

  1. 您好 书已买 但是下载的代码 无论是华章的链接还是您博客给的地址 下载完了后都报不包含文件或是文件已损坏,如果方便请发我邮箱一份 多谢438343096@qq.com

    1. 你好,我这里(Windows电脑)下载下来的压缩包是可用的。如果不可用,可以从百度网盘下载。如果还是有问题,可以加我微信我直接发压缩包给你。

  2. 已经购买,刚看了下书的目录,并大概翻了下内容,还不错的样子。还没详细看内容,不知道作者里面有没有类似R里面的atuo.arima的实现逻辑?自动寻找最优的P、D、Q的方法。

    1. 你好。感谢支持!
      书籍的“4.6.4 代码实操:Python时间序列分析”就是类似于R的auto.arima的实现方法。里面使用的是BIC最小的原则得到的最优P和Q,而D是在做差分时候已经确定的。

  3. 请问博主,我只有一点点的python基础,大概了解基本的数据定义、if条件、for循环等,能看得懂这本书吗?

    1. 当然。
      为了能够兼顾更多的朋友阅读,我在上面序言里面也写到了,里面的内容都是由浅入深的介绍的,比如第一章的python只是用了一个很简单的例子说明了如何通过python来做数据分析。而且里面的稍微复杂一点的知识点,我都有单独做介绍。对于每个功能的实现我也基本在不同章节里面用不同的方法,这样可以让大家根据自身习惯选择最适合自己的方法。
      所以,只要能看得懂python代码,并且能动手改/写,就可以开始了。

  4. 现在的市面上的人工智能、机器学习、深度学习、神经网络、模式识别、自然语言处理、图像识别等人工智能方面的书籍应该已有很多好书。但大多数停留在理论层面。我是自学人工自能的,理论学了不少,但是心里完全没底。一本有实际商用案例的书籍对我这类人重要性不言而喻。已经让公司已经采购了这本书。我真切希望作者以后能出版深度学习,自然语言处理,图像识别这些用商用案例的书。需要这类书的人群很多。

    1. 首先,感谢支持!
      你说的没错,目前的有关数据方面的书确实理论知识居多。当然这跟这个领域本身有关,因为不懂理论知识对于后续的深入优化和工作都会构成直接障碍。所以了解和学习一些知识,最起码常识性的知识是必要的。
      就目前市场上的书而言,我自己也觉得好书很多,但感觉好书的作者们大都没有(或者说不愿)分享那些宝贵经验,对于技术本身而言,其实门槛并不高,因为技术是死的,课本、参考书上都可以学到,但其中的经验是难能可贵而且一定需要积累才能写出来的,并且这种积累跟历史工作经验和场景直接相关。这也是我写这本书的动机之一,希望能对你有帮助,也希望后续有更多的大牛们分享更多的经验出来。
      关于后续出书写作,这个要看这本书的销量(当然前2本书都是不错,这本书从目前的势头看会比前两本更好),也要看我自身的工作积累,毕竟每个人的经历有限,积累也确实需要时间,如果要写你提到的除了“机器学习”之外的那些课题,那么可能要3-5年。

  5. 首先给博主点个赞,书籍内容非常好,是最近几个月内买的最值的书了。
    但我发现一个问题,想请博主解惑。我买了很多书,但由于各种原因都无法看完,或者有的根本没看,如何才能把书籍的知识最大化转化为工作应用?

    1. 你好,王骏。
      首先感谢支持,有朋友们的认可是我最大的欣慰了。
      对于你提到的书太多的问题,这个问题其实不止困惑于你,也困惑于我。我的感觉是这样的:

          对于书籍而言,买之前要先看目录,从大面上了解书籍的内容,避免买多本书内容重合度较高的情况。
          对于书籍的内容来说,很多书其实可以做为参考书使用(比如本书),如果要认认真真看完一整本书,那么需要相当长的时间。如果精力有限,可以先在了解本书内容的基础上,大体速度一遍;然后在工作中如果遇到相关问题,再去查找相关内容,然后实操体会,这样效果会更好。

      当然,如果是没有太多实践经验和机会的话,那么还是老老实实的跟着书中的例子实践吧。否则只读书,而不实践,那么都是空谈理论,不落地不行。

  6. 宋老师您好,已经拜读了您的大作《Python数据分析与数据化运营》,想请教一下书中提到的方法论在金融领域(资产管理方向)有什么实践吗?感谢!

  7. 在数据分析学习的路上,前前后后看了很多书和视频,但是每本书都很难完全看完,当初从图书馆借到您的这本书时,根本没想到自己能慢慢去看,但当看了一章的后,真的发现这本书跟其他书不一样,里面融入了作者大量的体会与经验,并且对于源码的解释十分详细,就连只学过两小时python基础的前端室友也能看懂一二。

    真心感谢作者的无私分享~

  8. 您好 书中的第一个案例 因为sklearn升级 报错
    ValueError: Expected 2D array, got scalar array instead:
    array=84610.
    Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.

    1. 你好。
      只需将代码做下修改即可,原来的代码是:
      pre_y = model.predict(new_x)

      修改后的代码是:
      pre_y = model.predict(numpy.array(new_x).reshape(-1,1))

  9. 您好,已购买书籍,在学习4.4关联规则的过程中,执行apriori.createData总是提示“AttributeError: module ‘apriori’ has no attribute ‘createDate’”回到您自己定义的apriori中进行查看,发现只有createC1这个函数,而没有createDate

    1. 你好。我的代码可以正常执行,没有出现你的错误。如下是整个执行过程:
      In [13]: cd ..
      D:\[书籍]python数据分析与数据化运营\9_再版\附件

      In [14]: cd chapter4/
      D:\[书籍]python数据分析与数据化运营\9_再版\附件\chapter4

      In [15]: import re # Python标准库^M
      ...: import numpy as np # Python第三方库^M
      ...: import apriori # 自定义库^M
      ...:

      In [16]: data = pd.read_csv('order_table.csv')

      In [17]: order_ids = pd.unique(data['order_id'])^M
      ...: order_records = [data[data['order_id']==each_id]['product_name'].tolis
      ...: t() for each_id in order_ids]^M
      ...:

      In [18]: minS = 0.01 # 定义最小支持度阀值^M
      ...: minC = 0.05 # 定义最小置信度阀值^M
      ...: L, suppData = apriori.apriori(order_records, minSupport=minS) # 计算
      ...: 得到满足最小支持度的规则^M
      ...: rules = apriori.generateRules(order_records, L, suppData, minConf=minC
      ...: ) # 计算满足最小置信度的规则^M
      ...:

      In [19]: model_summary = 'data record: {1} \nassociation rules count: {0}' #
      ...: 展示数据集记录数和满足阀值定义的规则数量^M
      ...: print(model_summary.format(len(rules), len(order_records)),'\n','-'*60
      ...: ) # 使用str.format做格式化输出^M
      ...: rules_all = pd.DataFrame(rules, columns=['item1', 'item2', 'instance',
      ...: 'support', 'confidence', 'lift']) # 创建频繁规则数据框^M
      ...: rules_sort = rules_all.sort_values(['lift'],ascending=False)^M
      ...: rules_sort.head(10)^M
      ...:
      data record: 2240
      association rules count: 582
      ------------------------------------------------------------
      Out[19]:
      item1 ... lift
      346 (whipped/sour cream) ... 4.1168
      347 (berries) ... 4.1168
      498 (pip fruit) ... 4.0772
      499 (tropical fruit) ... 3.9298
      516 (yogurt) ... 3.6719
      575 (curd) ... 3.6307
      547 (root vegetables) ... 3.5972
      546 (yogurt) ... 3.5278
      518 (fruit/vegetable juice) ... 3.3735
      548 (tropical fruit) ... 3.2464

      [10 rows x 6 columns]

      In [20]:

  10. 您好,已购买书籍,在学习4.4关联规则的过程中,执行print(df_lift.sort(‘instance’,ascending=False))时,提示“AttributeError: ‘DataFrame’ object has no attribute ‘sort’”#上网查询后将sort转换为sort_values后,便可正常运行,请问是书中这块有误还是本人的操作原因,如果是本人操作有误,请问错误原因是,谢谢!

Jerry Yue进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注