7
votes

Mathematica - Importer des colonnes CSV et processus?

J'ai un fichier CSV formaté comme: xxx pré>

et j'aimerais l'importer en mathématica, puis avoir chaque colonne séparée dans une liste afin que je puisse faire certains mathématiques sur le Colonne sélectionnée. P>

Je sais que je peux importer les données avec: p> xxx pré>

alors je peux séparer les colonnes avec ceci: P>

{"0.0023709", "8.5752e-007", "4.847e-008"}


1 commentaires

Quelle version de Mathematica utilisez-vous? Mathematica 7 fonctionne bien pour moi. Essayez également d'utiliser importer ["data.csv", "csv"] .


4 Réponses :


15
votes

kennytm est correct.

data = Import["data.csv", "CSV"];
column1 = data[[All,1]]
column2 = data[[All,2]]
...


2 commentaires

Voici la documentation pour importer [..., "CSV"] : référence.wolfram.com/mathematica/ref/format/csv.html


Remarque, cela ne fonctionnerait pas si chaque ligne de données possède une colonne de numérotation supplémentaire comme: TV, radio, journal, vente \ n 1 230,1,37.8,69,2,22,1 \ N 2 44.5,39.3,45.1,10.4 \ n



3
votes

Vous pouvez corriger la notation à l'aide de stringreplace [] code> .

{col1,col2,col3} = ToExpression[...] & @ Transpose[Import["data.csv", "CSV"]];


0 commentaires

4
votes

La réponse de Davorak est la bonne si vous avez besoin importer un fichier CSV entier comme une matrice. Toutefois, si vous avez une seule chaîne que vous devez convertir de la notation exponentielle de style C / FORTRAN, vous pouvez utiliser importateur code> avec différents arguments pour le format. À titre d'exemple, il existe

In[3]:= Module[{stream = StringToStream["1.0e6"], number},
          number = Read[stream, "Number"];
          Close[stream];
          number]
Out[3]= 1.*10^6


0 commentaires

2
votes

en MMA7, j'utilise l'argument "éléments". En fait, je ne peux pas importer même un fichier .csv sans spécifier l'élément:

aa = importer ["data.csv", "données"]

Lorsque vous faites cela, toutes les chaînes sont automatiquement converties en expressions: Tête / @ Flatten @ Aa est {réel, réel, ....}. En outre, "8.5752e-007" devient 8.5752 * 10 ^ 7, une expression de la MMA légale.

Le résultat de l'importation est une liste 1xn {{...}}.

Donc, transposez @ AA donne la liste NX1 {{.}, {.}, ....}.

Je pense que c'est le format que vous vouliez.


0 commentaires