股票名字在每个stock1.csv中怎么提取
时间: 2024-02-21 10:01:58 浏览: 166
如果每个 `stock1.csv` 文件的文件名就是对应的股票名,那么可以在代码中添加一个列表来存储所有股票的名字,然后在循环中使用 `os.path.basename()` 函数获取文件名,再使用字符串切片来提取股票名。
以下是修改后的代码:
```
import os
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.font_manager import FontProperties
# 存储股票名字的列表
stocks = ['stock1', 'stock2', 'stock3', 'stock4', 'stock5', 'stock6', 'stock7', 'stock8', 'stock9', 'stock10', 'stock11', 'stock12', 'stock13', 'stock14']
# 读取股票数据
for stock in stocks:
df = pd.read_csv(f'{stock}.csv', header=None, names=['date', 'open', 'high', 'low', 'close'])
# 将日期转换为数字
df['date'] = df['date'].apply(lambda x: mdates.date2num(pd.to_datetime(x)))
# 获取日期数据的最小值和最大值
date_min = mdates.date2num(df['date'].min())
date_max = mdates.date2num(df['date'].max())
# 绘制K线图
fig, ax = plt.subplots()
ax.plot(df['date'], df['close'], label='Close')
ax.plot(df['date'], df['open'], label='Open')
ax.plot(df['date'], df['high'], label='High')
ax.plot(df['date'], df['low'], label='Low')
ax.legend()
ax.set_xlabel('Date')
ax.set_ylabel('Price')
ax.set_title(stock.capitalize())
# 设置横轴的显示格式和间隔
ax.xaxis.set_major_locator(mdates.YearLocator(base=1)) # 设置横坐标主刻度为年份
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y')) # 设置刻度标签的格式为"年"
ax.xaxis.set_minor_locator(mdates.MonthLocator(bymonth=(3, 6, 9, 12))) # 设置横坐标次刻度为季度
ax.tick_params(axis='x', which='minor', labelsize=8, labelrotation=45) # 设置次刻度标签的大小和旋转角度
# 设置斜体字体属性
font = FontProperties(size=10, style='italic')
plt.xticks(fontproperties=font) # 设置刻度标签为斜体
plt.savefig(f'{stock}.jpg') # 保存图表
plt.show() # 显示图表
```
这段代码中,使用了 `os.path.basename()` 函数来获取文件名,然后使用 `capitalize()` 方法将股票名的首字母大写。由于这里只是一个示例,所以股票名字列表是手动添加的,如果有很多股票需要处理,可以使用其他方法来自动化生成股票名字列表。
阅读全文