Перевести данный код в питон код:

// Программа для вычисления статистических параметров ряда данных

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>

// Функция для чтения данных из файла и сохранения их в векторе
std::vector<double> read_data(const std::string& filename) {
    std::vector<double> data;
    double x;
    std::ifstream file(filename);
    if (!file) {
        std::cerr << "Error: cannot open file " << filename << std::endl;
        exit(1);
    }
    while (file >> x) {
        data.push_back(x);
    }
    file.close();
    return data;
}

// Функция для вычисления среднего значения
double mean(const std::vector<double>& data) {
    double sum = std::accumulate(data.begin(), data.end(), 0.0);
    return sum / data.size();
}

// Функция для вычисления медианы
double median(const std::vector<double>& data) {
    std::vector<double> sorted_data = data;
    std::sort(sorted_data.begin(), sorted_data.end());
    int n = sorted_data.size();
    if (n % 2 == 0) {
        return (sorted_data[n/2-1] + sorted_data[n/2]) / 2.0;
    } else {
        return sorted_data[n/2];
    }
}

// Функция для вычисления моды
double mode(const std::vector<double>& data) {
    std::vector<double> sorted_data = data;
    std::sort(sorted_data.begin(), sorted_data.end());
    int max_count = 0;
    double mode_value = sorted_data[0];
    int count = 1;
    for (int i = 1; i < sorted_data.size(); i++) {
        if (sorted_data[i] == sorted_data[i-1]) {
            count++;
        } else {
            if (count > max_count) {
                max_count = count;
                mode_value = sorted_data[i-1];
            }
            count = 1;
        }
    }
    if (count > max_count) {
        max_count = count;
        mode_value = sorted_data[sorted_data.size()-1];
    }
    return mode_value;
}

// Функция для вычисления стандартного отклонения
double stdev(const std::vector<double>& data) {
    double m = mean(data);
    double s = 0;
    for (int i = 0; i < data.size(); i++) {
        s += (data[i] - m) * (data[i] - m);
    }
    return std::sqrt(s / (data.size() - 1));
}

// Функция для вычисления ошибки оценки среднего
double sem(const std::vector<double>& data, double alpha) {
    double t;
    if (alpha == 0.1) {
        t = 1.645;
    } else if (alpha == 0.05) {
        t = 1.96;
    } else if (alpha == 0.01) {
        t = 2.576;
    } else {
        std::cerr << "Error: invalid significance level " << alpha << std::endl;
        exit(1);
    }
    double s = stdev(data);
    return t * s / std::sqrt(data.size());
}

int main() {
    // Считываем данные из файла
    std::vector<double> data = read_data("data.txt");

    // Вычисляем статистические параметры
    double m = mean(data);
    double med = median(data);
    double mod = mode(data);
    double s = stdev(data);
    double sem_01 = sem(data, 0.1);
    double sem_05 = sem(data, 0.05);
    double sem_001 = sem(data, 0.01);

    // Выводим результаты
    std::cout << "Mean: " << m << std::endl;
    std::cout << "Median: " << med << std::endl;
    std::cout << "Mode: " << mod << std::endl;
    std::cout << "Standard deviation: " << s << std::endl;
    std::cout << "Standard error of the mean (alpha=0.1): " << sem_01 << std::endl;
    std::cout << "Standard error of the mean (alpha=0.05): " << sem_05 << std::endl;
    std::cout << "Standard error of the mean (alpha=0.01): " << sem_001 << std::endl;

    return 0;
}
