Python学习
一、学前花絮
前一篇文章我们讲述了大数据的概念、数据的种类及python与大数据的关系,并针对大数据中的数据采集进行了细致的拆解。应该说,数据采集是大数据最基础的部分,也是所有行业大数据处理的第一步。有了采集的数据,我们就可以开展下一步的数据清洗与预处理工作了。
二、Python 完成数据清洗与预处理的步骤
数据采集后的清洗(Cleaning)和预处理(Preprocessing)是数据分析中最关键、也最耗时的环节(通常占项目时间的 60%-80%)。这一步做不好,后续的分析结果就会是“垃圾输出”。
结合 Python 工具库,我们可以将这一过程细化为以下 5 个标准步骤。
2.1 数据加载与初步探查(“体检”阶段)
在动手清洗前,先要看看数据长什么样。
操作:
使用python的Pandas 模块读取数据(pd.read_csv(), pd.read_excel() 等)。
查看数据概貌:df.head()(看前几行)、df.info()(看数据类型和非空数量)、df.describe()(看数值的统计分布)。
目的:快速发现明显的错位、乱码或类型错误(例如:本该是数字的列里出现了文字)。
2.2 数据清洗(“去脏”阶段)
这是最基础的一步,旨在解决数据中的“硬伤”。
A. 处理缺失值
现实数据中经常会有空值。
删除:如果某一行数据缺失太多,或者缺失比例极小,可以直接用 dropna() 删除。
填充:如果缺失值较少,可以用合理值填补。
数值型:用均值、中位数填充(df.fillna(df.mean()))。
类别型:用众数(出现最多的值)填充。
业务逻辑:例如时间序列数据,可以用前一天的值(前向填充)填补。
B. 处理重复数据
数据采集过程中(尤其是日志数据),经常会出现重复记录。
操作:使用 df.drop_duplicates() 删除完全重复的行。有时也需要根据特定的关键字段(如 ID)来去重。
C. 处理异常值
剔除明显错误的数据(例如:人的年龄为 200 岁,或者价格为负数)。
操作:
逻辑判断:直接筛选出不符合业务逻辑的数据并修正或删除(如 df[df['age'] > 150])。
统计方法:使用箱线图(IQR)或 3σ 原则识别偏离均值过远的点。
2.3 数据转换与标准化(“塑形”阶段)
清洗完后,数据虽然干净了,但可能格式不统一,或者不适合计算。
A. 格式标准化
日期格式:将各种格式的日期(如 MM/DD/YYYY 和 YYYY-MM-DD)统一转换为标准的 datetime 类型(pd.to_datetime())。
文本清洗:去除字符串首尾的空格(.strip()),统一转为小写(.lower()),或者去除特殊的标点符号、HTML 标签。
B. 类别编码(Feature Encoding)
机器学习模型无法直接处理文本,必须转换为数字。
标签编码:给类别贴上数字标签(如:男=0,女=1),适用于有序类别。
独热编码:将一个类别字段拆分成多个 0/1 列(如:“颜色”列拆分为“红色”、“蓝色”、“绿色”三列),适用于无序类别(pd.get_dummies() 或 OneHotEncoder)。
C. 数据缩放(Normalization/Standardization)
如果不同指标的量纲差异巨大(如:年龄 0-100 和 薪资 3000-30000),模型可能会偏向数值大的指标。
归一化:将数据缩放到 0-1 之间。
标准化:将数据转换为均值为 0、标准差为 1 的分布。
2.4 数据集成与规约(“整合”阶段)
数据集成:如果你的数据来自多个表(如用户表和订单表),需要使用 pd.merge() 或 pd.concat() 将它们关联起来,形成一张宽表。
数据规约:如果数据量太大,可以通过降维(如 PCA)减少特征数量,或者通过采样减少数据行数,以提高后续计算效率。
2.5 Python 实战代码示例
先构造一个数据文件raw_data.csv(实际项目文件会很大,这里只是示例):
从上面的文件看出,第一行是属性信息,也可以认为是文件的结构,包括name、age、gender、city、salary、date等。下面的是数据行,我们故意造几个缺失信息的情况,看后续是如何处理的。
这里是一个简单的清洗与预处理流水线代码:
输出结果:
我们通过输出结果看到,首先对文件的结构进行了归纳,然后对缺失值进行了统计。后续的情况,要根据项目实际与甲方进行沟通如何补充缺失值,比如姓名(name)信息要进行手工填写,而对于数字类型的比如salary、date等看是否特别严谨,需要手工处理。否则如果不是特别重要,也可以按照平均值等方式进行填充。
总结:数据清洗和预处理的核心逻辑就是:先去脏(缺失、重复、异常),再去噪(格式不统一),最后塑形(标准化、编码)。只有经过这番处理,数据才能真正“喂”给模型或用于生成报表。
三、小结
通过python针对数据的清洗与预处理,我们了解到如何进行大数据的处理及其详细操作步骤。毕竟每个行业、每个单位面临的数据不同,具体情况各异。但我们在这里总结的一些通用方法,还是能够在实际项目中起到作用。
让我们保持学习热情,多做练习。我们下期再见!