Войти
или
Зарегистрироваться
Курсы
Учебник
Учебник 2.0
ОГЭ/ЕГЭ
Олимпиады
Рубрикатор
Компилятор
Статья Автор:
Шахова Соня
с
# Открываем CSV файл и читаем его содержимое file = open('Student Depression Dataset.csv', 'r') # Открываем файл для чтения data = file.readlines() # Читаем все строки файла # Инициализируем переменные для хранения статистики numeric_columns = [] # Список для хранения числовых значений min_values = [] # Список для минимальных значений max_values = [] # Список для максимальных значений sum_values = [] # Список для сумм значений count_values = [] # Список для количества значений # Обрабатываем каждую строку, пропуская заголовок for i in range(1, len(data)): # Начинаем с 1, чтобы пропустить заголовок row = data[i].strip().split(',') # Убираем пробелы и разбиваем строку на столбцы # Обрабатываем только числовые столбцы (индексы: 2, 5, 6, 7, 8, 9) for j in [2, 5, 6, 7, 8, 9]: # Индексы числовых колонок value = float(row[j]) if row[j] else None # Преобразуем значение в число if value is not None: # Проверяем на наличие значения if len(min_values) <= j - 2: # Если еще не инициализированы списки min_values.append(value) # Устанавливаем минимальное значение max_values.append(value) # Устанавливаем максимальное значение sum_values.append(value) # Устанавливаем сумму значений count_values.append(1) # Увеличиваем количество значений else: if value < min_values[j - 2]: # Проверяем на минимальное значение min_values[j - 2] = value if value > max_values[j - 2]: # Проверяем на максимальное значение max_values[j - 2] = value sum_values[j - 2] += value # Добавляем к сумме значений count_values[j - 2] += 1 # Увеличиваем количество значений # Рассчитываем средние значения для каждого числового столбца mean_values = [sum_val / count_val for sum_val, count_val in zip(sum_values, count_values)] # Для медианы и моды нужно создать отдельные списки значений по каждому столбцу values_for_median_mode = [[] for _ in range(len(count_values))] # Заполняем списки для медианы и моды повторно for i in range(1, len(data)): row = data[i].strip().split(',') for j in [2, 5, 6, 7, 8, 9]: value = float(row[j]) if row[j] else None if value is not None: values_for_median_mode[j - 2].append(value) # Рассчитываем медиану и моду без использования функций medians = [] modes = [] for values in values_for_median_mode: values.sort() n = len(values) median = values[n // 2] if n % 2 == 1 else (values[n // 2 - 1] + values[n // 2]) / 2 medians.append(median) mode_count = {} for v in values: if v in mode_count: mode_count[v] += 1 else: mode_count[v] = 1 max_count = max(mode_count.values()) mode_list = [k for k, v in mode_count.items() if v == max_count] modes.append(mode_list) # Рассчитываем дисперсию и стандартное отклонение для каждого числового столбца variance_values = [] std_dev_values = [] for i in range(len(count_values)): mean_value = mean_values[i] variance_sum = sum((value - mean_value) ** 2 for value in values_for_median_mode[i]) variance = variance_sum / count_values[i] std_dev = variance ** (1/2) variance_values.append(variance) std_dev_values.append(std_dev) # Выводим результаты for i in range(len(min_values)): print(f"Column {i + 1}:") print(f"Min: {min_values[i]}, Max: {max_values[i]}, Mean: {mean_values[i]}, Median: {medians[i]}, Modes: {modes[i]}, Variance: {variance_values[i]}, Std Dev: {std_dev_values[i]}")
×
Прикрепленные файлы
Student Depression Dataset.csv
Чтобы оставить комментарий нужна авторизация
Печать