NewTechAudit
32

Deedle как альтернатива pandas под C#

Обработка данных. Как с помощью библиотеки Deedle получить результат аналогичный использованию метода Pandas в Python?

В закладки

Данные – это новое золото. Данные рассматриваются как чрезвычайно ценный ресурс, который может предоставить организациям действенную информацию, которая повысит их деловые возможности. Данные можно сравнить с нефтью: при «перегонке» через МО и ИИ можно получить ценный продукт. В последнее время языком, на котором ведется общение с данными — является Python (с редкими «вкраплениями» других языков). Причин для этого много, не будем пытаться выделить все, но, безусловно, одной из основных причин является наличие удобного инструментария для работы с данными, например pandas. Pandas — программная библиотека на языке Python для обработки и анализа данных, которая предоставляет специальные структуры данных и операции для манипулирования числовыми таблицами и временными рядами. Имеется довольно большой набор возможностей по работе с многомерными структурированными наборами информации, в первую очередь предназначенных для очистки и первичной оценки данных по общим показателям (например, по среднему значению, квантилям и некоторым другим статистическим показателям).

Однако работа с данными — это не всегда Python. Под большую часть популярных языков существуют различные наборы библиотек, которые позволяют получать схожий, пусть и не всегда исчерпывающий функционал. Например, для C# есть Accord.Net, который решает множество задач в рамках широкого понятия «Data Science». Однако, манипуляция с внешними данными не всегда выглядит так удобно и легко, как выглядела бы на Python с использованием pandas. На помощь в данной ситуации может прийти Deedle.

Deedle — это библиотека с открытым исходным кодом .NET для программирования фреймов данных. Deedle позволяет вам манипулировать данными способом, аналогичным R-фреймам данных и фреймам данных Pandas в Python

Как сообщает нам сайт Deedle:

Установка Deedle достаточно проста и полностью аналогична установке любого другого внешнего пакета:

  1. Откройте диспетчер пакетов (Инструменты | Диспетчер пакетов NuGet | Консоль диспетчера пакетов)
  2. Установите Deedle с помощью следующей команды: PM> Install-Package Deedle

Попробуем, решить какую-нибудь несложную задачу с ее помощью. Предположим, у нас есть ежедневные данные по стоимости каких-либо акций. Пусть в этих данных будут: дата, стоимость на момент открытия, максимальная стоимость, минимальная стоимость, стоимость на момент закрытия и количество. Допустим, нам интересно было бы узнать разницу между открытием и закрытием и, например, вычислить ежедневный доход.Для начала считываем данные и выводим их на экран

var root = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName; var aaplData = Frame.ReadCsv(Path.Combine(root, "table_aapl.csv")); Console.WriteLine("-- Raw Data --"); aaplData.Print();

Получаем:

Пока все просто, для того чтобы выполнить необходимые вычисления, было бы не лишним проиндексировать данные по дате. Это также происходит довольно просто

var aapl = aaplData.IndexRows("Date").SortRowsByKey();

После этого, наши данные выглядят так

Чтобы рассчитать процентное изменение от открытия к закрытию нужно сделать следующее (вычисляем значение и добавляем к нашим данным):

var openCloseChange = (( aapl.GetColumn("Close") - aapl.GetColumn("Open") ) / aapl.GetColumn("Open")) * 100.0; aapl.AddColumn("openCloseChange", openCloseChange);

И снова, никаких сложностей. На выходе имеем

Наконец, после смещения цен закрытия на одну строку и вычисления дневной доходности таким образом:

var dailyReturn = aapl.Diff(1).GetColumn("Close") / aapl.GetColumn("Close") * 100.0; aapl.AddColumn("dailyReturn", dailyReturn);

Получаем следующие данные

Выше приводится пример проекта Deedle. Можно заметить, что операции манипулирования, для которых потребовались бы определенные навыки и немалое количество строк кода на C#, можно выполнить всего в пару «движений», что отлично работает в случае если мы применяем Deedle в совокупности с Accord.Net, при разработке ML решений для C# и.Net.

Лайфхаки IT, проверенные AI-решения для стандартных задач
{ "author_name": "NewTechAudit", "author_type": "editor", "tags": [], "comments": 0, "likes": 1, "favorites": 1, "is_advertisement": false, "subsite_label": "newtechaudit", "id": 127889, "is_wide": false, "is_ugc": false, "date": "Mon, 18 May 2020 15:07:41 +0300", "is_special": false }
Онлайн-марафон «2 шага до уровня pro в маркетинге недвижимости»
26 мая Онлайн Бесплатно
Объявление на vc.ru
0
Комментариев нет
Популярные
По порядку

Прямой эфир