<jupyter_start><jupyter_text>В шаге 6 мы не меняем исходный датасет df, а просто применяем созданную лямбда-функцию к отдельному столбцу. Можно сказать, что получаем представление о результате работы функции. В шаге 8 мы уже конкретной командой изменяем столбец датасета.<jupyter_code># Шаг 9. Выясните, в каком процентном отношении находятся студенты (по возрасту)

df['age'].value_counts() / df.shape[0] * 100
# Шаг 10. Каков средний уровень потребления алкоголя в каждой из возрастных групп
# (15, 16, 17 лет и т.д.) отдельно по выходным и будним дням (поля Walc и Dalc)?

df2 = pd.read_csv('student-mat.csv')
df2<jupyter_output><empty_output><jupyter_text>Создан новый датасет df2, т.к. датасет df у нас уже изменён - обрезан по столбцу guardian.А нам сейчас нужны данные после этого столбца.<jupyter_code>df2.groupby('age')['Walc'].mean()
df2.groupby('age')['Dalc'].mean()
# Шаг 11. Каков средний уровень потребления алкоголя в каждого из полов отдельно по выходным и будним дням (поля Walc и Dalc)?

df2.groupby('sex')['Walc'].mean()
df2.groupby('sex')['Dalc'].mean()
# Опционально. Используя набор данных, попробуйте ответить на вопрос «Есть ли связь
# между потреблением алкоголя и академической успеваемостью студентов?» Аргументируйте ваш ответ.<jupyter_output><empty_output><jupyter_text>Согласно описанию дата сета, успеваемость - это три последних столбца: G1, G2, G3.    These grades are related with the course subject, Math or Portuguese:G1 - first period grade (numeric: from 0 to 20);G2 - second period grade (numeric: from 0 to 20);G3 - final grade (numeric: from 0 to 20, output target).Если я правильно понял, то G1 и G2 - это НЕ оценки по предметам (математика / португальский), а оценки по какому-то (?) предмету за полугодия (first / second period).G3 - финальная оценка.Поскольку в датасете нет других временных периодов для сопоставления G1 и G2, считаю, их можно исключить и использовать для оценки успеваемости только столбец G3.Для определения уровня потребления алкоголя возьмём по каждому ученику среднее по столбцам Dalc и Walc. Корректнее было бы не просто посчитать среднее, а также учитывать удельный вес будних и выходных дней. Вероятно, удельный вес Workday (Dalc) больше, чем Weekend (Walc), но соотношение "На 5 рабочих дней приходится 2 дня уикенда" тут будет некорректным, т.к. тогда не учитываются праздники, каникулы и т.п. Поэтому просто рассчитаем среднее. Добавим столбец alco_mean.<jupyter_code>alcoweek = ['Dalc', 'Walc']
df2['alco_mean'] = df2[alcoweek].mean(axis=1)
df2<jupyter_output><empty_output><jupyter_text>Сгруппируем сначала уровень потребления алкоголя по оценкам. Попробуем сделать какой-то вывод просто по списку значений - может быть зависимость сразу будет заметна.<jupyter_code>df2.groupby('G3')['alco_mean'].mean()<jupyter_output><empty_output><jupyter_text>Проследить какую-то зависимость значений не удаётся. Сконвертируем полученный DataFrameGroupBy в DataFrame и попробуем сделать какой-то вывод с помощью визуализации. Используем столбчатые диаграммы (bar).<jupyter_code>alco_mean_by_g3 = df2.groupby('G3')['alco_mean'].mean().to_frame(name='alco_mean').reset_index()
alco_mean_by_g3.plot.bar(x='G3', y=['alco_mean'])<jupyter_output><empty_output><jupyter_text>Более глубокий анализ можно провести, используя ящик с усами (boxplot).<jupyter_code>df2.boxplot(column='alco_mean', by='G3', figsize=(8, 8))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.09376837154614932, 'fraction_numerical': 0.018224573780129337, 'mean_word_length': 6.209745762711864, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 25, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '20969', 'license': 'MIT', 'n_tokens_mistral': 1436, 'n_tokens_neox': 1609, 'n_words': 374, 'path': 'Section 1: Linux, Virtual Machines, Docker/home_exercise_3_-_pandas/ex3.ipynb', 'repo_name': 'MarkVoitov/DS_ABB', 'size': '3402'}