Python InvestPy包获取'Nifty50'指数的数据,获取股票历史数据函数不起作用

2024-10-16 17:15:22 发布

您现在位置:Python中文网/ 问答频道 /正文

在使用InvestPy软件包时,我可以使用内置函数“获取股票历史数据”轻松获取股票行情数据。 例如,在尝试获取Nifty50的索引数据时,运气就不一样了。快速查看功能中提供的所有印度股票<;投资获取股票(国家/地区/印度)>;显示与索引无关的内容

他们是使用软件包获得它的一种方式吗?我的另一个选择是用网页抓取索引。在官方文档here中找不到任何相关内容


Tags: 数据函数ltgt功能内容国家内置
1条回答
网友
1楼 · 发布于 2024-10-16 17:15:22

有一些方法是investpy用来收集有关索引的信息的。不幸的是,我找不到任何函数返回索引中每个成员的性能,但您可以(例如)获取有关索引的历史数据:

df = investpy.get_index_historical_data(index="Nifty 50",
                                        country="India",
                                        from_date='01/01/2018',
                                        to_date='01/01/2019')
                Open      High       Low     Close     Volume Currency
Date                                                                  
2018-01-01  10531.70  10537.85  10423.10  10435.55  134532000      INR
2018-01-02  10477.55  10495.20  10404.65  10442.20  158092000      INR
2018-01-03  10482.65  10503.60  10429.55  10443.20  172516992      INR
2018-01-04  10469.40  10513.00  10441.45  10504.80  180256992      INR
2018-01-05  10534.25  10566.10  10520.10  10558.85  186470000      INR
...              ...       ...       ...       ...        ...      ...
2018-12-26  10635.45  10747.50  10534.55  10729.85     271943      INR
2018-12-27  10817.90  10834.20  10764.45  10779.80     470160      INR
2018-12-28  10820.95  10893.60  10817.15  10859.90     253087      INR
2018-12-31  10913.20  10923.55  10853.20  10862.55     186495      INR
2019-01-01  10881.70  10923.60  10807.10  10910.10     159405      INR

[247 rows x 6 columns]

有关Index Data Retrieval的更多信息,请参见文档here

您还可以检索某个国家/地区所有股票的列表:

df = investpy.get_stocks_list(country="india") # returns 'list'
df = investpy.get_stocks(country="india") # returns 'pandas.DataFrame' (shown below)
     country                     name  ... currency symbol
0      india     Aditya Birla Capital  ...      INR   ADTB
1      india                  Hubtown  ...      INR   HUBT
2      india              3i Infotech  ...      INR   TIIN
3      india                 3M India  ...      INR   TMIN
4      india                ABB India  ...      INR    ABB
...      ...                      ...  ...      ...    ...
1706   india           G K P Printing  ...      INR   GKPP
1707   india         Vivid Mercantile  ...      INR   VIVD
1708   india            White Organic  ...      INR   WHIE
1709   india      Parshva Enterprises  ...      INR   PAHV
1710   india  SK International Export  ...      INR   SKIN

[1711 rows x 6 columns]

因为investpy不提供从某个指数中获取所有股票的功能,所以您必须自己对它们进行排序。幸运的是,investpy确实为您提供了一些函数,允许您获取有关特定索引(如上所述)的最近、历史等数据。如果您正在寻找这些股票的数据,您可以:

  1. 收集Nifty 50指数中每只股票的符号作为列表
  2. 建立一个循环,获取每个股票的历史数据
  3. 对数据执行操作,如写入CSV等

编辑

您提到无法找到MSCI Emerging Markets的数据,这是一个world索引。不幸的是,我无法将world指定为一个国家。我不知道这背后的原因是什么,但我确实深入研究了源代码以了解发生了什么:

事实证明world索引确实存在于investpy/resources/indices.csv内部,但它们在index_countries_as_list()中被过滤掉,因为world国家不存在于investpy/utils/constants.py中的变量INDEX_COUNTRIES内部。您可能希望提交一个问题here。下面是我能够做的一些事情,以验证MSCIEF是否存在,但同样,我不确定是否有方法获取有关此索引的数据

investpy.indices.get_indices_dict(country=None, columns=None, as_json=False)
{'country': 'world', 'name': 'MSCI Emerging Markets', 'full_name': 'MSCI Emerging Markets', 'symbol': 'MSCIEF', 'currency': 'USD', 'class': 'other_indices', 'market': 'global_indices'}

以及:

investpy.indices.search_indices(by="name", value="MSCI Emerging Markets")
  country                   name  ...          class          market
0   world  MSCI Emerging Markets  ...  other_indices  global_indices

[1 rows x 7 columns]

相关问题 更多 >