根据钉钉群提供的“stock_name.csv”文件,利用Python软件随机选取20只股票,并且剔除ST股票,通过图书馆的CSMAR数据库或者其他数据库来源,调取2020年1月1日至2023年5月10日股票日收盘价数据,确保这20只股票都有完
时间: 2023-07-16 13:12:07 浏览: 84
stock_day.csv
5星 · 资源好评率100%
整的历史数据。以下是实现的步骤:
1. 读取 "stock_name.csv" 文件,获取所有的股票代码。
2. 随机选择 20 只股票代码,同时剔除 ST 股票代码。
3. 到 CSMAR 数据库或其他数据库中查询这 20 只股票代码的历史股票收盘价数据。
4. 确保这些股票在 2020 年 1 月 1 日至 2023 年 5 月 10 日之间都有完整的收盘价数据。
下面是一个示例代码,你可以根据自己的需求进行修改:
```python
import pandas as pd
import numpy as np
import random
import datetime
# 读取股票代码文件
df_stock = pd.read_csv('stock_name.csv', header=None, names=['code'])
# 剔除 ST 股票
df_stock = df_stock[~df_stock['code'].str.contains('ST')]
# 随机选择 20 只股票
random.seed(123)
codes = random.sample(df_stock['code'].tolist(), 20)
# 获取股票历史收盘价数据
start_date = datetime.date(2020, 1, 1)
end_date = datetime.date(2023, 5, 10)
prices = pd.DataFrame()
for code in codes:
# 查询股票收盘价数据
# 这里用 df 表示查询结果,假设有两列:日期和收盘价
df = query_stock_price_from_database(code, start_date, end_date)
# 确保数据完整
if len(df) == (end_date - start_date).days + 1:
# 重命名列名,并添加到 prices 数据框中
df = df.rename(columns={'date': '日期', 'price': code})
prices = pd.concat([prices, df[code]], axis=1)
# 输出最终的股票收盘价数据
print(prices)
```
需要注意的是,这里的 `query_stock_price_from_database` 函数需要根据具体的数据库和查询方式进行编写。在这个函数中,需要输入股票代码、起始日期和终止日期,输出对应的股票收盘价数据。
阅读全文