用matlab处理excel用电数据

1. 查找一整天数据全为0或缺失数据达到50%天数的用户,并说明哪些月份有缺失或为零
2. 查找一整天数据为非零的同一值的用户,并说明这样的天数有多少天

% 读取 Excel 文件
filename = 'your_excel_file.xlsx'; % 替换为你的文件名
data = readtable(filename);

% 查看读取的列名,确保它们正确
disp(data.Properties.VariableNames);

% 获取总用户数
numUsers = numel(unique(data{:, 'SerialNumber'}));

% 1. 查找一整天数据全为0或缺失数据达到50%天数的用户,并说明哪些月份有缺失或为零
zeroOrMissingDataUsers = [];

for i = 1:numUsers
    % 获取每个用户的全部数据
    userData = data(data{:, 'SerialNumber'} == i, :); 
    numZeroOrMissingDays = 0;
    monthsWithIssues = [];
    
    for j = 1:height(userData)
        dailyData = userData{j, 7:end};
        
        % 判断是否一整天的数据全为0或全为NaN
        if all(dailyData == 0) || all(isnan(dailyData))
            numZeroOrMissingDays = numZeroOrMissingDays + 1;
            % 记录有问题的月份
            currentMonth = month(userData{j, 'Date'});
            monthsWithIssues = [monthsWithIssues; currentMonth];
        end
    end
    
    % 如果用户有超过50%的天数据全为0或缺失
    if numZeroOrMissingDays >= 0.5 * height(userData)
        zeroOrMissingDataUsers = [zeroOrMissingDataUsers; i];
        disp(['用户 ' num2str(i) ' 有 ' num2str(numZeroOrMissingDays) ' 天数据全为0或缺失,占全年天数50%以上。']);
        disp('这些天涉及到的月份为:');
        disp(unique(monthsWithIssues));
    end
end

% 2. 查找一整天数据为非零的同一值的用户,并说明这样的天数有多少天
constantValueUsers = [];

for i = 1:numUsers
    % 获取每个用户的全部数据
    userData = data(data{:, 'SerialNumber'} == i, :);
    constantDaysCount = 0;
    
    for j = 1:height(userData)
        dailyData = userData{j, 7:end};
        
        % 查找所有数据点都相同且非零的天
        if all(dailyData == dailyData(1)) && dailyData(1) ~= 0
            constantDaysCount = constantDaysCount + 1;
        end
    end
    
    if constantDaysCount > 0
        constantValueUsers = [constantValueUsers; i];
        disp(['用户 ' num2str(i) ' 有 ' num2str(constantDaysCount) ' 天的所有数据点为同一非零值。']);
    end
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值