第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何計(jì)算幾何平均值并忽略python中的0

如何計(jì)算幾何平均值并忽略python中的0

德瑪西亞99 2022-10-05 09:35:01
我有一個熊貓數(shù)據(jù)框架,其中包含某些股票的13列每日股票回報(bào)率。我想計(jì)算每列的幾何平均值,但有些列中有零,因?yàn)檫@些業(yè)務(wù)在不同時間在股票市場上實(shí)現(xiàn)。我知道numpy的算術(shù)平均值會忽略NaN。有沒有辦法計(jì)算幾何平均值并同時忽略零?示例 df:import pandas as pd dictA = {'AAPL': [.02, -.001, .05, .43], 'ABC':[.03, -.02, -.05, 0], 'DEF': [.045, 0, -.10, .63]} df = pd.DataFrame(dictA)的幾何平均值是其中 N 是觀測值的數(shù)量。AAPL.02 * -.001 * .05 * .43**(1/N)是否有某種光滑的代碼可以在忽略零的情況下計(jì)算幾何平均值?
查看完整描述

4 回答

?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個贊

一種方法是使用 np.multiply.reduce 并替換它們,以便它們不會修改結(jié)果,并除以每列的非零值量:np.where01


a = df.values
m = (a!=0)
np.multiply.reduce(np.where(m, a, 1), axis=0)**(1/m.sum(0))


查看完整回答
反對 回復(fù) 2022-10-05
?
胡說叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個贊

創(chuàng)建一個函數(shù),該函數(shù)采用列中的所有元素并返回一個元素。將其應(yīng)用于每一列(在軸 = 0 方向上)。


from functools import reduce


def g_mean(n):

    """Find the geometric mean for iterable n."""


    # Make a list with every element in n that != 0.

    l = [e for e in n if e !=0]


    tot = reduce(lambda a,b: a*b, l) # Multiply all elements in l.

    return tot**(1/(len(l)))


df.apply(g_mean) # Apply g_mean(column) to every column.


查看完整回答
反對 回復(fù) 2022-10-05
?
萬千封印

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個贊

幾何均值不適用于包含負(fù)值的列表(其中一些結(jié)果返回虛數(shù)),但話雖如此,以下是您問題的一個答案:


import pandas as pd

import numpy as np



def geometric_mean(values):

    return float(np.prod([x for x in values])) ** (1 / len([x for x in values]))


dictA = {'AAPL': [.02, -.001, .05, .43], 'ABC': [.03, -.02, -.05, 0], 'DEF': [.045, 0, -.10, .63]}

df = pd.DataFrame(dictA)


cols = ['AAPL', 'ABC', 'DEF']

for col in cols:

    # exclude 0s from being passed to the function

    print(geometric_mean(df.loc[df[col] != 0, col]))

編輯:我最初有.我將其更改為,因此如果列表的乘積為負(fù)數(shù),則該函數(shù)現(xiàn)在將返回虛數(shù)。return np.prod([x for x in values]) ** (1 / len([x for x in values]))return float(np.prod([x for x in values])) ** (1 / len([x for x in values]))


查看完整回答
反對 回復(fù) 2022-10-05
?
肥皂起泡泡

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超6個贊

對于負(fù)數(shù),我找到了這個。如果我有一個帶負(fù)數(shù)的股票回報(bào)數(shù)據(jù)框,我會執(zhí)行以下操作:


from scipy.stats import gmean

gmean(1+df, axis = 0) - 1


查看完整回答
反對 回復(fù) 2022-10-05
  • 4 回答
  • 0 關(guān)注
  • 328 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號