Matlab数据处理学习笔记

1 :数据清洗

注:数据读取

(1)读取工作表

Matlab 复制代码
% 指定要读取的工作表
filename = 'sales_data.xlsx';
sheetName = 'Sheet2'; % 或者使用工作表编号,例如:sheetNumber = 2;

% 读取指定工作表的数据
data = readtable(filename, 'Sheet', sheetName);

% 显示前几行数据
head(data);

(2)写入工作表

Matlab 复制代码
writetable(data, 'yourfile_modified.xlsx'); % 写入到新文件
% 或者覆盖原有文件
% writetable(data, filename);

1.1 :缺失值检测和处理

a. 检测缺失值

Matlab 复制代码
% 检测缺失值
missing_data = any(ismissing(data), 2); % 沿着行查找
disp('缺失值的行号:');
disp(find(missing_data));

1)ismissing函数用于检测是否存在缺失值

2)any函数用于检测制定逻辑数组中是否存在true的值,可以指定检测的维度

3)find 函数用于返回逻辑数组中 true 值的索引。对于此用途,它用来找出包含缺失值的行号。

b.处理缺失值

删除缺失值:

Matlab 复制代码
data_clean = rmmissing(data);

用均值填补缺失值

Matlab 复制代码
% 用列的均值填补缺失值
data.SalesVolume = fillmissing(data.SalesVolume, 'movmean', 7); % 例如使用7天移动平均填补

2.2:异常值检测和处理

a.检测异常值

可以使用IQR方法:

  1. 计算四分位数和 IQR
Matlab 复制代码
% 计算四分位数和 IQR
Q1 = prctile(data.SalesVolume, 25);
Q3 = prctile(data.SalesVolume, 75);
IQR = Q3 - Q1;

% 识别异常值
outliers = data.SalesVolume < (Q1 - 1.5 * IQR) | data.SalesVolume > (Q3 + 1.5 * IQR);
disp('异常值的行号:');
disp(find(outliers));
  • prctile(data.SalesVolume, 25):计算 SalesVolume 的第 25 百分位数(Q1)。
  • prctile(data.SalesVolume, 75):计算 SalesVolume 的第 75 百分位数(Q3)。
  • IQR = Q3 - Q1:计算 IQR。
  1. 识别异常值
Matlab 复制代码
% 识别异常值
outliers = data.SalesVolume < (Q1 - 1.5 * IQR) | data.SalesVolume > (Q3 + 1.5 * IQR);
disp('异常值的行号:');
disp(find(outliers));
  • data.SalesVolume < (Q1 - 1.5 * IQR):检查是否有值低于 Q1 - 1.5 * IQR。
  • data.SalesVolume > (Q3 + 1.5 * IQR):检查是否有值高于 Q3 + 1.5 * IQR。
  • outliers 是一个逻辑向量,指示每个数据点是否是异常值。
  1. 处理异常值
Matlab 复制代码
% 用中位数填补异常值
data.SalesVolume(outliers) = median(data.SalesVolume);
  • median(data.SalesVolume):计算 SalesVolume 的中位数。
  • data.SalesVolume(outliers) = median(data.SalesVolume);:将所有识别为异常值的 SalesVolume 替换为中位数。
相关推荐
~kiss~4 小时前
A Survey of On-Policy Distillation for LLMs 学习(一)
学习
一只大鸽子5 小时前
游戏开发笔记4-像素画基础 轮廓-直线和曲线
笔记
小杨小杨、努力变强!6 小时前
python学习笔记
笔记·学习
杨逢昌工厂6S管理8 小时前
150-杨逢昌一线现场诊断笔记:越管一线越抵触背后的熵增机理与基准化治理
经验分享·笔记·职场和发展·学习方法
Star(up up up)11 小时前
Redis Windows 安装教程:使用Windows 的 Redis 压缩包
redis·笔记·学习·程序人生·云原生·学习方法·改行学it
希和202712 小时前
江科大 51 单片机课程笔记:DS1302 实时时钟 + LCD1602 可调电子钟(小白逐行讲解)
笔记·单片机·嵌入式硬件
岑梓铭13 小时前
《考研408数据结构》第七章(B树 和 B+树)复习笔记
数据结构·笔记·b树·考研·408
乌暮14 小时前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
Go Work17 小时前
docker 占满根分区时先分清谁在吃盘
经验分享·笔记
30955666618 小时前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口