Попытка перевести мою подпрограмму Matlab для загрузки и подготовки данных к Python. Застрял в pandas - PullRequest
1 голос
/ 25 апреля 2020

это мой первый пост, и я боролся с этой проблемой уже несколько дней. Следующий код - это код Matlab, который я обычно использую для загрузки своих данных (файлы .csv) и подготовки их к дальнейшим вычислениям.

%I use this later on to predefine my array because they need to have to same length for calculations
maxind = 400; 

% i is given a vector (like test_numbers = [1 2 3]) I get from the user so I can iterate over the numbers of test specimen
for i = test_numbers 
    % Setup the Import Options and import the data
    opts = delimitedTextImportOptions("NumVariables", 4);
    % Specify range and delimiter
    opts.DataLines = [2, Inf];
    opts.Delimiter = ";";
    % Specify column names and types
    opts.VariableNames = ["time", "force", "displ_1", "displ_2"];
    opts.VariableTypes = ["double", "double", "double", "double"];
    % Specify file level properties
    opts.ExtraColumnsRule = "ignore";
    opts.EmptyLineRule = "read";
    % Import the data
    %Here I build the name and read the files/ the csv files are in the same folder as the main program.
    data_col = readtable(['specimen_name',num2str(i),'.csv'], opts);

    Data.force(:,i)=nan(maxind,1);
    Data.force(1:length(data_col.time),i)=data_col.force;
    Data.displ(:,i)=nan(maxind,1);
    Data.displ(1:length(data_col.time),i)=nanmean([data_col.displ_1,data_col.displ_2]')';
    Data.time(:,i)=nan(maxind,1);
    Data.time(1:length(data_col.time),i)=data_col.time;
    Data.name(i)={['specimen_name',num2str(i)]};
    % Clear temporary variables
    clear opts
end

Теперь я должен использовать Python вместо Matlab, и я начал с pandas, чтобы прочитать мой CSV как DataFrame. Теперь мой вопрос. Есть ли способ получить доступ к моим данным, как в этой части моего кода Matlab, или я не должен в первую очередь использовать кадры данных, чтобы делать что-то подобное? (Я знаю, что могу получить доступ к своим данным с помощью имени столбца, но я застрял, пытаясь сослаться на мои данные, такие как Data.force (1: длина (data_col.time), i) в новом фрейме данных)

Data.force(:,i)=nan(maxind,1);
Data.force(1:length(data_col.time),i)=data_col.force;
Data.displ(:,i)=nan(maxind,1);
Data.displ(1:length(data_col.time),i)=nanmean([data_col.displ_1,data_col.displ_2]')';
Data.time(:,i)=nan(maxind,1);
Data.time(1:length(data_col.time),i)=data_col.time;
Data.name(i)={['specimen_name',num2str(i)]};

Большое спасибо заранее за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...