Я использую Python 3.6, пытаясь получить среднее значение некоторых значений в подмножестве строки кадра данных панд (pandas версия 0.23.4). Я получаю значения с помощью .loc [], а затем пытаюсь получить среднее их значение с помощью mean () из пакета статистики python, например:
import statistics as st
rows = ['row1','row2','row3']
somelist = []
for i in rows:
a = df.loc[i,"Q1":"Q7"]
somelist.append(st.mean(a))
Я получаю ответы без десятичных знаков. Если я вручную запишу ответы на вопросы Q1: Q7 в список, это будет результат:
a = st.mean([2,3,4,4,2,6,5])
print(a)
Out: 3.7142857142857144
Но если эта последовательность была тем, что я извлек из фрейма данных, я получаю среднее без десятичных разрядов, например:
a = st.mean(df.loc[i,"Q1":"Q7"])
Out: 3
Очевидно, это потому, что он думает, что это numpy.int64 вместо float. Это происходит, даже если я преобразую срез из кадра данных в список, например:
a = st.mean(list(df.loc[i,"Q1":"Q7"]))
Out: 3
Странно, этого не происходит, если я использую .mean ():
a = df.loc[i,"Q1":"Q7"].mean()
Out: 3.7142857142857144
Я дважды проверил метод st.stdev (), и он, кажется, работает нормально. В чем дело? Почему он хочет автоматически распечатать целое число для среднего? Спасибо!