熊猫数据帧雅虎财经检查交易量是否符合标准



下面的程序从.CSV 文件到列表,并将股票代码作为参数传递给一个函数,该函数提取该特定股票的"调整后收盘价"列并将票证设置为列名称。这是我有一个包含数千只股票的数据帧,只需使用 df['EnterTickerNameHere'] 即可获得调整后的收盘价。来自雅虎的数据包含一个"交易量"字段,如果交易量大于 100,000,我只想将股票添加到我的 df 中。我不确定如何在保持数据帧与现在相同的格式的同时执行此操作。感谢您的阅读!

import pandas as pd
pd.core.common.is_list_like = pd.api.types.is_list_like
from pandas_datareader import data as pdr
import datetime
import fix_yahoo_finance as yf
yf.pdr_override()
import time
def getTickers():
today = str(datetime.date.today())
fourty_days_prior = str(datetime.date.today() - datetime.timedelta(days=40))
# import the tickers from csv to a python list
tickers = pd.read_csv('tickers.csv', sep='n',dtype={'Tickers' : str})
tickers = tickers.Tickers.tolist()
data = pdr.get_data_yahoo(tickers, start= fourty_days_prior, end=today)['Adj Close']

您不必下载所有数据两次。

1( 下载每个股票代码的最新交易量(只需 1 天的数据(

2( 将条件应用于此系列以更新您的股票代码列表

3( 下载此缩减代码列表的调整关闭

def getTickers(min_volume=100000):
today = str(datetime.date.today())
fourty_days_prior = str(datetime.date.today() - datetime.timedelta(days=40))
# import the tickers from csv to a python list
tickers = pd.read_csv('tickers.csv', sep='n',dtype={'Tickers' : str})
tickers = tickers.Tickers.tolist()
# first import the latest volumes and apply your condition
volumes = pdr.get_data_yahoo(tickers, start=today, end=today)['Volume'].T
filtered_tickers = volumes[volumes.iloc[:,0] > min_volume].index.tolist()
data = pdr.get_data_yahoo(filtered_tickers, start= fourty_days_prior, end=today)['Adj Close']
return data

首先在 df 中加载 ['Adj Close']:

data = pdr.get_data_yahoo(tickers, start= fourty_days_prior, end=today)['Adj Close']

现在为卷创建一个单独的 df:

volume = pdr.get_data_yahoo(tickers, start= fourty_days_prior, end=today)['Volume']

(假设这会获取列名为"卷"的 df 中的卷(

现在您可以执行以下操作:

data['volume'] = [value if value > 100000 else 0 for value in volume['Volume']

(如果您不想要零,可以使用 None (

现在,您的 df 中有一个音量列,它仅包含音量值,如果它> 100000

最新更新