有可能从yfinance为许多公司创建一个主数据帧吗



我的目标是:

  1. 将雅虎财务OHLC(开放、高、低和关闭(数据输入Postgres
  2. 能够轻松更新数据
  3. 能够轻松添加或删除股票代码

我目前的方法:

  1. 创建pandas数据帧
  2. 将数据转储到.csv
  3. 来自Postgres COPY

问题:我不知道如何为公司a创建数据帧,然后为其他公司(到目前为止约有150家公司(附加(合并、联接、连接、ECT(数据帧,并转储到.cvs.

以下是我的实际代码和一个变通方法,它提供了所需的结果,但很笨拙。

让我知道你的想法。

实际(未按预期工作(

import pandas as pd 
import yfinance as yf

tickers = ['VIR','PATH']
#ticker = ['VIR']
for ticker in tickers:
df_yahoo = yf.download(ticker, 
#start='2000-01-01',
#end='2010-12-31',
progress='True')
df = pd.DataFrame(df_yahoo)
df.insert(0, 'TICKER', ticker)
file_name = "/Users/kevin/Dropbox/Programming/Python/test_data/deleteme.csv"
df.to_csv(file_name)
print(df) 

工作环境(工作(

import pandas as pd 
import yfinance as yf
import pickle

tickers = ['VIR']
#ticker = ['VIR']
for ticker in tickers:
df_yahoo = yf.download(ticker, 
#start='2000-01-01',
#end='2010-12-31',
progress='True')
df = pd.DataFrame(df_yahoo)
df.insert(0, 'TICKER', ticker)
tickers = ['PATH']
#ticker = ['VIR']
for ticker in tickers:

df_yahoo = yf.download(ticker, 
#start='2000-01-01',
#end='2010-12-31',
progress='True')
df1 = pd.DataFrame(df_yahoo)
df1.insert(0, 'TICKER', ticker)
frames = [df1, df]
result = pd.concat(frames)
file_name = "/Users/kevin/Dropbox/Programming/Python/test_data/deleteme.csv"
result.to_csv(file_name)
print(df) 

考虑到我认为你想要实现的目标,我会这样做:

# Create a function to load the data and create the frame
# Assumes len(tickers) >= 1
def build_df(tickers):
df = pd.DataFrame(yf.download(tickers[0], 
#start='2000-01-01',
#end='2010-12-31',
progress='True'))
df.insert(0, 'TICKER', tickers[0])
for ticker in tickers[1:]:
dx =  pd.DataFrame(yf.download(ticker, 
#start='2000-01-01',
#end='2010-12-31',
progress='True'))
dx.insert(0, 'TICKER', ticker)
df = pd.concat([df, dx])
return df  

然后调用函数来组装所需的DF,如下所示:

result = build_df(tickers)  

最后,将完成的帧输出到CSV

file_name = "/Users/kevin/Dropbox/Programming/Python/test_data/deleteme.csv"
result.to_csv(file_name)

相关内容

  • 没有找到相关文章

最新更新