Как найти стандартное отклонение из текстового файла с помощью Python?

После нахождения диапазона, минимума, максимума и среднего из моего текстового файла сохраненных оценок моей игры я хотел бы найти стандартное отклонение от этих оценок, но я не уверен, как это сделать.

Вот что у меня есть на данный момент:

file = open('stats.txt', 'a+')
file.write('\n' + 'Score: ' + str(1))
file.close()

numbers = []
with open('stats.txt') as fh:
    count = 0
    for line in fh:
        count += 1
        numbers.append(float(line.split()[1]))

file = open('maths.txt', 'w+')
file.write('Average Score: ' + str(sum(numbers)/len(numbers)) + "\n")
file.write('Maximum Score: ' + str(max(numbers)) + "\n")
file.write('Minimum Score: ' + str(min(numbers)) + "\n")
maxn = max(numbers)
minn = min(numbers)
rangex = (maxn) - (minn)
file.write('Range of Scores: ' + str(rangex))
file.close()

Как выглядит мой текстовый файл:

Score: 3
Score: 0
Score: 13
Score: 13
Score: 9
Score: 0
Score: 0
Score: 0
Score: 0
Score: 0
Score: 0
Score: 31
Score: 0
Score: 0
Score: 0
Score: 0
Score: -8
Score: 0
Score: 0

Спасибо за помощь

Вы можете использовать модуль numpy и использовать метод numpy.std().

toti08 20.11.2018 10:46

Похоже, у вас есть все необходимое. Попробуйте найти формулу стандартного отклонения?

shadowtalker 20.11.2018 10:46
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
1 108
2

Ответы 2

Вам просто нужно использовать функцию стандартного отклонения от numpy.

Добавьте в начало вашего кода:

import numpy as np

а затем используйте:

file.write('Standard Deviation: ' + str(np.std(numbers)) + "\n")

Вы можете прочитать файл и разделить его на :, чтобы создать список:

l = []

In [400]: with open('stats.txt', 'r') as f:
     ...:     for i in f:
     ...:         l.append(int(i.split(':')[1].strip()))


In [401]: l
Out[401]: [3, 0, 13, 13, 9, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, -8, 0, 0]

In [403]: import statistics
In [402]: statistics.stdev(l)
Out[402]: 8.357158922932953

ИЛИ вы также можете использовать numpy:

In [404]: import numpy as np
In [403]: np.std(l)
Out[403]: 8.1342611825629

Другие вопросы по теме