Анализ демографии Российской Федерации
Для своего проекта я взяла данные, которые представлены на сайте Росстата по численности населения Российской Федерации в период с 2005 по 2023 год. Также в таблице приведена статистика по разным регионам России.
Анализ графиков о демографии в России имеет значительную ценность, так как позволяет визуально выявить долгосрочные тенденции в численности населения, рождаемости и миграции, что помогает понять влияние социально-экономических условий на демографические изменения. Эти данные необходимы для планирования ресурсов, таких как образование и здравоохранение, а также для научных исследований, прогнозирования будущих изменений и разработки эффективных политик в ответ на вызовы, связанные со старением населения и миграционными процессами.
В проекте используется три вида диаграмм: столбчатые, линейные графики и тепловая карта, так как они позволяют более наглядно проиллюстрировать изменения в демографии.
Импорт библиотек
import pandas as pd import matplotlib.pyplot as plt import numpy as np
Загрузка данных из файла
file_path = 'russian_demography.xlsx' df = pd.read_excel (file_path, sheet_name=0, header=None)
Извлечение данных
years_raw = df.iloc[4, 1:-1].values # годы (строка 5) population_older_raw = df.iloc[6, 1:-1].values # численность старше трудоспособного percentage_older_raw = df.iloc[7, 1:-1].values # доля в процентах
Расчет годового изменения
annual_change = [np.nan] + list (np.diff (population_older))
Создание графиков
fig, axs = plt.subplots (3, 1, figsize=(12, 18))
График численности населения старше трудоспособного возраста
axs[0].plot (years, population_older, marker='o', color='b') axs[0].set_title ('Численность населения старше трудоспособного возраста РФ') axs[0].set_ylabel ('Численность (тыс. чел.)') axs[0].grid (True)
График доли населения старше трудоспособного возраста
axs[1].plot (years, percentage_older, marker='o', color='g') axs[1].set_title ('Доля населения старше трудоспособного возраста РФ') axs[1].set_ylabel ('Доля (%)') axs[1].grid (True)
График годового изменения численности
axs[2].bar (years[1:], annual_change[1:], color='orange') axs[2].set_title ('Годовое изменение численности населения старше трудоспособного возраста в РФ') axs[2].set_ylabel ('Изменение (тыс. чел.)') axs[2].grid (True)
Загрузка данных для регионов
df = pd.read_excel (file_path, sheet_name=1, header=None)
Извлечение данных для регионов
years_raw = df.iloc[4, 1: 3].values # годы (строка 5, каждая третья колонка) regions = df.iloc[6:, 0].values # названия регионов
Создание DataFrame для хранения данных
data_total = pd.DataFrame (index=regions) data_elderly = pd.DataFrame (index=regions) data_percentage = pd.DataFrame (index=regions)
Заполнение DataFrame
for i, year in enumerate (years): col_idx = 2 + i * 3 if col_idx + 2 < df.shape[1]: data_total[year] = df.iloc[6:, col_idx].values data_elderly[year] = df.iloc[6:, col_idx + 1].values data_percentage[year] = df.iloc[6:, col_idx + 2].values else: print (f"Ошибка: Недостаточно данных для года {year}. Пропускаем.»)
Удаление строк с пропущенными значениями
data_total.dropna (inplace=True) data_elderly.dropna (inplace=True) data_percentage.dropna (inplace=True)
Преобразование данных в числовой формат
data_total = data_total.apply (pd.to_numeric, errors='coerce') data_elderly = data_elderly.apply (pd.to_numeric, errors='coerce') data_percentage = data_percentage.apply (pd.to_numeric, errors='coerce')
