微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建一个数据框,该数据框仅选择 Pandas 中值大于 avg +/* 标准差的行?

如何解决如何创建一个数据框,该数据框仅选择 Pandas 中值大于 avg +/* 标准差的行?

这是我到目前为止的代码,但我不确定是否应该在计算出标准偏差和平均值后加入数据帧。我目前遇到的问题是选择值大于或小于 avg +/1 std 的行。我只是不知道如何遍历每一列并执行此操作?我想过一个 for 循环,但不确定如何去做。

import pandas_datareader.data as web
import datetime as date

fromDate ="2014-01-02"
toDate = "2016-01-02"

dfSixMo =  web.DataReader('DGS6MO','fred',fromDate,toDate)

dfOneYear = web.DataReader('DGS1',toDate)

dfFiveYear = web.DataReader('DGS5',toDate)

dfTenYear = web.DataReader('DGS10',toDate)

dfJoin1 = dfSixMo.join(dfOneYear,how = 'inner')
dfJoin2 = dfFiveYear.join(dfTenYear,how='inner')
dfFinal = dfJoin1.join(dfJoin2,how='inner')
print(dfFinal)

mean = dfFinal.mean()
print('\nMean:')
print(mean)

StDev = dfFinal.std()
print('\n Standard Deviation:')
print(StDev)

解决方法

IIUC 这就是你想要的:

#setup
df = pd.DataFrame(np.random.randint(0,10,(3,3)),columns = list('abc'))
#   a  b  c
#0  3  2  8
#1  0  6  7
#2  8  3  9

mean = df.mean()
std = df.std()

df[((mean-std < df) & (df< mean+std)).all(1)]
#   a  b  c
#0  3  2  8

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。