Цель проекта – проанализировать набор данных (датасет), содержащий демографическую информацию разных стран мира. Из всего датасета я выбрал 4 основных столбца для анализа. Для удобства при дальнейшем вычислении статистических данных, каждая выбранная колонка была считана и сохранена в отдельный список с названием в соответствии с столбцом. Я рассматриваю следующие столбцы:
1) Internet_use - значение, отражающее использование интернета в стране
2) International_tourism - значение, отражающее объемы международного туризма.
3) Life_expectancy - показатель ожидаемой продолжительности жизни
4) Physicians - плотность врачей
Теперь по этапно распишу как я находил статистические данные:
1) Извлечений данных из файла с демографическими показателями. Сначала мы пропускаем первую строку, так как это не числовые данные, а заголовки. Затем, построчно обрабатываем данные и элементы каждой строки разделяются запятой при помощи split. Далее, на всякий случай я сделал проверку количества столбцов, так как без нее код у меня не работал. Нужно было убедиться в том, что в строке достаточно столбцов, чтобы было возможно собрать данные. Сделал я эту проверку при помощи if len(a) >=9, так как последний столбец Physician имеет 9 порядковый номер в списке. После проверки мы извлекаем числовые данные, но также введя условия. В выбранном мной датасете часть ячеек была пуста, потому что некоторые данные попросту невозможно собрать в определенной стране. Поэтому если значение отсутствовало я присваивал ему 0. Пример: iu = float(a[5]) if [5] else 0. Далее данные по каждому параметру добавляются в заранее созданные списки при помощи append.
Теперь перейдем к описанию сбора статистических данных:
2) Нахождение минимума и максимума. Данные параметры я вычислял при помощи функции min и max. Пример: Internet_use_min = min(Internet_use)
3) Среднее значение - это сумма всех элементов поделенная на их количество. Сумму я нашел при помощи функции sum, а количество элементов при помощи len.
4) Нахождение медианы. Для начала я отсортировал данные по возрастанию при помощи функции sorted. Далее нужно было рассмотреть 2 случая: когда количество чисел четное нужно считать среднее 2 чисел по середине , а если количество нечетное, то нужно просто взять число посередине. Пример:
if n%2==0: проверяем количество чисел четное или нет, переменная n равняется len отсортированного ранее списка
median_val = (sorted_data[n // 2 - 1] + sorted_data[n // 2]) / 2 - находим два значение, которые располагаются в середине отсортированного списка и их среднее.
else:
sorted_data[n // 2] - просто берем значение, которое находится в середине при помощи целочисленного деления
5) Мода – это значение, которое встречается чаще всего. Для ее нахождения я использовал следующую конструкцию:
mode_val = max(set(Internet_use), key=Internet_use.count)
set формирует множество только уникальных значений из списка, чтобы в дальнейшем посчитать повторение каждого
Internet _use.count считает сколько раз число повторяется
key я ввел для того чтобы указать, по какому критерию нужно выбирать максимальный элемент.
max для нахождения максимального значения.
6) Вычисление дисперсии. Сначала мы перебираем значение каждого элемента в списке, если из него вычесть среднее (которое мы нашли ранее) и возвести его в квадрат, а затем разделить его на количество элементов в списке при помощи len. Для того, чтобы вычислить дисперсию нужно найти сумму при помощи sum.
Пример: dispersion = sum((x - avg_val) ** 2 for x in Internet_use) / len(Internet_use)
7) Вычисление стандартного отклонение. Стандартное отклонение это корень из дисперсии, поэтому я просто возвел дисперсию в степень 0.5.
При помощи print вывел все значения.