简体   繁体   English

使用 datareader 获取有关股票的数据

[英]Getting data about stocks using datareader

How do I make this look less ugly and fewer lines?如何让这看起来不那么难看和更少的线条? Being able to get lots of stock exported into a csv file and also maybe being able to have a new line after each stocks information so I don't have to put it in myself.能够将大量股票导出到一个 csv 文件中,并且还可以在每个股票信息后有一个新行,这样我就不必自己输入了。 Ps Also is there a way to get market cap and possibly float with it. Ps 还有一种方法可以获得市值并可能随它浮动。 please

This is what I'm trying to achieve这就是我正在努力实现的目标


import datetime as dt

import matplotlib.pyplot as plt

from matplotlib import style

import pandas as pd

import pandas_datareader.data as web

style.use('ggplot')

start = dt.datetime(2019,12,20)

end = dt.datetime(2019,12,31)

df = web.DataReader('SDRL', 'yahoo', start, end)

df2 = web.DataReader('SLNO', 'yahoo', start, end)

df3 = web.DataReader('PTI', 'yahoo', start, end)

df4 = web.DataReader('LCTX', 'yahoo', start, end)

df5 = web.DataReader('CLPS', 'yahoo', start, end)

df6 = web.DataReader('AGTC', 'yahoo', start, end)

df7 = web.DataReader('NLNK', 'yahoo', start, end)

df8 = web.DataReader('SAVA', 'yahoo', start, end)

df9 = web.DataReader('MBOT', 'yahoo', start, end)

df10 = web.DataReader('HSDT', 'yahoo', start, end)

df11 = web.DataReader('CTXR', 'yahoo', start, end)

df12 = web.DataReader('ISCNF', 'yahoo', start, end)

df13 = web.DataReader('DCAR', 'yahoo', start, end)

df14 = web.DataReader('LAIX', 'yahoo', start, end)

df15 = web.DataReader('MRNS', 'yahoo', start, end)

df16 = web.DataReader('DRRX', 'yahoo', start, end)

df17 = web.DataReader('NLNK', 'yahoo', start, end)

df18 = web.DataReader('CANF', 'yahoo', start, end)

df19 = web.DataReader('CBKC', 'yahoo', start, end)

df20 = web.DataReader('GSAT', 'yahoo', start, end)

df21 = web.DataReader('CYDY', 'yahoo', start, end)

df22 = web.DataReader('SDRL', 'yahoo', start, end)

df23 = web.DataReader('MRSN', 'yahoo', start, end)

df24 = web.DataReader('ASRT', 'yahoo', start, end)

df25 = web.DataReader('BB', 'yahoo', start, end)

df26= web.DataReader('FCEL', 'yahoo', start, end)

df27 = web.DataReader('MDNAF', 'yahoo', start, end)

df28 = web.DataReader('INPX', 'yahoo', start, end)

df29 = web.DataReader('TKRFF', 'yahoo', start, end)

df30 = web.DataReader('PRTK', 'yahoo', start, end)





df.append(df2)
df52 = df.append(df2)

df52.append(df3)
df53 = df52.append(df3)

df53.append(df4)
df54 = df53.append(df4)

df54.append(df5)
df55 = df54.append(df5)

df55.append(df6)
df56 = df55.append(df6)

df56.append(df7)
df57 = df56.append(df7)

df57.append(df8)
df58 = df57.append(df8)

df58.append(df9)
df59 = df58.append(df9)

df59.append(df10)
df60 = df59.append(df10)

df60.append(df11)
df61 = df60.append(df11)

df61.append(df12)
df62 = df61.append(df12)

df62.append(df13)
df63 = df62.append(df13)

df63.append(df14)
df64 = df63.append(df14)

df64.append(df15)
df65 = df64.append(df15)

df65.append(df16)
df66 = df65.append(df16)

df66.append(df17)
df67 = df66.append(df17)

df67.append(df18)
df68 = df67.append(df18)

df68.append(df19)
df69 = df68.append(df19)

df69.append(df20)
df70 = df69.append(df20)

df70.append(df21)
df71 = df70.append(df21)

df71.append(df22)
df72 = df71.append(df22)

df72.append(df23)
df73 = df72.append(df23)

df73.append(df24)
df74 = df73.append(df24)

df74.append(df25)
df75 = df74.append(df25)

df75.append(df26)
df76 = df75.append(df26)

df76.append(df27)
df77 = df76.append(df27)

df77.append(df28)
df78 = df77.append(df28)

df78.append(df29)
df79 = df78.append(df29)

df79.append(df30)
df80 = df79.append(df30)







print(df80)

df80.to_csv('Gap-Ups.csv')
df80 = pd.read_csv('Gap-Ups.csv', parse_dates=True, index_col=0)

I suggest using the yfinance package.我建议使用yfinance包。 https://pypi.org/project/yfinance/ https://pypi.org/project/yfinance/

You can use您可以使用

import yfinance as yf
data = yf.download("SPY AAPL", start="2017-01-01", end="2017-04-30")

and it returns a single pandas dataframe with all of the stock data for whatever tickers you throw in. I believe it returns market cap as well, but not float data.它会返回一个包含所有股票数据的 Pandas 数据框,无论你投入什么股票。我相信它也会返回市值,但不会返回浮动数据。

Use pd.concat :使用pd.concat

#Enter here all the list
companies_list = ['SDRL','SLNO','PTI']
df = pd.concat([web.DataReader(company, 'yahoo', start, end) 
                for company in companies_list])

Although in this way you will not distinguish the origin of the data, so I recommend concatenating with axis = 1 or using a dataframe dictionary.虽然这样你不会区分数据的来源,所以我建议连接axis = 1或使用数据框字典。

#Enter here all the list
companies_list = ['SDRL','SLNO','PTI']
df = pd.concat([(web.DataReader(company, 'yahoo', start, end)
                    .add_suffix(f'_{company}'))
                for company in companies_list],axis = 1)

Creating a dict of DataFrames创建 DataFrame 的字典

d_company = {company:web.DataReader(company, 'yahoo', start, end)
             for company in companies_list}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM