【发布时间】:2021-04-24 02:51:59
【问题描述】:
我正在一个项目中工作,以通过一些股票市场代码来发现异常情况,钓鱼异常交易量......我正在努力过滤真实值(那些通过“过滤器”)。 主要目标是创建一个数据框,其中包含通过“统计过滤器”传递的代码。
import numpy as np
import pandas as pd
from pandas_datareader import data as web
获取数据框
tickers = ['F', 'GE', 'GM','TSLA']
data = pd.DataFrame()
for t in tickers:
data[t] = web.DataReader(t, data_source='yahoo', start='2020-1-1')['Volume']
统计过滤器
data_std = data.std()
data_mean = data.mean()
anomaly_cut_off = data_std * 3
upper_limit = data_mean + anomaly_cut_off
具有布尔值(真或假)的数据框
outlier = data > upper_limit
如果为真,异常应该是带有日期(索引)和股票代码('F'、'GE'、'GM'、'TSLA')的数据框...如果我更改以下代码,则以下代码有效pd 到 np.array(data),但只有一个代码。
anomalies = []
for outlier in data:
if outlier > upper_limit:
anomalies.append(outlier)
return anomalies
【问题讨论】:
-
你想要那些至少有一个 True 的行,还是别的什么?
-
是 True 的行,但我需要作为行索引的日期 + 作为列的代码。类似于 Ticker X - 日期 2020-01-03
标签: python pandas dataframe yahoo-finance outliers