python利用pandas读取指定sheet页 (python pandas mysql数据处理详解)

【背景】

需要做一个预测投资组合portfolio未来收益的python脚本,类似的功能需要从数据源获取相关指数和股票的数据,一直以来都是用pandas_datareader从yahoo上面拿,但是后来忽然发现不能用了,这篇就说明一下遇到此问题的walk around.

pandasdatareader读取股票数据,python中用pandas如何导入数据

【分析】

由于数据源是yahoo那边的,package没有变动的情况下,只可能是yahoo那边做了什么修改导致现有的pandas_datareader命令不适用了。修改pandas_datareader不现实,也可能因小失大影响别的程序,所以开始查找有没有适用于当前yahoo的新数据获取命令。

[解决方法]

用yfinance包代替pandas_datareader包来执行*载下**。

【重点代码】

原来的*载下**方法:

data = wb.DataReader(stock['ticker'],'yfinance',start=START_DATE)['Adj Close']

新的*载下**方法是这句:

data = yf.download(stock['ticker'], start=START_DATE)['Adj Close']

用来存储Portfolio内容的Json文件内容如下:

{

"portfolio": [

{

"ticker": "^FTM",

"name": "FTSE 250",

"type": "index",

"weight": 0.1

},

{

"ticker": "VEMAX",

"name": "Vanguard Emerging Markets",

"type": "stock",

"weight": 0.7

},

{

"ticker": "UU.L",

"name": "United Utilities",

"type": "stock",

"weight": 0.1

},

{

"ticker": "BHP.L",

"name": "BHP Group",

"type": "stock",

"weight": 0.1

}

]

}

```

【运行结果】

Yahoo获得的数据:

Name: Adj Close, Length: 4214, dtype: float64

data Date

2007-01-02 406.399078

2007-01-03 394.147980

2007-01-04 380.207062

2007-01-05 373.447937

2007-01-08 375.771301

...

2023-08-31 2195.922607

2023-09-01 2224.892578

2023-09-04 2262.070801

2023-09-05 2255.793945

2023-09-06 2250.000000

最后得到的收益预测结果:

----------------------------------------------------------------

Estimated value of Portfolio in 2063 : £1,677.32

Expected Portfolio Return: 167.73%

Estimated Income £67.09

【补充】

关于如何实现投资组合收益预测的完整源码*载下**地址:

https://download.csdn.net/download/weixin_41697242/88309661