Как прочитать несколько CSV-файлов в папке в
Age
я хочу рассчитать срединный этого столбца вместе с другими значениями, которые являются выше или ниже среднего значенияЧто я уже пробовал:
.
Age
я хочу рассчитать срединный этого столбца вместе с другими значениями, которые являются выше или ниже среднего значения
Это легко вычислить срединный[^], потому что это среднее/центральное значение* упорядоченного списка.
* - для четного числа значений - это среднее значение двух значений из середины упорядоченного списка
Для получения более подробной информации перейдите по ссылке выше.
//case #1 - even number of values //int[] ages = {100,22,13,43,25,61,17,80}; //result: AVG(25,43) = 34 //case #2 - odd number of values int[] ages = {100,22,13,43,25,61,17,80,29}; //result: 29 //does the number of values is even? bool isEvenNumberOfValues = ages.Length % 2 == 0; int toSkip = isEvenNumberOfValues ? (ages.Length/2)-1 : ages.Length/2; int toTake = isEvenNumberOfValues ? 2 : 1; //get middle value from ordered list var result = ages.OrderBy(x=>x).Skip(toSkip).Take(toTake).Average(); Console.WriteLine("Median for: [{0}] is {1}", string.Join(",", ages.OrderBy(x=>x)), result);
Median
функция (основанная на приведенном выше коде). Один Median
функция должна быть:pięćd :)
Мучас Грасиас!
;)
Здесь есть интересная библиотека для чтения и письма CSV файлы: GitHub - JoshClose/CsvHelper: библиотека для чтения и записи CSV-файлов[^]
Вы также можете использовать LINQ, вот пример для расчета среднего возраста:
// Read CSV using LINQ static void ReadFileLinq(string fileName) { IEnumerable<string> strCSV = File.ReadLines(fileName, Encoding.ASCII).Skip(1); var results = from str in strCSV let tmp = str.Split(',') .Select(x => x.Replace("?", string.Empty)) select new { Age = DateTime.Parse(tmp.ElementAt(0))}; // caching for performance var query = results.OrderBy(x => x.Age)); foreach (var item in query) { Console.WriteLine(item.Age); } Console.WriteLine(string.Empty); Console.WriteLine("Average age = " + query.Average(x => x.Age)); Console.WriteLine(string.Empty); }
5ed!
Начните с разработки того, как вы собираетесь читать CSV-данные: существует целая куча способов, включая написание собственного CSV-процессора, но Быстрый читатель CSV[^] это хороший способ начать.
Когда у вас есть данные, обработка столбца для получения среднего, медианы или среднего значения тривиальна!
5ed!
Цитата:Я хочу прочитать Csv-файлы, которые находятся в папке sample(name)
Хотя ваш ответ неполон, я проголосовал 5, чтобы противодействовать голосованию вниз.
Спасибо.
Вопрос тоже не очень полный.