Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет бд 3 сем.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
3.66 Mб
Скачать

Лабораторная работа №3 группировка и агрегирование с помощью pandas

Целью лабораторной работы является освоение:

  • функций группировки и агрегирования анализа данных на алгоритмическом языке Python;

  • вариантов агрегирования данных;

  • использования именованного агрегирования;

  • функции groupby для резюмирования данных;

  • использования подсчета для агрегирования данных;

  • работы с групповыми объектами (сгруппированными);

  • работы с текстом при группировании данных.

Задание на выполнение и ход лабораторной работы:

  1. В Интернете были найдены данные в соответствии с тематикой варианта и сформирован из них файл с исходными данными для дальнейшего анализа. Это Датасет с героями игры Лига легенд (открыт через блокнот):

  1. Сформулированы и сформированы для анализа данных:

  • признаки (3-7) для вычисления агрегатных функций (7-10),

  • признаки для группирования данных (2-3) и способы его выполнения,

  • структуру групповых объектов (вложенных) (2-3 уровня);

  • необходимые графики/гистограммы (2-3).

  1. Разработать программу на алгоритмическом языке Python, которая выполняет п.2.

Листинг программы:

import pandas as pd import matplotlib.pyplot as mp ex = pd.read_csv('lol.csv', delimiter=';') gr1 = ex.groupby('Health').max()[['Attack damage']] print("Группировка по здоровью силы атаки от максимального значения до минимального") print(gr1) gr6 = ex.groupby('Health').min()[['Attack damage']] print("Группировка по здоровью силы атаки от минимального значения до максимального") print(gr6) gr2 = ex.groupby('Attack damage').max()[['Move. speed']] print("Группировка по силы аттаки скорости движения от максимального значения до минимального") print(gr2) gr7 = ex.groupby('Attack damage').min()[['Move. speed']] print("Группировка по силе аттаки скорости движения от минимального значения до максимального") print(gr7) gr3 = ex.groupby('Magic resist.').sum()[['Armor']] print("Сумма по магическому сопротивлению снаряжения") print(gr3) gr4 = ex.groupby('Base AS').count()[['Selection radius']] print("Количество баз") print(gr4) gr5 = ex.groupby('Attack range').mean(numeric_only=True)[['Armor']] print("Среднее значение атаки") print(gr5) agg_funk = {'Attack damage': ['max', 'min', 'count']} a = ex.groupby('roles').agg(agg_funk) print(ex.groupby(['roles']).agg(agg_funk).round(2)) ls = [ "max", "min", "count"] mp.plot(a) mp.legend(ls) mp.show()

Вывод:

  1. На основании полученных результатов и построенных графиков сделан вывод о изучаемых аспектах предметной области.

Вывод: на основе проведенной работы можно сделать вывод о наиболее популярном классе среди игроков. Таким образом, самыми популярными оказались specialist и fighter, juggernaut. Самым популярным среди игроков оказался specialist.

Лабораторная работа №4 регрессионный анализ

Целью лабораторной работы является освоение:

  • выполнению парного регрессионного анализа, в том числе множественного, с использованием библиотек и функций алгоритмического языка Python,

  • визуализации результатов регрессионного анализа средствами алгоритмического языка Python,

  • объяснению результатов.

Задание на выполнение и ход лабораторной работы:

Разработаны 2 (две) программы на алгоритмическом языке Python, которые в соответствии с выданным вариантом выполняют следующее:

  1. В соответствии со своим вариантом для заданной предметной области:

  1. По данным наблюдений двух величин выполнить регрессионный анализ, найти коэффициент корреляции и уравнение линии регрессии. Построить ее график, а также диаграмму рассеяния.

  2. По данным наблюдений трех величин (одной зависимой и двух независимых) выполнить регрессионный анализ, найти коэффициент детерминации и уравнение линии регрессии. Построить диаграмму рассеяния для каждого регрессора.

  3. Добавить третью независимую величину, выполнить регрессионный анализ, найти коэффициент детерминации и уравнение линии регрессии.

  4. Осуществить проверку полученных результатов и их интерпретацию.

Листинг программы:

import pandas as pd import matplotlib.pyplot as plt import statsmodels.api as sm df = pd.read_csv("lol.csv", delimiter=";") y = df['Health'] #define predictor variables x = df[['Armor']] #add constant to predictor variables x = sm.add_constant(x) #fit linear regression model model = sm.OLS(y, x).fit() print(model.summary()) yy = df['Health'] #define predictor variables xx = df[['Armor', 'Attack damage']] #add constant to predictor variables xx = sm.add_constant(xx) #fit linear regression model model = sm.OLS(yy, xx).fit() #view model summary print(model.summary()) yyy = df['Health'] #define predictor variables xxx = df[['Armor', 'Attack damage', 'Magic resist.']] #add constant to predictor variables xxx = sm.add_constant(xxx) #fit linear regression model model = sm.OLS(yyy, xxx).fit() #view model summary print(model.summary()) fig = plt.figure(figsize=(12,8)) #produce residual plots fig = sm.graphics.plot_regress_exog(model, 'Armor', fig=fig) plt.show()

