学习笔记:MATLAB处理大量数据

data=xlsread("C:\Users\333\Desktop\附件1:123家有信贷记录企业的相关数据.xlsx",'销项发票信息');      %用xlsread函数来导入数据,xlsread(“文件所在位置”,“工作表名称”)

result1=zeros(123,11);    %创建一个123行11列的零矩阵,用于存储最终结果

%下面for循环来处理每个企业的数据

for i=1:123

m=find(data(:,1)==i);            %找到data中第1列等于i的行索引,即找到当前企业i的数据行

re=data(m(1,1):max(m),:);   %提取当前企业i的所有数据行

re=sortrows(re,[3,4,5]);        %按照第3、4和5列对提取的数据进行排序

void=find(re(:,10)==0);         %找到第10列为0(表示作废)的行索引,并计算这些行的数量

void=size(void,1);             

valid=size(m,1)-void;             %计算有效发票的数量,即总行数减去作废发票的数量

mm=find(re(:,10)==1&re(:,9)>0);      %找到第10列为1且第9列(金额)大于0的行索引

ree=re(mm,:);                                   %提取满足上述条件的行

ree=sortrows(ree,[3,4,5]);                %再次按照第3、4和5列对这些数据行进行排序

for j=7:9                                          %遍历第7到第9列,将这些列中的数据进行异常值处理

A=ree(:,j);

B = filloutliers(A,'nearest','mean');   %使用filloutliers函数替换异常值

ree(:,j)=B;

end

smooth(1,:)=ree(1,3:4);              %记录数据时间跨度的开始和结束日期

smooth(2,:)=ree(size(ree,1),3:4);

length=(((smooth(2,1)-2017)*12+ smooth(2,2)-((smooth(1,1)-2017)*12+ smooth(1,2)))); %计算时间跨度,单位为月

up=data(m(1,1):max(m),6);

up=numel(unique(up));   %用unique函数来计算第6列中唯一值的数量

result1(i,1)=i;                   %企业编号i

result1(i,2)=sum(ree(:,7),1);   %第7列的总和

result1(i,3)=sum(ree(:,8),1);   %第8列的总和

result1(i,4)=sum(ree(:,9),1);   %第9列的总和

result1(i,5)=numel(m);           %总行数

result1(i,6)=void;                   %作废发票数量

result1(i,7)=valid;                  %有效发票数量

result1(i,8)=valid/numel(m);  %有效发票占比

result1(i,9)=up;                      %唯一值数量

result1(i,10)=length;              %时间跨度

stdj=std(ree(:,7)./mean(ree(:,7)));   

result1(i,11)=stdj;                  %第7列的标准差

end

参考B站;最强数模

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值