Добро пожаловать в Engee
Импорт данных
Цель: Научиться подключать внешние источники данных и файлы, чтобы загружать из них данные.
Вводное видео
Транскрипция видео
Панель "Файлы" в Engee позволяет переходить по файловой системе и открывать файлы, расположенные в вашем виртуальном окружении.
Здесь могут размещаться разные источники данных, которые вы можете использовать в своих скриптах. Вы уже видели, как это делается в прошлых упражнениях. Пара простых и распространённых вариантов импорта данных включает использование JLD2 файлов для работы с множеством переменных сразу, либо CSV файлов для импорта одной таблицы за один раз. После импорта данные из файла появятся в окне Переменных.
Эти данные можно поместить в массив, например, в объект типа Matrix, а можно – в более сложный объект DataFrame. Тип данных DataFrame отличается тем, что он создан именно для анализа данных. Например, в нем реализованы разные команды, обычные для работы с базами данных, такие как join или group.
Как всегда, язык Julia определяет типы данных самостоятельно, но вы можете указать их вручную.
Часто первая строка таблицы содержит названия столбцов. При открытии файлов библиотека DataFrame сохраняет эти названия, чтобы вы могли обращаться по имени к каждой отдельной переменной, описывающей объекты (строки) в таблице.
Упражнение 1: Импортируем табличные данные
using CSV, DataFrames;
cd(@__DIR__);
elements = CSV.read("elements.csv", DataFrame);
display(elements)
Задача 1
Извлечь переменную (столбец) из таблицы DataFrame можно при помощи обращения через точку.
таблица.Имя_Переменной
elements.Density столбцу с названием d.
Подсказка
Чтобы присвоить данные некоторой переменной из таблицы новому столбцу, воспользуйтесь конструкцией colVec = tableName.VariableName.
Решение
d = elements.Density
Задача 2
При работе с таблицами желательно хранить все данные в одном месте на протяжении всех операций. Чтобы не создавать отдельных переменных, вы можете присваивать результаты расчета новым столбцам все той же таблицы.
data.HeightMeters = data.HeightYards*0.9144
Если переменной data.HeightMeters не существует, то Julia создаст новый столбец с именем HeightMeters.
elements.Density на elements.Volume1. Используйте поэлементное перемножение (оператор .*).
Присвойте результат переменной elements.Mass.
Подсказка
Перемножьте две переменные (два столбца) таблицы elements, поместив между ними оператор .*.
Решение
elements.Mass = elements.Density .* elements.Volume1
Задача 3
Чтобы отсортировать значения в таблице, вызовите функцию sort, передайте ей название таблицы в качестве первого аргумента, а вторым укажите один или несколько столбцов. Если задать в качестве индекса список столбцов, даже состоящий из одного элемента, то на выходе получится матрица, имеющая тип данных DataFrame.
data = sort(data, ["Var1", "Var2"])
Замечание: при сохранении результата операции над массивом в тот же самый массив можно использовать команды, работающие по месту аргумента (in-place). Это те же самые команды, но с уже знакомым вам модификатором восклицательный знак (!). Приведенный выше пример можно переписать следующим образом, и работать он будет идентично:
sort!(data, ["Var1", "Var2"])
elements по переменной Mass. Присвойте результат переменной elements.
Подсказка
Вызовите команду sort с аргументами elements и Mass. Не забудьте сохранить результат в ту же переменную elements.
Решение
elements = sort(elements, "Mass")
Задача 4*
Обращение через точку data.Var1 позволяет получить все значения столбца Var1. Но что если вам нужно получить не весь столбец, а только некоторые из его строк?
Попробуйте получить значения массы первых трех элементов в отсортированной таблице при помощи команды:
top3 = elements[1:3, "Mass"]
Кстати, если запросить столбец ["Mass"] в квадратных скобках, то Julia посчитает, что вы хотите получить на выходе матрицу. Результат операции тоже будет иметь тип DataFrame. Если же написать "Mass" без квадратных скобок, то Julia упростит результат до вектора.
Больше о работе с данными в Julia с помощью библиотеки DataFrames можно прочитать в документации.