导读:今天这篇文章是「大数据」内容合伙人JaneK关于《Python数据分析与数据化运营》的一篇读书笔记。在大数据公众号后台对话框回复合伙人,免费读书、与50万「大数据」同行分享你的洞见。
作者:JaneK,希望能够成为数据分析师
本文目录:
Python数据分析与挖掘
01 基本知识
02数据获取
03数据预处理
04 分析与挖掘方法
Python数据化运营案例
05 会员数据化运营
06 商品数据化运营
07 流量数据化运营
08 内容数据化运营
09 数据化运营分析的终极秘籍
01 基本知识
1. 数据化运营
-
概念:指通过数据化的工具、技术和方法,对运营过程中的各个环节进行科学分析、引导和应用,从而达到优化运营效果和效率、降低成本、提高效益的目的。
-
分类:辅助决策式数据化运营(为业务决策方服务,整个过程都由运营人员掌控,数据是辅助角色);数据驱动式数据化运营(数据是主体,需要IT、自动化系统、算法等支持,具有自主导向性、自我驱动性和效果导向性)
-
数据驱动式流程:数据需求沟通(需求产生、需求沟通)→数据分析建模(获取数据、预处理、分析建模、数据结论)→数据落地应用(数据结论沟通、数据部署应用、后续效果监测和反馈)
2. Python工具和组件
-
搭建Python环境、交互环境Jupyter
-
科学计算库:Numpy、Scipy、Pandas、Statsmodels、Imblearn、gplearn
-
机器学习库:scikit-learn、XGBoost、LightGBM、TPOT
-
自然语言处理库:结巴分词、Gensim
-
数据库连接库:MySQL连接库、MongoDB连接库
-
HTML处理库:Beautiful Soup
-
图形展示库:Matplotlib、Pyecharts
-
图像处理库:PIL和Pillow、OpenCV
02 数据获取
1. 数据来源
-
数据文件:以数字或文本形式存储的结构化的数据记录,数据格式类型有txt、csv、tsv、xls、xlsx、xml、html、doc、sql等
-
数据库:
关系型数据库(DB2、Sybase、Oracle、PostgreSQL、SQL Server、MySQL等);
非关系型数据库(Redis、Tokyo Cabinet、Voldemort、MongoDB、CouchDB、Cassandra、HBase、Riak、Neo4J等)
-
API:
服务型API(基于预定义的规则,通过调用API实现特定功能);
数据型API(通过特定语法,通过向服务器发送数据请求,返回特定格式的数据或文件)
-
流式数据:
用户行为数据流(围绕“人”产生的数据流;采集平台可分为Web站、移动站、App应用三类,前两类支持JS脚本采集,后者使用SDK);
机器数据流(围绕“物”产生的数据流;通常集中在工业4.0、智能工厂等工业的智能运营管理过程中,也出现在物联网、人工智能等人和物的监控、识别、联通、互动等智能化应用中)
-
外部公开数据:
政府和相关机构提供的公开数据;
竞争对手主动公开的数据;
行业协会或相关平台组织提供的统计、资讯数据;
第三方的组织或个人披露的与企业相关的数据。
-
其他:例如提供调研问卷获得的有关产品、客户等方面的数据;购买数据等。
2. 获取数据
-
文本文件:
-
read
读取文件中的全部数据,直到到达定义的size字节数上限
内容字符串,所有行合并为一个字符串
-
readline
读取文件中的一行数据,直到到达定义的size字节数上限
内容字符串
-
readlines
读取文件中的全部数据,直到到达定义的size字节数上限
内容列表,每行数据作为列表中的一个对象
-
numpy.loadtxt
从txt文本中读取数据
从文件中读取的数组
-
numpy.load
可以读取Numpy专用的二进制数据文件
从数据文件中读取的数组、元组、字典等
-
numpy.fromfile
可以读取简单的文本文件数据以及二进制数据
从文件中读取的数据
-
pandas.read_csv
读取csv文件
DataFrame或TextParser
-
pandas.read_excel
读取excel文件
DataFrame或TextParser
-
pandas.read_fwf
读取表格或固定宽度格式的文本行到数据框
DataFrame或TextParser
-
pandas.read_table
读取通用分隔符分隔的数据文件到数据框
DataFrame或TextParser
-
Excel:xlrd、xlwt、pyexcel-xls、xluntils等第三方库
-
MySQL:sql语句
-
MongoDB:PyMongo提供了数据统计、分析和探索的基本方法
-
API:需要到特定平台进行注册,获得密钥等信息
-
网页:获取网页的源代码后进行解析
-
非结构化文本数据:侧重于特定场景,通用性较差
-
图像:
-
PIL.Image.open
读取图像内容
一个图像文件对象
-
cv2.imread
读取图像内容
一个图像文件对象
-
Matplotlib.pylot.imshow
展示图像
展示一个图像对象
-
视频:
-
cv2.VideoCapture
读取视频数据
一个视频对象
-
语音:audioop、aifc、wav等库,或调用API
03 数据预处理
1. 数据清洗
-
缺失值:对于缺失值的处理思路是先通过一定方法找到缺失值,接着分析缺失值在整体样本中的分布占比,以及缺失值是否具有明显的无规律分布特征,然后考虑后续要使用的模型中是否能满足缺失值的自动处理,最后决定采用哪种缺失值处理方法。
-
丢弃(直接删除带有缺失值的行记录或列字段)
简单明了;数据特征消减
不适用场景:a数据集总体中存在大量的数据记录不完整情况且比例较大;b带有缺失值的数据记录大量存在着明显的数据分布规律或特征。
-
补全(通过一定的方法将缺失的数据补上)
更为常用
常用补全的方法:a统计法,使用均值、众数等补足;b模型法,根据已有字段预测缺失字段的值;c专家补全;d其他,例如随机法、特殊值法、多重填补等。
-
真值转换法(将数据缺失作为数据分布分布规律的一部分,将变量的实际值和缺失值都作为输入维度参与后续数据处理和模型计算中)
认为不能轻易对缺失值随意处理的情况
例如:以性别字段,在无法进行补足且认为其有重要意义的情形下,进行真值转换。转换前为:性别(男、女、未知);转换后为:性别_男(0或1),性别_女(0或1),性别_未知(0或1)
-
不处理
主要看后期数据分析和建模应用,很多模型对于缺失值有容忍度或灵活的处理方法
常见能够自动处理缺失值的模型有:KNN、决策树和随机森林、神经网络、朴素贝叶斯等。
-
异常值:
分为“伪异常”(由业务特定运营动作产生,正常反映业务状态的异常)和“真异常”(客观反映数据本身分布异常的个案);
一般情况下,异常值会在预处理阶段被剔除;
无需抛弃异常值的情况:
a异常值正常反映了业务运营结果;
b异常检测模型,即异常数据本身是目标数据的情况;
c包容异常值的数据建模,即数据算法和模型对异常值不敏感。
-
重复值:
两种情况
a数据值完全相同的多条数据记录;
b数据主体相同但匹配到的唯一属性值不同;
一般情况下,通过去重方法处理重复值;
不建议去重的情况:
a重复记录用于分析演变规律;
b重复的记录用于样本不均衡处