Pandas: среднее значение вычисления или std (стандартное отклонение) по всему кадру данных

Вот моя проблема, у меня есть dataframe, как это:

Depr_1 Depr_2 Depr_3 S3 0 5 9 S2 4 11 8 S1 6 11 12 S5 0 4 11 S4 4 8 8 

и я просто хочу рассчитать среднее значение по полному файловому кадру, поскольку следующее не работает:

 df.mean() 

Затем я придумал:

 df.mean().mean() 

Но этот трюк не будет работать для вычисления стандартного отклонения. Мои последние попытки:

 df.get_values().mean() df.get_values().std() 

За исключением того, что в последнем случае он использует функцию mean () и std () из numpy. Это не проблема для среднего значения, но для std, поскольку функция pandas использует по умолчанию ddof=1 , в отличие от numpy, где ddof=0 .

3 Solutions collect form web for “Pandas: среднее значение вычисления или std (стандартное отклонение) по всему кадру данных”

Вы можете преобразовать dataframe в серию со stack :

 df.stack().std() # works by converting df to a series 

или force numpy использовать ddof=1 вместо стандартного ddof=0 :

 df.values.std(ddof=1) # this is faster/more efficient 

Также обратите внимание: df.mean().mean() не обязательно даст вам правильный ответ, если у вас отсутствуют значения, и в этом случае любое из этих решений должно работать (после того, как, конечно, сменив «std» на «mean») ,

Дополнительное объяснение

Подход к стекю работает, преобразовывая ваши данные с 5×3 в 15×1, обрабатывая таким образом, как если бы все они находились в одном столбце и обеспечивали правильную степень свободы для стандартного отклонения. См. Документацию по stack здесь и здесь.

Обратите внимание, что вы можете установить степень свободы для std() numpy с ddof опции ddof (и аналогично std() pandas), так что способ numpy также может быть легко работать, а также будет несколько быстрее. (Когда вы вводите df.get_values() или df.values вы возвращаете массив numpy, поэтому последующий метод std() будет от numpy.)

Что касается скорости, numpy df.values.std ( df.values.std ) примерно на 5 раз быстрее на моем компьютере.

Наконец, обратите внимание, что вы можете получить несколько разные ответы от pandas и numpy версий std. Они будут отличаться только в 16-м десятичном разряде или около того, и это не является поводом для беспокойства, а лишь незначительная разница в том, как numpy и pandas вычисляются за кулисами (математика с плавающей запятой).

df.mean(0) может дать вам то, что вы ищете. df.std(0) работает.

Вам может понравиться df.describe () Я думаю, что он делает то, что вы хотите http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.describe.html?highlight=describe#pandas.DataFrame.describe

Interesting Posts

Как сортировать 2 элементарный набор строк в смешанном порядке Используя ключевой параметр (не cmp)

Должен ли я редактировать файл миграции django для редактирования несоответствующих зависимостей

Несколько выходных файлов для потоковой передачи Hadoop с помощью Python Mapper

Python (nltk) – UnicodeDecodeError: кодек 'ascii' не может декодировать байт

Вычислить среднее по дискретным функциям с различным количеством точек выборки

напечатать первый абзац в python

Матричная проблема Python

Как открыть изображение из Интернета в PIL?

Классы декораторов в Python

Оптимизировать .png изображения с помощью PIL

Утилита устаревания FORTRAN в Python. Можно ли использовать `setuptools` и` numpy.distutils`?

Относительные и абсолютные пути всех файлов

Создание всплывающего окна с полем «Ввод»

rpy2 не может импортировать пакет «rgl» R

Использование объектов Django bulk_create во внешних ключах?

Python - лучший язык программирования в мире.