当前位置: 首页 > news >正文

Matlab数据处理学习笔记

1 :数据清洗

注:数据读取

(1)读取工作表

% 指定要读取的工作表
filename = 'sales_data.xlsx';
sheetName = 'Sheet2'; % 或者使用工作表编号,例如:sheetNumber = 2;% 读取指定工作表的数据
data = readtable(filename, 'Sheet', sheetName);% 显示前几行数据
head(data);

(2)写入工作表

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

1.1 :缺失值检测和处理

a. 检测缺失值

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

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

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

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

b.处理缺失值

删除缺失值:

data_clean = rmmissing(data);

 用均值填补缺失值

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

2.2:异常值检测和处理

a.检测异常值

可以使用IQR方法:

1. 计算四分位数和 IQR

% 计算四分位数和 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。

2. 识别异常值

% 识别异常值
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 是一个逻辑向量,指示每个数据点是否是异常值。

3. 处理异常值

% 用中位数填补异常值
data.SalesVolume(outliers) = median(data.SalesVolume);
  • median(data.SalesVolume):计算 SalesVolume 的中位数。
  • data.SalesVolume(outliers) = median(data.SalesVolume);:将所有识别为异常值的 SalesVolume 替换为中位数。

http://www.lryc.cn/news/411781.html

相关文章:

  • 浏览器中的同源策略、CORS 以及相关的 Fetch API 使用
  • 爬虫 APP 逆向 ---> 粉笔考研
  • 2024河南萌新联赛第(三)场 河南大学
  • 回溯法---分割回文串
  • DDR等长,到底长度差多少叫等长?
  • 程序员面试题------N皇后问题算法实现
  • 【C++学习】6、继承
  • 从零开始的MicroPython(三) 按键与外部中断
  • Windows下编译安装Kratos
  • 汽车-腾讯2023笔试(codefun2000)
  • 软测面试二十问(最新面试)
  • 风吸杀虫灯采用新型技术 无公害诱虫捕虫
  • 随手记录第十二话 -- JDK8-21版本的新增特性记录(Lambda,var,switch,instanceof,record,virtual虚拟线程等)
  • SpringCloud网关 SpringBoot服务 HTTP/HTTPS路由/监听双支持
  • JavaScript做网页是否过期的处理
  • python coding时遇到的问题
  • 攻防演练号角吹响,聚铭铭察高级威胁检测系统助您零失分打赢重保攻坚战
  • 个人量化交易兴起!有什么好用的量化软件推荐?迅投QMT量化平台简介!
  • SQL labs-SQL注入(七,sqlmap对于post传参方式的注入,2)
  • SAM 2: Segment Anything in Images and Videos
  • 软件测试面试,如何自我介绍?
  • 力扣第四十七题——全排列II
  • Springer旗下中科院2区TOP,国人优势大!
  • 【C++】C++入门知识详解(下)
  • 分压电阻方式的ADC电压校准
  • 使用Postman测试API短轮询机制:深入指南
  • 明清进士人数数据
  • C# 串口通信(通过serialPort控件发送及接收数据)
  • 数据安全的新盾牌:SQL Server数据库镜像技术详解
  • 【C语言版】数据结构教程(一)绪论(上)