第4章 数据预处理

4.1 数据表匹配合并

#INNER JOIN匹配查询
SELECT record_date,city,age,category,price,gender,pay,mp
FROM data1
INNER JOIN data2
ON data1.id=data2.id;

#LEFT JOIN匹配查询
SELECT record_date,city,age,category,price,gender,pay,mp
FROM data1
LEFT JOIN data2
ON data1.id=data2.id;

#RIGHT JOIN匹配查询
SELECT record_date,city,age,category,price,gender,pay,mp
FROM data1
RIGHT JOIN data2
ON data1.id=data2.id;

4.2 数据排序

#数据升序排序
SELECT *
FROM data1
ORDER BY age;

#数据降序排序
SELECT *
FROM data1
ORDER BY age DESC;

#对多列数据进行排序
SELECT *
FROM data1
ORDER BY age,price DESC;

4.3 数据分组

#age字段分组
SELECT age,
CASE
	WHEN age<30 THEN 'A'
	WHEN age>=30 AND age<50 THEN 'B'
	WHEN age>=50 THEN 'C'
	ELSE 'D' 
END
AS age_type
FROM data1;

#直接分组查询并汇总
SELECT COUNT(id) AS id_count,SUM(price) AS total_price,
CASE
	WHEN age<30 THEN 'A'
	WHEN age>=30 AND age<50 THEN 'B'
	WHEN age>=50 THEN 'C'
	ELSE 'D'
END
AS age_type
FROM data1
GROUP BY age_type
ORDER BY id_count;

4.4 数据分列

#数据分列
SELECT id,Record_date,city,age,category,price,
SUBSTRING_INDEX(category,'-',1)AS size,
SUBSTRING_INDEX(category,'-',-1)AS colour
FROM data1;

#按分列后的结果进行单列数据汇总
SELECT SUBSTRING_INDEX(category,'-',1) AS size,COUNT(id)
FROM data1
GROUP BY size;

#按分列后的结果进行多列数据汇总
SELECT SUBSTRING_INDEX(category,'-',1) AS size,COUNT(id) AS id_count,
ROUND(SUM(price),2) AS total_price
FROM data1
GROUP BY size;

#数据分列(改表) 
#添加两个空字段 
ALTER TABLE data1
ADD (size VARCHAR(255),colour VARCHAR(255)); 

#更新分列后的字段内容
UPDATE data1
SET size = SUBSTRING_INDEX(category,'-',1),
colour =  SUBSTRING_INDEX(category,'-',-1); 

SELECT *
FROM data1;
### Python 数据分析与挖掘教材 第4 数据预处理 内容总结 #### 1. 数据预处理的重要性 数据预处理数据分析和挖掘中的重要环节之一,其目的是提高数据质量并使其更适合后续建模过程。高质量的数据能够显著提升模型性能和预测准确性[^1]。 #### 2. 常见的数据预处理方法 以下是第4中提到的主要数据预处理技术: - **缺失值处理** 缺失值可能会影响算法的正常运行,因此需要采取适当的方法填补或删除这些值。常见的填充方式包括均值、中位数、众数以及插值法等[^3]。 - **异常值检测与处理** 异常值是指与其他观测值相比明显偏离的数值。可以通过可视化工具(如箱线图)、统计学方法(如Z分数)或者基于机器学习的技术来识别和处理异常值[^2]。 - **数据标准化/归一化** 不同特征之间的量纲差异可能导致某些算法无法有效工作。为此引入了多种标准化手段: - 最小-最大规范化:\((X-X_{min}) / (X_{max}-X_{min})\) 将原始数据映射至[0,1]区间。 - 零-均值规范化:\((X-\mu)/\sigma\) 减少因尺度不同带来的影响。 - 小数定标规范化:\(X^{'}= X / 10^j\) 其中 \(j=\lceil log_{10}(|X|)\rceil\) 调整数据范围以便于计算。 ```python import pandas as pd import numpy as np # 示例代码展示如何实现三种不同的标准化方法 def min_max_normalization(df): return (df - df.min()) / (df.max() - df.min()) def zero_mean_normalization(df): return (df - df.mean()) / df.std() def decimal_scaling_normalization(df): max_val = abs(df).max() scale_factor = int(np.ceil(np.log10(max_val))) return df / (10 ** scale_factor) # 测试函数 data = {'A': [10, 20, 30], 'B': [-5, 0, 5]} df = pd.DataFrame(data) print(min_max_normalization(df)) print(zero_mean_normalization(df)) print(decimal_scaling_normalization(df)) ``` - **离散化** 连续型变量有时需转换成分类形式以适应特定需求。常用策略有等宽分箱、等频分箱及聚类划分等方式。 - **属性构造** 属性构造涉及创建新特性或将现有特性组合起来形成更有意义的信息表示形式。 #### 3. 实际应用案例解析 书中提供了多个具体实例帮助理解上述理论概念的应用场景。例如,在某电商网站用户行为日志里存在大量噪声记录;通过实施一系列清洗措施后可以得到更清晰可用的结果用于推荐系统构建[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值