在Python办公自动化系列中,我们已经知道用Python处理各类文档的实用姿势。
在实际工作中,还有更多数据处理场景。常见的比如:

  • 获取竞争情报
  • 分析业务问题
  • 寻找决策依据

而且不同行业不同业务类型,需要用不同模型来分析。
人们在实战中总结出不少理论和方法,比如:

  • 适合行业分析的PEST模型
  • 适合市场营销的4P营销理论
  • 适合财务分析的杜邦模型
  • 适合产品运营的AARRR增长模型

以及一大堆未成体系的实战策略,在战略和战术层面为我们提供决策依据。
数据分析可以帮助我们更快更准掌握现状,定位问题原因,甚至从规律中预测未来。
数据,早已成为每个公司的核心资产。
数据分析能力,是我们每个人在信息时代的核心竞争力之一。

数据分析流程

业内数据分析人员的定位划分有3类:

  • 侧重管理:关注行业和市场信息,掌握整体执行效率。
  • 侧重业务:更关心如何用数据分析问题,制定战术策略。
  • 侧重技术:搭建内部分析平台,关注平台基础架构。

实战中,中层管理人员往往需要同时熟悉管理和业务层面的分析,对业务的熟悉程度也决定了数据分析人员的职业发展高度。
技术方面,大中型公司会有余力关注数据资产,建设自有数据分析平台;小团队早期更适合使用SaaS工具管理数据。但不管用自有系统还是外部系统,都不影响必要的数据分析工作。

数据分析整体开展思路可分为6个部分:

  1. 明确目标:为什么分析?分析什么数据?需要哪类结论?(判断题?选择题?问答题?)
  2. 数据收集:围绕目标收集数据,信息渠道要广,数据内容要精准。
  3. 数据清洗:剔除无效无用数据,“淘”出关键数据。
  4. 数据分析:用基本的分类/比较/统计,以及各类数据模型分析数据。
  5. 数据展现:用可视化工具呈现数据,让人更易理解。
  6. 数据报告:基于逻辑框架给结论和建议,组织文字/图像/媒体提高说服力。

所以,数据分析的第一步,就是要明确目标
不同目标需要不同的分析模型和方法。比如:

  • 产品策划阶段,会更侧重行业分析和竞品分析,需要掌握更多市场数据,以及竞品运营数据。
  • 产品上线后,第一关注就是其业务数据,如用户增长和留存,及后续的付费转化和复购等。
  • 运营中后期,需要持续寻找并突破增长瓶颈点,关注用户数据,细分类型并制定策略。
  • 公司财务方面,需要及时掌握现金流、盈利能力、债务和资产等数据,辅助战略决策。
  • ……

只有明确了数据分析的目的,才能匹配适合的模型和方法展开工作。

  • 有些只要用报表反映现状即可,甚至可以用看板省去正式报告。
  • 有些侧重说服,如战略研究报告,需要用严谨逻辑和专业表述说服利益相关者。
  • 有些侧重找问题原因,如业务增长瓶颈,需要快速分析,提出假设,测试验证并复盘总结。

数据是无穷的,但人的精力却是有限的,我们需要借助工具和方法来处理数据。

数据的处理

数据处理工作主要在中间4步:收集、清洗、分析、展现。
根据目标设定,数据可以来自于内部或者外部,也可以是两者的结合。

  • 内部数据,如交易系统数据、用户行为跟踪数据等。
  • 外部数据,如三方平台接口数据、互联网公共数据等。

收集数据后,还需要清洗数据,如去除缺失或明显错误的数据、补全或修改有逻辑错误的数据、校验关联数据等。
数据清洗在整个数据分析工作量中占比最高,也最考验耐心。高强度的数据清洗操作,为的是在分析阶段获得更高质量的数据输入。
到了分析阶段,我们就可以套用相关数据模型展开分析,期间也会借助统计学工具辅助。
最常见的基本分析方法有3个:

  • 对比分析:按时间、空间、对象等维度比较,通过比较可以直观看到差异。
  • 分组分析:根据特征把数据分组,再按组对比分析找差异。
  • 交叉分析:把不同维度组合起来分析,观察数据在维度间潜在规律。

此外还有更多统计学的方法,如回归、聚类、因子等,适用于特定场景。
当然,并非越复杂的分析方法越靠谱,数据分析的关键是让人通过数据达成目的。

数据可视化

分析过程中,我们也可以同时结合可视化工具辅助,这样更容易观察到数据间的相似特征和差异。
图表是最常用的可视化工具,比如:

  • 柱状图:适合二维数据分析,用柱子高度表达数据差异。
  • 饼图:适合表达各组成部分在整体中的占比。
  • 折线图:适合表达数据变化趋势。
  • 雷达图:适合四维以上的多维数据,表达数据在多指标下的表现。
  • 散点图:适合粗略观察数据的分布。

还有一些更专用的形式,比如:

  • 漏斗图:适合分析多阶段数据,如业务流程的各层的转化率。
  • 热力图:适合用色彩数据密集度,如结合地理信息表达人流密度。
  • 词云图:适合表达用词频率,比如用户画像、内容标签等。
  • 树型图:适合表达隶属关系,比如行业矩阵。

1、内容纲要 - 图1

