Re: read CSV
- To: mathgroup at smc.vnet.net
- Subject: [mg117788] Re: read CSV
- From: David <dlkeith at comcast.net>
- Date: Thu, 31 Mar 2011 04:03:35 -0500 (EST)
- References: <imus7l$i3t$1@smc.vnet.net>
On Mar 30, 2:13 am, Alan <alan.is... at gmail.com> wrote: > I've received some files formatted like below. > How can I read selected columns into a list? > I'm coming from a background where I'd read in each line, > discarding the first, then (in this case at least) > split on the comma, and coerce the type. So I'm happy > to do that if I can figure out how. (Naturally I could > preprocess the data into a form that say ReadList > likes better, but I'm looking for a pure Mathematica solution.) > > Thanks, > Alan Isaac > > "x","y","color","pen down?" > "0","0.26161459854014585","105","true" > "1","0.2665251497682828","105","true" > "2","0.29244385081680907","105","true" > "3","0.31995416628471895","105","true" Hello Alan, You can do this using Import to read the data into a list structure, and then work with the list structure to extract and format the data as you please. I copied your data and made it into a text file. I then used Import to read the text file, forcing CSV format, and extracted the XY column data. Below is a notebook expression. Copy the notebook expression as text. The open a new Mathematica notebook and paste the expression into it. Say yes to interpret the notebook. When you execute the notebook it will open a dialog box allowing you to select your data file. It will then import the file and process it. Kind regards, David ----------------------------------------------- Notebook[{ Cell[CellGroupData[{ Cell["Choose the file using a dialog", "Subsection", CellChangeTimes->{{3.510498132049691*^9, 3.510498154778931*^9}}], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"file", "=", RowBox[{ "SystemDialogInput", "[", "\"\<FileOpen\>\"", "]"}]}]], "Input", CellChangeTimes->{{3.510497968155803*^9, 3.5104980119450803`*^9}}], Cell[BoxData["\<\"C:\\\\Users\\\\David\\\\Documents\\\\Tools\\\\\ Mathematica\\\\read\\\\data.txt\"\>"], "Output", CellChangeTimes->{{3.510498006703471*^9, 3.510498022787099*^9}}] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Set the directory to that of the selected file", "Subsection", CellChangeTimes->{{3.510498158819338*^9, 3.5104981918757963`*^9}}], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"SetDirectory", "[", RowBox[{"DirectoryName", "[", "file", "]"}], "]"}]], "Input", CellChangeTimes->{{3.510498027108307*^9, 3.5104980559839573`*^9}}], Cell[BoxData["\<\"C:\\\\Users\\\\David\\\\Documents\\\\Tools\\\\\ Mathematica\\\\read\"\>"], "Output", CellChangeTimes->{3.51049805759076*^9}] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Import the file as a CSV", "Subsection", CellChangeTimes->{{3.510498201516613*^9, 3.5104982177406416`*^9}}], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"raw1", "=", RowBox[{"Import", "[", RowBox[{"file", ",", "\"\<CSV\>\""}], "]"}]}]], "Input", CellChangeTimes->{{3.510498065453174*^9, 3.510498079383999*^9}, { 3.510498523516779*^9, 3.510498526917585*^9}, { 3.5104985870424905`*^9, 3.5104985881812925`*^9}, 3.5104986942770786`*^9}], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"\<\"x\"\>", ",", "\<\"y\"\>", ",", "\<\"color\"\>", ",", "\<\"\\\"pen down?\\\" \"\>"}], "}"}], ",", RowBox[{"{", RowBox[{ "0", ",", "0.26161459854014585`", ",", "105", ",", "\<\"\\\"true\\\" \"\>"}], "}"}], ",", RowBox[{"{", RowBox[{ "1", ",", "0.2665251497682828`", ",", "105", ",", "\<\"\\\"true\\\" \"\>"}], "}"}], ",", RowBox[{"{", RowBox[{ "2", ",", "0.29244385081680907`", ",", "105", ",", "\<\"\\\"true\\\" \"\>"}], "}"}], ",", RowBox[{"{", RowBox[{ "3", ",", "0.31995416628471895`", ",", "105", ",", "\<\"\\\"true\\\" \"\>"}], "}"}], ",", RowBox[{"{", "\<\"\"\>", "}"}], ",", RowBox[{"{", "\<\"\"\>", "}"}], ",", RowBox[{"{", "\<\"\"\>", "}"}], ",", RowBox[{"{", "\<\"\"\>", "}"}]}], "}"}]], "Output", CellChangeTimes->{ 3.5104980844072075`*^9, 3.510498527853586*^9, {3.510498562737648*^9, 3.5104985900844955`*^9}, 3.5104986954470806`*^9}] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["\<\ Select all records with length 4\ \>", "Subsection", CellChangeTimes->{{3.5104987265535355`*^9, 3.5104987458819695`*^9}, { 3.5104989656159573`*^9, 3.510498975849575*^9}}], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"raw2", "=", RowBox[{"Select", "[", RowBox[{"raw", ",", " ", RowBox[{ RowBox[{ RowBox[{"Length", "[", "#", "]"}], "\[Equal]", "4"}], "&"}]}], "]"}], " ", RowBox[{"(*", " ", RowBox[{"read", " ", "about", " ", "pure", " ", "functions"}], " ", "*)"}]}]], "Input", CellChangeTimes->{{3.5104986985826864`*^9, 3.510498721140326*^9}, { 3.5104987519035797`*^9, 3.5104987663336053`*^9}}], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"\<\"x\"\>", ",", "\<\"y\"\>", ",", "\<\"color\"\>", ",", "\<\"\\\"pen down?\\\" \"\>"}], "}"}], ",", RowBox[{"{", RowBox[{ "0", ",", "0.26161459854014585`", ",", "105", ",", "\<\"\\\"true\\\" \"\>"}], "}"}], ",", RowBox[{"{", RowBox[{ "1", ",", "0.2665251497682828`", ",", "105", ",", "\<\"\\\"true\\\" \"\>"}], "}"}], ",", RowBox[{"{", RowBox[{ "2", ",", "0.29244385081680907`", ",", "105", ",", "\<\"\\\"true\\\" \"\>"}], "}"}], ",", RowBox[{"{", RowBox[{ "3", ",", "0.31995416628471895`", ",", "105", ",", "\<\"\\\"true\\\" \"\>"}], "}"}]}], "}"}]], "Output", CellChangeTimes->{3.510498721920327*^9}] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["\<\ Select rows 2 through the last and the XY columns only\ \>", "Subsection", CellChangeTimes->{{3.510498237474676*^9, 3.510498300498787*^9}, { 3.510498775678022*^9, 3.5104987838836365`*^9}, { 3.5104988263469105`*^9, 3.5104988476877484`*^9}}], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"data", "=", RowBox[{"raw2", "[", RowBox[{"[", RowBox[{ RowBox[{"2", ";;"}], ",", RowBox[{"{", RowBox[{"1", ",", "2"}], "}"}]}], "]"}], "]"}], " ", RowBox[{"(*", " ", RowBox[{ "look", " ", "up", " ", "Part", " ", "to", " ", "see", " ", "what", " ", "this", " ", "means"}], " ", "*)"}]}]], "Input", CellChangeTimes->{{3.5104983063175974`*^9, 3.5104983592640905`*^9}, { 3.5104984602274675`*^9, 3.5104984635502734`*^9}, { 3.5104986662438297`*^9, 3.5104986664310303`*^9}, { 3.510498792198451*^9, 3.5104988078140783`*^9}}], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{"0", ",", "0.26161459854014585`"}], "}"}], ",", RowBox[{"{", RowBox[{"1", ",", "0.2665251497682828`"}], "}"}], ",", RowBox[{"{", RowBox[{"2", ",", "0.29244385081680907`"}], "}"}], ",", RowBox[{"{", RowBox[{"3", ",", "0.31995416628471895`"}], "}"}]}], "}"}]], "Output", CellChangeTimes->{ 3.5104983620252953`*^9, 3.5104984642054744`*^9, 3.5104986160897417`*^9, 3.5104986673202314`*^9, { 3.510498786754041*^9, 3.510498808375679*^9}}] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Plot the strokes", "Subsection", CellChangeTimes->{{3.5104988800734053`*^9, 3.5104988889654207`*^9}}], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"ListLinePlot", "[", "data", "]"}]], "Input", CellChangeTimes->{{3.510498861134972*^9, 3.5104988735837936`*^9}}], Cell[BoxData[ GraphicsBox[{{}, {}, {Hue[0.67, 0.6, 0.6], LineBox[{{0., 0.26161459854014585`}, {1., 0.2665251497682828}, { 2., 0.29244385081680907`}, {3., 0.31995416628471895`}}]}}, AspectRatio->NCache[GoldenRatio^(-1), 0.6180339887498948], Axes->True, AxesOrigin->{0, 0.262}, PlotRange->{{0., 3.}, {0.26161459854014585`, 0.31995416628471895`}}, PlotRangeClipping->True, PlotRangePadding->{ Scaled[0.02], Scaled[0.02]}]], "Output", CellChangeTimes->{{3.510498867530983*^9, 3.5104988755337973`*^9}}] }, Open ]] }, Open ]] }, WindowSize->{707, 647}, WindowMargins->{{24, Automatic}, {Automatic, 30}}, FrontEndVersion->"8.0 for Microsoft Windows (64-bit) (February 23, \ 2011)", StyleDefinitions->"Default.nb" ]