分析数据c#
本文关键字:数据 | 更新日期: 2023-09-27 18:08:00
我正在上c#入门课,我们的资源糟透了。
我已经使用StreamReader输入了一个csv文件,我想做的是分析某个特征的信息。让我困惑的是我如何让我的程序知道从每行选择数据的某些部分?比如我想选择最大的数
例如,如果有一行是:
2003-04-12, 334, 367, 289
我要在这里添加一个语句吗?:
input = reader.ReadLine();
while (input != null)
{
...
input = reader.ReadLine(); //next row
}
reader.Close();
使用Regex捕获组可能是您正在寻找的。
像这样:
var lineRegex = new Regex(@"(?<year>[0-9]+)'-(?<month>[0-9]+)'-(?<day>[0-9]+), (?<first>[0-9]+), (?<second>[0-9]+), (?<third>[0-9]+)");
// ...
var matches = lineRegex.Matches(input);
结果现在在matches元素的集合中。这只是一个例子,创建正确的Regex字符串是一个任务在它自己的权利。
最简单的方法是:a)将行分成几部分,b)使用.TryParse()
安全地将这些部分解析为数字
static void Main(string[] args)
{
var reader=System.IO.File.OpenText("Data.csv");
List<double[]> data=new List<double[]>();
var line=reader.ReadLine();
double max=0;
while(!reader.EndOfStream)
{
line=reader.ReadLine();
string[] parts=line.Split(',');
//parse first part as date
DateTime date=DateTime.Parse(parts[0]);
//parse rest of parts as float/doulbe/decimal
double[] values=new double[parts.Length-1];
for(int i=0; i<values.Length; i++)
{
//for each value in row convert string to number safely.
double x = 0;
double.TryParse(parts[i+1], out x);
values[i]=x;
}
//keep data values in list
data.Add(values);
//keep highest from 1st column
if(values[0]>max) { max=values[0]; }
}
reader.Close();
}