Модуль 1 - Школа анализа инженерных данных
Первичный анализ данных — домашнее задание
Цель: Научиться загружать данные из разных форматов, выполнять первичный анализ и преобразовывать таблицы.
Входные данные:
Steel_Industry.csv— данные энергопотребления сталелитейного предприятия (~35 000 строк)температура.txt— вектор температуры окружающей среды
Формат сдачи: В проверочную систему Etude нужно вставить код из секции с пометкой ✍️.
Важно: Код должен сохранять результат в переменную, указанную в задании.
# ⚙️ ПОДГОТОВИТЕЛЬНЫЙ КОД - Выполните эту ячейку перед началом выполнения работы
Pkg.add("XLSX")
cd( @__DIR__ )
✏️ Задание 1
Выведите на экран размерность набора данных df_energy.
Подсказка: Функция size возвращает размерность набора данных.
# ✍️ ВАШ КОД — ЗАДАНИЕ 1
using CSV, DataFrames
df_energy = CSV.read("data/Steel_Industry.csv", DataFrame)
ans = # здесь напишите ваш код
Ожидаемый вывод программы: (35040, 11)
✏️ Задание 2
Выведите на экран первые десять элементов столбца Usage_kWh из набора данных df_energy.
Подсказка: Указав наименование набора данных в качестве первого аргумента функции first(), и количество элементов в качестве второго аргумента, можно получить первые значения указанного количества строк. Обратиться к столбцу можно через точку.
# ✍️ ВАШ КОД — ЗАДАНИЕ 2
using CSV, DataFrames
df_energy = CSV.read("data/Steel_Industry.csv", DataFrame)
ans = # здесь напишите ваш код
Ожидаемый вывод программы:
10-element Vector{Float64}:
3.17
4.0
3.24
...
✏️ Задание 3
Выведите на экран количество элементов вектора с температурой окружающей среды температура.
Подсказка: Используйте функцию length() для вывода количества элементов одномерного массива.
# ✍️ ВАШ КОД — ЗАДАНИЕ 3
using DelimitedFiles
температура = readdlm("data/температура.txt");
ans = # здесь напишите ваш код
Ожидаемый вывод программы: 35040
✏️ Задание 4
Выведите минимальное и максимальное значение из вектора температура. Формат вывода: (мин_значение, макс_значение).
Подсказка: Используйте функции maximum(), minimum() или extrema(). Для вывода вам может потребоваться конструкция вида print("($t_min, $t_max)").
# ✍️ ВАШ КОД — ЗАДАНИЕ 4
print( ваш_код_здесь )
Ожидаемый вывод программы: (-28.9, 37.4)
✏️ Задание 5
Удалите столбцы NSM, WeekStatus, Day_of_week, Load_Type из набора данных df_energy. После удаления выведите на экран имена столбцов набора данных.
Подсказка:
- Добавив перед каждым наименованием удаляемых столбцов двоеточие, перечислите их через запятую, поместив в квадратные скобки (например:
[:NSM, ...]). - Далее поместите это внутрь функции
Not(пример:Not([...])). - Затем используйте функцию
select!, в качестве первого аргумента — наименование набора данных, в качестве второго — функциюNot([...])с перечисленными именами удаляемых столбцов. - Для вывода наименований столбцов набора данных, используйте функцию
names.
# ✍️ ВАШ КОД — ЗАДАНИЕ 5
using CSV, DataFrames
df_energy = CSV.read("data/Steel_Industry.csv", DataFrame)
# здесь напишите ваш код
✏️ Задание 6
Добавьте в набор данных df_energy столбец Temperature_C. Присвойте ему значения из вектора температура.
Подсказка:
- После названия объекта DataFrame поставьте точку.
- После точки, не ставя пробел, напишите наименование нового столбца.
- Присвойте значение вектора с помощью знака
=. - Пример:
набор_данных.новый_столбец = новый_вектор.
# ✍️ ВАШ КОД — ЗАДАНИЕ 6
using CSV, DataFrames, XLSX, DelimitedFiles
df_energy = CSV.read("data/Steel_Industry.csv", DataFrame, dateformat="dd/mm/yyyy HH:MM")
температура = vec(readdlm("data/температура.txt"))
# здесь напишите ваш код
# Визуально убедитесь в том, что столбец появился в конце таблицы
df_energy
В проверочной системе используется следующий код для проверки правильности выполнения задания:
# ПРОВЕРОЧНЫЙ КОД в Etude
print(first(df_energy, 3).Temperature_C)
Ожидаемый вывод программы: [-12.3, -9.8, -9.7]
Заключение
Надеемся, что вы легко справились с отправкой этого задания на проверку. Теперь вы готовы к более сложным задачам, которые нас ждут в следующих главах!
А пока выведем наши наборы данных для визуальной инспекции:
var_plot1 = "Temperature_C" # @param ["Usage_kWh", "Lagging_Current_Reactive_Power_kVarh", "Leading_Current_Reactive_Power_kVarh", "CO2_tCO2_", "Lagging_Current_Power_Factor", "Leading_Current_Power_Factor", "NSM", "WeekStatus", "Day_of_week", "Load_Type", "Temperature_C"]
var_plot2 = "CO2_tCO2_" # @param ["Usage_kWh", "Lagging_Current_Reactive_Power_kVarh", "Leading_Current_Reactive_Power_kVarh", "CO2_tCO2_", "Lagging_Current_Power_Factor", "Leading_Current_Power_Factor", "NSM", "WeekStatus", "Day_of_week", "Load_Type", "Temperature_C"]
# Убедитесь, что вы создали столбец Temperature_C
gr()
plot(
plot(df_energy.date, df_energy[!,var_plot1], label=var_plot1),
plot(df_energy.date, df_energy[!,var_plot2], label=var_plot2), layout=(2,1)
)
