1. 为什么数据清洗如此重要?
缺失值:部分数据缺失,导致模型无法完整地利用所有信息。 重复值:数据集中包含多个相同的条目,影响分析结果的精确度。 不一致的格式:日期、时间、数值和分类数据可能采用不同的格式,导致分析时出现问题。 异常值:一些极端值会严重影响模型的表现,需要仔细处理。
2. 数据清洗的基本步骤
3. 导入数据
read.csv()
函数导入数据集:# 读取数据集
data <- read.csv("your_dataset.csv", stringsAsFactors = FALSE)
4. 处理缺失值
is.na()
函数来检查缺失值,并使用多种方法进行处理。4.1 查找缺失值
# 查看每一列中的缺失值
colSums(is.na(data))
4.2 删除缺失值
# 删除包含缺失值的行
clean_data <- na.omit(data)
4.3 填充缺失值
# 用均值填充缺失值
data$column_name[is.na(data$column_name)] <- mean(data$column_name, na.rm = TRUE)
5. 处理重复值
duplicated()
函数可以查找和删除重复条目:# 查看重复行
duplicated_rows <- data[duplicated(data), ]
# 删除重复行
data <- data[!duplicated(data), ]
6. 处理数据类型不一致
as.Date()
可以将字符串转换为日期格式,或使用factor()
将字符转换为分类变量。6.1 转换日期格式
# 将字符串转换为日期格式
data$date_column <- as.Date(data$date_column, format = "%Y-%m-%d")
6.2 转换为分类变量
# 将字符型数据转换为因子
data$category_column <- as.factor(data$category_column)
7. 处理异常值
7.1 查找异常值
summary()
函数检查数据的分布情况,帮助找出异常值:# 检查数据分布
summary(data$numeric_column)
7.2 可视化异常值
# 生成箱线图
boxplot(data$numeric_column, main = "Boxplot for Numeric Column")
7.3 删除或替换异常值
# 删除异常值
data <- data[data$numeric_column < upper_threshold & data$numeric_column > lower_threshold, ]
8. 数据清洗后的可视化对比
8.1 示例代码:数据清洗前后的可视化
# 加载必要的包
library(ggplot2)
# 假设我们有一个数据集,包含缺失值和异常值
set.seed(123)
raw_data <- data.frame(
x = c(rnorm(100, mean = 50, sd = 10), NA, 200, 250), # 包含异常值和缺失值
y = c(rnorm(100, mean = 50, sd = 10), NA, 300, -100) # 包含异常值和缺失值
)
# 数据清洗前的可视化
ggplot(raw_data, aes(x = x, y = y)) +
geom_point(color = "red") +
ggtitle("数据清洗前的散点图") +
theme_minimal()
# 进行数据清洗:去除缺失值和异常值
clean_data <- na.omit(raw_data)
clean_data <- clean_data[clean_data$x < 150 & clean_data$y > 0 & clean_data$y < 150, ]
# 数据清洗后的可视化
ggplot(clean_data, aes(x = x, y = y)) +
geom_point(color = "blue") +
ggtitle("数据清洗后的散点图") +
theme_minimal()
数据清洗前:图中使用红色散点表示原始数据,其中包含缺失值和异常值。可以明显看到一些极端的点与数据的主流分布相差较远,表明数据中存在异常值。 数据清洗后:清洗后,我们删除了缺失值,并过滤掉了极端的异常值。蓝色散点显示了清洗后的数据,分布更加集中,异常值被移除,数据更具分析意义。
9. 结论
(请点击标题查看)
科研代码 | 机器学习
ANOVA 描述性统计分析 主成分分析PCA 判别分析 PLSDA LDA KNN
异常值 贝叶斯统计 调用数据集 模型评价之准确率 Scikit-learn 数据预处理 API
无监督机器学习 SVM 监督式机器学习 特征选择 ANN SQL 数据转换 特征选择 冗余分析 数据导入 限制性立方样条时间序列分析 数据预处理 随机森林(RF)
散点图 相关性热图 柱状图 盒须图 小提琴图 R画地图 ggplot2 雷达图 圆形柱状图
文氏图 显著性差异 条形图 R配色 热图显著性标记 箱线图 XGBoost建模 3D散点图
科研代码 | 生产力工具
Pycharm Rstudio Dataspell VScode 四大数据分析软件 Copilot R语言教材 基础统计学 R语言入门 SPSS Python编辑器全比较 大名鼎鼎的文献管理软件
科研代码 | 世间万物
Peer pressure 走出舒适区 小老板保命守则 缺的是数据科学家 卷王之王 开放获取