ax.plot(df1['date'], df1['close'], label='Stock 1 Close')写一个循环,相同操作,1到14
时间: 2023-08-16 13:07:37 浏览: 138
你可以使用一个循环来对每个 DataFrame 执行相同的操作。具体实现方法如下:
```python
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# 创建一个空列表,用于存储所有的 DataFrame
dfs = []
# 循环读取文件
for i in range(1, 15):
filename = 'E:/应统案例大赛/附件1-股票交易数据/a{}.xlsx'.format(i)
df = pd.read_excel(filename)
# 将每个 DataFrame 添加到列表中
dfs.append(df)
# 计算所有 DataFrame 的 'date' 列的最小值
date_min = min([df['date'].min() for df in dfs])
# 创建一个 Matplotlib Figure 对象和一个 Axes 对象
fig, ax = plt.subplots()
# 循环对每个 DataFrame 执行相同的操作
for i in range(14):
df = dfs[i]
label = 'Stock {} Close'.format(i+1)
ax.plot(df['date'], df['close'], label=label)
# 设置 x 轴的日期格式
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
# 添加图例
ax.legend()
# 显示图形
plt.show()
```
这个循环会从 a1.xlsx 读取到 a14.xlsx,每次读取一个文件,并将其存储在 `df` 变量中,然后将每个 DataFrame 添加到 `dfs` 列表中。接下来,使用列表推导式计算所有 DataFrame 的 'date' 列的最小值,并将其赋值给 `date_min` 变量。然后,创建一个 Matplotlib Figure 对象和一个 Axes 对象。接下来,循环遍历 `dfs` 列表中的每个 DataFrame,并使用 `ax.plot()` 函数绘制每个 DataFrame 的 'date' 列和 'close' 列。在这个例子中,我使用 `label = 'Stock {} Close'.format(i+1)` 创建一个标签,它包含了每个股票的名称。然后,我将这个标签传递给 `ax.plot()` 函数,并设置 `label` 参数。最后,我添加了一个日期格式和一个图例,并使用 `plt.show()` 函数显示图形。
阅读全文