[英]How to iterate over rows and index in a DataFrame in Pandas to filter bolean values
我正在一個項目中工作,以通過一些股票市場行情來發現異常情況,釣魚異常交易量......我正在努力過濾真實值(那些通過“過濾器”)。 主要目標是創建一個數據框,其中包含通過“統計過濾器”傳遞的代碼。
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
具有 boolean 值的數據框(真或假)
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
的行,則此方法有效:
outlier[outlier.any(axis=1)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.