一、数据导入与清洗
1.1 数据导入
MATLAB支持从多种数据源导入数据,包括文本文件(如CSV、TXT)、Excel文件、数据库等。以下是一个从CSV文件导入数据的示例:
% 假设有一个名为'data.csv'的文件,包含三列数据:ID, Age, Salary
filename = 'data.csv';
data = readtable(filename);
% 显示前几行数据以验证导入
head(data)
1.2 数据清洗
数据清洗包括处理缺失值、异常值、重复值等。以下是一些常见的数据清洗操作:
% 删除包含缺失值的行
cleanedData = rmmissing(data);
% 填充缺失值(例如,用均值填充Salary列的缺失值)
meanSalary = mean(data.Salary, 'omitnan');
data.Salary(isnan(data.Salary)) = meanSalary;
% 删除重复行
uniqueData = unique(data, 'rows', 'stable');
二、数据预处理
数据预处理是数据分析前的关键步骤,包括数据转换、归一化、标准化等。
2.1 数据转换
数据转换可能涉及数据类型转换、文本数据转换为数值数据等。
% 将文本数据转换为数值数据(假设Age列原本是文本类型)
data.Age = str2double(data.Age);
% 对数据进行分组(例如,按年龄分组)
ageGroups = categorical(arrayfun(@(x) x < 30 ? 'Young' : x < 60 ? 'Middle-Aged' : 'Senior', data.Age, 'UniformOutput', false));
data.AgeGroup = ageGroups;
2.2 归一化与标准化
归一化和标准化是常用的数据预处理方法,用于改善算法性能。
% 归一化(将Salary列的值缩放到0和1之间)
data.SalaryNormalized = (data.Salary - min(data.Salary)) / (max(data.Salary) - min(data.Salary));
% 标准化(将Salary列的值转换为均值为0,标准差为1的分布)
mu = mean(data.Salary, 'omitnan');
sigma = std(data.Salary, 0, 'omitnan');
data.SalaryStandardized = (data.Salary - mu) / sigma;
三、数据分析
MATLAB提供了丰富的统计函数和工具箱,支持复杂的数据分析任务。
3.1 描述性统计分析
% 计算基本统计量
summaryStats = grpstats(data, 'AgeGroup', {'mean', 'median', 'std', 'min', 'max'}, 'DataVars', {'Salary'});
disp(summaryStats)
3.2 相关性分析
% 计算Salary和Age之间的相关系数
[R, pValue] = corr(data.Salary, data.Age, 'Type', 'Pearson');
disp(['Correlation coefficient: ', num2str(R), ', p-value: ', num2str(pValue)])
四、数据可视化
MATLAB的图形和可视化功能非常强大,能够直观地展示数据特征。
4.1 绘制直方图
% 绘制Salary的直方图
figure;
histogram(data.Salary, 'Normalization', 'pdf');
title('Salary Distribution');
xlabel('Salary');
ylabel('Probability Density');
4.2 散点图与分组
% 绘制Age与Salary的散点图,并按AgeGroup分组
figure;
gscatter(data.Age, data.Salary, data.AgeGroup);
title('Age vs Salary by Age Group');
xlabel('Age');
ylabel('Salary');
legend('show');