# 循环对每个 DataFrame 执行相同的操作 for i in range(14): df = dfs[i] #label = 'Stock {} Close'.format(i+1) for i in range(14): df = dfs[i] stock_name = df['name'].iloc[0] # 获取股票名字 label = '{} Close'.format(stock_name) # 构造标签 ax.plot(df['date'], df['close'], label=label) ax.plot(df['date'], df['close'], label=label)出来的label为什么会重复
时间: 2024-02-07 18:02:12 浏览: 25
问题出在内层循环中的变量名与外层循环中的变量名重复了。在内层循环中,使用了变量名 i,而这个变量名已经在外层循环中使用过了。所以,内层循环中的 i 覆盖了外层循环中的 i,导致标签重复。解决方法是在内层循环中使用一个不同的变量名。例如,可以将内层循环中的变量名改为 j,如下所示:
```
for i in range(14):
df = dfs[i]
stock_name = df['name'].iloc[0] # 获取股票名字
label = '{} Close'.format(stock_name) # 构造标签
ax.plot(df['date'], df['close'], label=label)
```
这样,就可以避免标签重复的问题。
相关问题
for i, file_path in enumerate(file_paths): df = pd.read_excel(file_path) for j in range(0, 91): for k in range(0, 500): a = pd.DataFrame(df.iloc[2 + 3 * k:5 + 3 * k, 7 + j].values) # 将列表转换为 DataFrame data = pd.concat([data, a], axis=1) # 将 a 添加到 data 中 print(a)计算平均值并输出
要计算所有a的平均值,并输出结果,你可以在所有循环结束后,使用numpy库中的mean()函数来计算a的平均值。具体的代码如下所示:
```python
import numpy as np
# 循环结束后,计算所有a的平均值
all_a = []
for i, file_path in enumerate(file_paths):
df = pd.read_excel(file_path)
for j in range(0, 91):
for k in range(0, 500):
a = pd.DataFrame(df.iloc[2 + 3 * k:5 + 3 * k, 7 + j].values) # 将列表转换为 DataFrame
data = pd.concat([data, a], axis=1) # 将 a 添加到 data 中
all_a.append(a)
all_a_avg = np.mean(all_a) # 计算所有a的平均值
# 打印所有a的平均值
print("所有a的平均值为:", all_a_avg)
```
需要注意的是,这段代码应该放在所有循环结束后,否则每次循环都会打印一次a的平均值。另外,这里使用了一个列表`all_a`来存储所有的a,然后再计算平均值。
ax.plot(df1['date'], df1['close'], label='Stock 1 Close')写一个循环,相同操作,1到14
你可以使用一个循环来对每个 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()` 函数显示图形。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)