
Описание проекта
Для данного проекта я использовала набор данных Kaggle, который рассматривает влияние качества воздуха на здоровье населения.
Эти данные откликнулись мне, поскольку качество воздуха является важным фактором, от которого зависят здоровье и благополучие людей. Кроме того, на курсе по психологии я изучала данный вопрос с точки зрения ментального здоровья, поэтому продолжить работу над этой темой было для меня интересно и познавательно.
Этапы работы:
1. Выбор набора данных 2. Анализ данных 3. Визуализация графиков
Оформление графиков
Для оформления графиков я решила использовать спокойные, натуральные оттенки.
Основная цветовая палитра:
#ffcc99
#bedeba
#99ccff
Типы созданных графиков:
1. Столбчатая диаграмма 2. Круговая диаграмма 3. Гистограмма

цветовая палитра
Итоговые графики

график 1
Код графика
resp_cases = df['RespiratoryCases'].sum () cardio_cases = df['CardiovascularCases'].sum () total_cases = resp_cases + cardio_cases
resp_percent = (resp_cases / total_cases) * 100 cardio_percent = (cardio_cases / total_cases) * 100
labels = ['Respiratory Cases', 'Cardiovascular Cases'] sizes = [resp_percent, cardio_percent] colors = ['#ffcc99', '#bedeba']
plt.figure (figsize=(8, 8)) plt.pie (sizes, labels=labels, colors=colors, autopct='%1.1f%%', pctdistance=0.85) centre_circle = plt.Circle ((0, 0), 0.70, fc='white') fig = plt.gcf () fig.gca ().add_artist (centre_circle) plt.title ('Respiratory vs Cardiovascular Cases') plt.axis ('equal') plt.show ()
график 2
Код графика
df['PM'] = df['PM10'] + df['PM2_5']
plt.figure (figsize=(12, 8))
colors = ['#ffcc99', '#ffd7c1', '#bedeba', '#cdefd2', '#99ccff', '#9fd0ff']
plt.barh (np.arange (4), [df['PM'].mean (), df['NO2'].mean (), df['SO2'].mean (), df['O3'].mean ()], color=colors[: 5], edgecolor='#9fd0ff', linewidth=2) plt.yticks (np.arange (4), ['Концентрация твердых частиц (PM)', 'Концентрация диоксида азота (NO2)', 'Концентрация диоксида серы (SO2)', 'Концентрация озона (O3)']) plt.xlabel ('') plt.ylabel ('') plt.title ('Влияние показателей качества воздуха на здоровье') plt.grid (False) plt.show ()
график 3
Код графика
df['HealthImpactClass'] = pd.cut (df['HealthImpactScore'], bins=[-1, 20, 40, 60, 80, 100], labels=['Очень низкое', 'Низкое', 'Умеренное', 'Высокое', 'Очень высокое'])
health_impact_counts = df.groupby ('HealthImpactClass', observed=False)['O3'].count ()
plt.figure (figsize=(10, 6))
colors = ['#ffcc99', '#ffd7c1', '#bedeba', '#cdefd2', '#99ccff']
health_impact_counts.plot (kind='barh', color=['#ffcc99', '#ffd7c1', '#bedeba', '#cdefd2', '#99ccff']) plt.xlabel ('') plt.ylabel ('') plt.title ('Взаимосвязь ухудшения здоровья и концентрации озона в воздухе') plt.show ()
график 4
Код графика
df['HealthImpactClass'] = pd.cut (df['HealthImpactScore'], bins=[20, 40, 60, 80, 100], labels=['Низкое', 'Умеренное', 'Высокое', 'Очень высокое'])
df['PM'] = df['PM10'] + df['PM2_5']
plt.figure (figsize=(12, 6))
x = ['Очень низкое', 'Низкое', 'Умеренное', 'Высокое', 'Очень высокое'] y = [df.loc[df['HealthImpactClass'] == cat, 'PM'].mean () for cat in x]
plt.bar (x, y, color=['#bedeba', '#cdefd2', '#99ccff', '#ffb3b3', '#ff8080'], edgecolor='#9fd0ff', linewidth=2)
plt.xlabel ('') plt.ylabel ('') plt.title ('Зависимость PM от HealthImpactClass')
plt.rcParams['axes.edgecolor'] = '#9fd0ff' plt.rcParams['axes.linewidth'] = 2
plt.show ()
график 5
Код графика
import seaborn as sns
df['PM'] = df['PM10'] + df['PM2_5']
corr_matrix = df[['PM10', 'PM2_5', 'NO2', 'SO2', 'O3', 'RespiratoryCases', 'CardiovascularCases', 'HospitalAdmissions']].corr ()
plt.figure (figsize=(12, 10)) cmap = sns.diverging_palette (146, 220, as_cmap=True) ax = sns.heatmap (corr_matrix, annot=True, cmap=cmap, vmin=-1, vmax=1, center=0, linewidths=0.5, linecolor='grey', fmt='.2f', annot_kws={'size': 8})
plt.title ('Корреляционная матрица') plt.show ()
В работе использован Chat GPT-4o для стилизации графиков