
Вводная часть
В исследовании я взяла за основу таблицу «Набор данных о здоровье сна и образа жизни»: https://www.kaggle.com/datasets/uom190346a/sleep-health-and-lifestyle-dataset (Сайт: https://www.kaggle.com) В таблице представлена информация, полученная от 374 участников опроса. Таблица охватывает широкий спектр переменных, связанных с повседневными привычками, медицинскими показателями, индикаторами психологического комфорта, физического здоровья, со сном.
Мне было интересно проанализировать именно эти данные, так как, все что связано со здоровьем и здоровым образом жизни остается неизменно актуальным и привлекательным для широкой аудитории и для меня лично. В современном мире осознание влияния образа жизни человека на его здоровье считается очевидным фактом. Однако, остается множество вопросов относительно того, какие конкретные факторы и каким образом влияют на здоровье и качество жизни человека. На основе данных таблицы, можно попробовать проанализировать некоторые параметры, чтобы выявить их взаимосвязь и/или влияние на возникновения нарушений сна, а также же отсутствие их взаимосвязи и/или влияния на возникновения нарушений сна.
Для того чтобы структурировать анализ мной была выдвинута гипотеза: Есть профессии, в которых высокий уровень стресса, возможно для этих же профессий характерно большое количество нарушений сна.
Этапы работы
Чтобы понять существует ли влияние уровня стресса в профессии на сон: В первую очередь надо определиться какие на примере каких профессий будет проводиться анализ, потому что проанализировать все было бы сложно. Так, я определила насколько часто в таблице встречается каждая из профессий и выбрала для исследования 2 наиболее (Врачи и медсестры) и 2 наименее (менеджеры и менеджеры по продажам) часто встречающиеся.
код 1
from matplotlib import pyplot as plt import seaborn as sns df.groupby ('Occupation').size ().plot (kind='barh', color=sns.palettes.mpl_palette ('Set2')) plt.gca ().spines[['top', 'right', ]].set_visible (False)
Далее я определила средний уровень стресса для каждой из выбранных профессий.
Первые два графика — Гистограммы. Этот тип графика позволяет продемонстрировать различные наборы данных в сравнении.
код 2
import matplotlib.pyplot as plt plt.style.use ('seaborn-deep')
doctors_stress = df[df['Occupation'] == 'Doctor']['Stress Level'].mean () nurses_stress = df[df['Occupation'] == 'Nurse']['Stress Level'].mean () managers_stress = df[df['Occupation'] == 'Manager']['Stress Level'].mean () sales_reps_stress = df[df['Occupation'] == 'Sales Representative']['Stress Level'].mean ()
occupation_stress_levels = [doctors_stress, nurses_stress, managers_stress, sales_reps_stress]
occupation_names = ['Doctor', 'Nurse', 'Manager', 'Sales Representative']
colors = plt.get_cmap ('Set2') (np.linspace (0, 1, len (occupation_names))) plt.barh (occupation_names, occupation_stress_levels, color=colors)
plt.title ('Stress Level Distribution by Occupation') plt.xlabel ('Stress Level') plt.ylabel ('Occupation')
plt.show ()
Затем выявила процент нарушений сна для каждой группы профессий.
Для этого сравнения я использовала круговые диаграммы, они дают увидеть какой вклад в общую статистику вносит каждая из категорий. Для большей наглядности я добавила «взрыв», сильнее отделяющий части графика друг от друга. Также ко всем графикам я применила цветовую палитру «Set2» так как она, по моему мнению, лучше всего подходит выбранной теме.
код 3
managers_and_sales_df = df[df['Occupation'].isin (['Manager', 'Sale Representative'])]
sleep_disorders = managers_and_sales_df['Sleep Disorder'].value_counts (dropna=False)
labels = sleep_disorders.index sizes = sleep_disorders.values explode = (0.1,) * len (sizes)
fig1, ax1 = plt.subplots () ax1.pie (sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=90) ax1.axis ('equal') colors = cm.get_cmap ('Set2') (np.linspace (0, 1, len (sizes)))
for i in range (len (sizes)): ax1.patches[i].set_facecolor (colors[i])
plt.show ()
код 4
doctors_and_nurses_df = df[df['Occupation'].isin (['Doctor', 'Nurse'])]
sleep_disorders = doctors_and_nurses_df['Sleep Disorder'].value_counts (dropna=False)
labels = sleep_disorders.index sizes = sleep_disorders.values explode = (0.1,) * len (sizes) fig1, ax1 = plt.subplots () ax1.pie (sizes, explode=explode, labels=labels, autopct='%1.1f%%', shadow=False, startangle=90) ax1.axis ('equal')
colors = cm.get_cmap ('Set2') (np.linspace (0, 1, len (sizes)))
for i in range (len (sizes)): ax1.patches[i].set_facecolor (colors[i])
plt.show ()
В процессе работы я обращалась к нескольким нейросетям.
how do I make it so that it analyzes not only «Doctor» but also «Nurse»?
Чтобы исправить эту ошибку, вы должны использовать ListedColormap.colors, который возвращает список цветов, используемых в цветовой схеме.
Вывод
В ходе анализа выяснилось, что какое-либо расстройство сна присутствует у 50% докторов и медсестер и у 0% менеджеров и менеджеров по продажам. При этом четкой зависимости от уровня стресса и наличия расстройств сна обнаружено не было. Так, моя гипотеза не подтвердилась и можно сделать вывод об отсутствии связи между уровнем стресса и количеством нарушений сна в профессии. Тем не менее, мой анализ нельзя считать полностью достоверным, так как он выполнялся на основе ограниченного количества данных