WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Probleme Einlesen und Auswertung von CSV-Dateien, Cell-Array

 

Kahof
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 29.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2013, 17:45     Titel: Probleme Einlesen und Auswertung von CSV-Dateien, Cell-Array
  Antworten mit Zitat      
Hallo Leute,
ich arbeite mit Nemo2002 in einer Seminar-Gruppe und habe eine Frage zur Umwandlung bzw. zur richtigen Arbeit mit verschiedenen Datentypen.

Hauptteil unserer Gruppenarbeit, wie Nemo2002 erklärt hat, ist die eigentliche Datenanalyse, z.B. Clusterung und statistische/ ökonometrische Auswertung. Wir sind VWLer und uns fehlt eindeutig das nötige Vorwissen in Sachen Programmierung. Das ist voll frustrierend, weil wir zur eigentlichen Datenanalyse garnicht kommen - wir haben immer noch Probleme mit dem richtigen Einlesen und Formatieren der train.csv .
[Code und train.csv sind im Anhang, s.u. .]

Ziel ist es herauszufinden (z.B. per Regression), wie die drei Zielvariablen "num_votes" (Spalte 6), "num_comments" (Sp. 7) und "num_views" (Sp. Cool von anderen Variablen z.B. "Source" (Sp. 9) beeinflusst werden. Dabei stehen z.B. in Sp. 9 bei "Source" strings drin und insgesamt sind die als Typ "cell" in t gespeichert. Der Datentyp "cell" kann anscheinend nur in "nominal" oder "double" umgewandelt werden.


Meine Fragen sind:
(i) Wie kann ich z.B. jedem Eintrag in "Source" einen eindeutigen Zahlenwert zuweisen um somit in die eigentliche Datenanalyse überzugehen?
-"@numel" geht nicht, weil verschiedene Einträge dennoch die gleiche Anzahl an characters haben können ->keine Eindeutigkeit
-erst in "nominal" und danach in "double" umwandeln ist auch nicht eindeutig - hier haben verschiedene strings ab und an dennoch den gleichen double-wert

(ii)Wie kann ich ein cell-Array (hier in Variable t gespeichert) vernünftig in ein datasetarray umwandeln? Oder wie kann ich überhaupt mit dem Datentyp "cell" vernünftig umgehen?
->siehe code: "ds= cell2dataset..." funzt nicht, weil in t keine Variablennamen in der 1.Zeile gespeichert sind. Kann ich "readvarnames" und "readobsnames" auf !false! setzen oder soll ist cell2dataset ganz und gar ungünstig?

Ich danke euch für alle helfenden und anregenden Kommentare!
Grüße



Code:


close all;

fid = fopen('train.csv');
s = textscan(fid, '%s', 'delimiter', '', 'headerlines', 1);
s = s{1}(1:100); %oder: s = s{1} (1:end);
close(fid);

%% Format the data for readability and workflow for data analysis

s = cellfun(@(s) [s, ','], s, 'UniformOutput', false);
t = regexp(s, '"([^"]*)",', 'tokens');
t = vertcat(t{:});
t = cellfun(@(t) t, t); % t is of type "cell"

%% Define column vectors and whole formated data matrice

%ds = cell2dataset(t(:,2:end)); % doesn't work!

id = str2double(t(:,1)); % in the following--> vectors of: id, latitude, longitude, ...
latitude = str2double(t(:,2));
longitude = str2double(t(:,3));
summary = nominal(t(:,4));
summary = double(summary);
description = nominal(t(:,5));
description = double(description);
num_votes = str2double(t(:,6));
num_comments = str2double(t(:,7));
num_views = str2double(t(:,Cool);
source = nominal(t(:,9));
source = double(source);
created_time = datenum(t(:,10),'yyyy-mm-dd HH:MM:SS');
tag_type = nominal(t(:,11));
tag_type = double(tag_type);

data_mat = [id,latitude,longitude,summary, description, num_votes, num_comments,num_views, source, created_time, tag_type];
% take columnvectors and create matrice "data_mat"

%clear t
Code:


train.xls
 Beschreibung:
Das ist die train.xls mit nur 100 Zeilen x 11 Spalten. (Die original train.csv hat +233000 Zeilen)

Download
 Dateiname:  train.xls
 Dateigröße:  24.54 KB
 Heruntergeladen:  837 mal
Private Nachricht senden Benutzer-Profile anzeigen


Kahof
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 29.10.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.11.2013, 17:48     Titel:
  Antworten mit Zitat      
es soll natürlich heissen:

num_views = str2double(t(:, Cool);

p.s. Kann man "Source" anstatt von "cell" in "nominal" oder "double" auch in einen float oder real oder einen anderen Datentyp umwandeln?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 02.11.2013, 18:02     Titel:
  Antworten mit Zitat      
Hallo,

bitte keine Doppelposts. Antwort siehe
http://www.gomatlab.de/csv-datensat.....en-aufspalten-t30897.html

In MATLAB gibt es zwei Gleitkommadatentypen, double und single.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.