把数据用恰当的方式表达出来,可以帮助人们更好更快地理解数据。
除了图表,还能用看板(dashboard)快速掌握全局信息,制作信息图让数据更有故事性。
最后,选择一套逻辑框架,把观点结论用文字、图表及原始数据进行论述,就能输出完整分析报告。

工具选择

数据处理的工具有很多,如Excel、SQL、R以及一些BI(商业智能)工具。
但各个工具的发展侧重点,以及应用范围各不相同,如:

  • Excel最通用,但适合处理小数据集,07版本开始最大1048576行x16384列。
  • SQL是结构化查询语言,专门用于数据库。
  • R有大量成熟的数据统计功能,广泛用于研究机构,但发展较慢。
  • 大部分BI工具更侧重于可视化,如PowerBI和Tableau。

在简单场景下,Excel足够应付,它主要有4大模块:

  • 数据读写:以表格形式保存数据,可从文本和HTML中读取表格数据。
  • 数据图表:支持柱状图、饼图、折线图等基本图表工具。
  • 数据分析:支持基本筛选、排序、统计,以及数据透视表和函数。
  • 样式格式:支持页面布局,设置数据格式和单元格样式。

此外,它可与微软系工具无缝结合,如PowerBI、Access数据库,也可以通过VBA自定义插件。
在数据量不大的情况下,Excel的确是最实用的本地数据分析工具。
但随着业务增长,数据量也会增多,使用Excel分析数据就会遇到瓶颈。
这时,有两个选择:

  1. 把数据分块分析,比如按年/季度划分,单独统计后再汇总,或按业务板块划分,目的就是让数据量减少到Excel能承载的范围内。
  2. 借助其他工具,把Excel当作输入数据源之一,比如借助TableauPowerBI商业套件,或自行开发数据分析工具。

这个时候,Python的数据处理能力就能完全体现出来了。
几十年来Python吸收了来自众多领域的高手,能力已覆盖数据获取、分析和可视化全流程。

  • 我们可以通过requests模块获取互联网数据,通过lxmljson等模块抽取所需内容,再利用django模块把数据保存到自建数据库,或通过csvopenpyxl模块把数据保存到本地文件。
  • 然后开始用pandas处理分析数据,用matplotlibpyechartsplotly等模块提供可视化辅助和输出。

前半部分俗称爬虫,其中django是Python著名Web开发框架之一,但我们也可以用来辅助数据存储。
后半部分是数据分析的主要工作。
基础系列办公自动化系列中,我们演示过用Python来做数据统计工作。
借助其列表生成器和内置函数,我们也能完成大部分的分析工作,只不过比较繁琐。
比如,Python处理Excel章节的尾部,有一个加盟店数据分析实战案例。
其中我们利用了Python内置的列表和函数统计分析数据,虽然也可以完成任务,但不管效率、代码量还是可理解度,都无法与pandas相比。
1、内容纲要 - 图2
Python有一套经典的数据分析模块组合:numpypandasscipy

  • numpy是一个底层由C实现的多维数组,比Python内置的数组效率高几十倍。
  • pandasnumpy基础上增加了标签,可以轻松处理表格类数据。
  • scipy提供了更多科学计算工具,如线性代数、统计、信号处理等。

模块安装:

  • pip install numpy
  • pip install pandas
  • pip install scipy

可以在Notebook中对Python原生的列表和numpy数组做一个简单性能对比:分别对每个元素做10次乘法操作。

  1. import numpy as np
  2. np_arr = np.arange(1000000)
  3. py_arr = list(range(1000000))
  4. %time for _ in range(10): np_arr = np_arr * 2
  5. %time for _ in range(10): py_arr = [x * 2 for x in py_arr]

可以得出类似如下结果:

CPU times: user 18.2 ms, sys: 12.8 ms, total: 31 ms Wall time: 30.3 ms CPU times: user 741 ms, sys: 224 ms, total: 965 ms Wall time: 972 ms

此外,还有sklearnPyTorchKerasTensorFlow等更多机器学习框架和算法。
所以,Python是数据分析的不二选择。

Python的可视化模块也很多,比如:

  • matplotlib,与numpy无缝结合的二维绘图库,支持大部分图表,配置灵活。
  • pyecharts,基于百度开源的echarts可视化项目,图表更丰富也更精美。
  • plotly,基于plotly.js,支持2D和3D的交互式绘图,与Python各数据分析模块无缝结合。

除了matplotlib是纯Python编写的模块,其他两个都是对基于JavaScript绘图框架的Python接口封装。
更多可视化项目,都基于JavaScript实现。除了上面提到的echartsplotly.js,还有著名的D3.js,以及蚂蚁金服的AntV等等。
当然,学习的时候不用贪多,够用即可,选择一套用熟用透,好过看100遍别人的推荐文章。

总结

本系列是继基础系列和办公自动化系列后的第三个系列:Python数据处理系列
内容涵盖数据获取、分析和可视化三大部分,用Python解决平时常遇到的数据问题。
结构上,为了更容易理解和学习,会穿插讲解一些基本概念,并用Excel或浏览器等日常工具演示。
涉及到实战类项目,会提前告知所用分析模型或方法,但主要内容以介绍工具技能为主。

扫码加入学习群,前100名免费。
1、内容纲要 - 图3