Вывод:

Интерпретация:

  • P>|t|: это значение p, связанное с коэффициентами модели. Поскольку p-значение для Armor (0,000) значительно меньше 0,05, мы можем сказать, что существует статистически значимая связь между Armor и Health.

  • R-квадрат: это число говорит нам о том, какую процентную вариацию в Health можно объяснить количеством Armor. В целом, чем больше значение R-квадрата регрессионной модели, тем лучше независимые переменные способны предсказать значение переменной отклика. В этом случае 27,2% вариации Health можно объяснить Armor.

  • F-статистика и p-значение: F-статистика (37,42) и соответствующее значение p (1,86e-08) говорят нам об общей значимости регрессионной модели, т. е. о том, полезны ли независимые переменные в модели для объяснения вариации. в переменной ответа. Поскольку p-значение меньше 0,05, наша модель является статистически значимой, и считается, что Armor полезны для объяснения вариаций в Health.

Интерпретация:

  • P>|t|: это значение p, связанное с коэффициентами модели. Поскольку p-значение для Armor (0,000) значительно меньше 0,05, мы можем сказать, что существует статистически значимая связь между Armor и Health. Так же p-значение для Attack damage (0,130) значительно больше 0,05, мы можем сказать, что не существует статистически значимая связь между Armor и Attack damage.

  • R-квадрат: это число говорит нам о том, какую процентную вариацию в Health можно объяснить количеством Armor и Attack damage. В целом, чем больше значение R-квадрата регрессионной модели, тем лучше независимые переменные способны предсказать значение переменной отклика. В этом случае 28,9% вариации Health можно объяснить Armor и Attack damage.

  • F-статистика и p-значение: F-статистика (20,13) и соответствующее значение p (4,63e-08) говорят нам об общей значимости регрессионной модели, т. е. о том, полезны ли независимые переменные в модели для объяснения вариации. в переменной ответа. Поскольку p-значение меньше 0,05, наша модель является статистически значимой, и считается, что Armor полезны для объяснения вариаций в Armor и Attack damage.

Интерпретация:

Вот как интерпретировать остальную часть сводки модели:

  • P>|t|: это значение p, связанное с коэффициентами модели. Поскольку p-значение для Armor (0,000) значительно меньше 0,05, мы можем сказать, что существует статистически значимая связь между Armor и Health. Так же p-значение для Attack damage (0,260) больше 0,05, мы можем сказать, что не существует статистически значимой связи между Health и Attack damage. И p-значение для Magic resist (0,458) больше 0,05, мы можем сказать, что не существует статистически значимой связи между Health и Magic resist.

  • R-квадрат: это число говорит нам о том, какую процентную вариацию в Health можно объяснить количеством Armor, Attack damage и Magic resist. В целом, чем больше значение R-квадрата регрессионной модели, тем лучше независимые переменные способны предсказать значение переменной отклика. В этом случае 29,3% вариации Health можно объяснить Armor, Attack damage и Magic resist.

  • F-статистика и p-значение: F-статистика (13,54) и соответствующее значение p (1,84e-07) говорят нам об общей значимости регрессионной модели, т. е. о том, полезны ли независимые переменные в модели для объяснения вариации в переменной ответа. Поскольку p-значение меньше 0,05, наша модель является статистически значимой, и считается, что Health полезны для объяснения вариаций в Armor, Attack damage и Magic resist.

Гомоскедастичность — свойство, означающее постоянство условной дисперсии вектора или последовательности случайных величин. Однородная вариативность значений наблюдений, выражающаяся в стабильности, однородности дисперсии случайной ошибки регрессионной модели — дисперсии одинаковы во все моменты измерения.

Одно из ключевых предположений линейной регрессии состоит в том, что остатки регрессионной модели примерно нормально распределены и гомоскедастичны на каждом уровне объясняющей переменной. Если эти допущения нарушаются, то результаты нашей регрессионной модели могут вводить в заблуждение или быть ненадежными. Чтобы убедиться, что эти предположения выполняются, мы можем построить следующие остаточные графики:

  1. На основе реальных статистических данных выполнить корреляционный анализ для трех величин (одной зависимой и двух независимых) и интерпретацию результатов.

Был взят датасет покупателей в торговом центре:

Листинг:

import pandas as pd import matplotlib.pyplot as plt import seaborn as sns df = pd.read_csv("Mall_Customers.csv", delimiter=",") numeric = ['Age', 'Annual Income (k$)', 'Spending Score (1-100)'] #sns.pairplot(df[numeric]) print(df[numeric].corr(method='spearman')) sns.heatmap(df[numeric].corr(method='spearman')) plt.show()

Вывод:

Соседние файлы в предмете Большие данные