import numpy as np import scipy.stats as ss import pandas as pd import matplotlib.pyplot as plt import seaborn as sns df=pd.read_excel("./tmp_apply3.xlsx") sns.set_context(font_scale=30) plt.rcParams['font.family'] = 'FangSong' plv_tb=pd.pivot_table(df,values="sale",index=["FactoryName","JiJXH"],columns=["Xian"],aggfunc=np.mean) plt.figure(figsize=(100,1000)) min_val = plv_tb.loc[:, :, ["FactoryName", "JiJXH"]].values.min() max_val = plv_tb.loc[:, :, ["FactoryName", "JiJXH"]].values.max() sns.heatmap(plv_tb,vmin=min_val, vmax=max_val,cmap=sns.color_palette("RdYlBu",n_colors=10),annot=True, fmt='g', annot_kws={"size": 20}) plt.show()提示list index out of range,怎么修改
时间: 2023-11-11 12:07:42 浏览: 34
这个错误通常是由于尝试使用不存在的列表索引导致的。在这段代码中,有几个可能导致这个错误的地方:
1. `plv_tb.loc[:, :, ["FactoryName", "JiJXH"]]` 这里使用了三个冒号,但是在 Pandas 中,只能使用两个冒号。如果你想选择所有的行和列,则应该使用 `plv_tb.loc[:, ["FactoryName", "JiJXH"]]`。
2. `min_val = plv_tb.loc[:, :, ["FactoryName", "JiJXH"]].values.min()` 和 `max_val = plv_tb.loc[:, :, ["FactoryName", "JiJXH"]].values.max()` 中的 `[:, :, ["FactoryName", "JiJXH"]]` 也应该改为 `[:, ["FactoryName", "JiJXH"]]`。
修改后的代码应该像这样:
```
import numpy as np
import scipy.stats as ss
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
df=pd.read_excel("./tmp_apply3.xlsx")
sns.set_context(font_scale=30)
plt.rcParams['font.family'] = 'FangSong'
plv_tb=pd.pivot_table(df,values="sale",index=["FactoryName","JiJXH"],columns=["Xian"],aggfunc=np.mean)
plt.figure(figsize=(100,1000))
min_val = plv_tb.loc[:, ["FactoryName", "JiJXH"]].values.min()
max_val = plv_tb.loc[:, ["FactoryName", "JiJXH"]].values.max()
sns.heatmap(plv_tb,vmin=min_val, vmax=max_val,cmap=sns.color_palette("RdYlBu",n_colors=10),annot=True, fmt='g', annot_kws={"size": 20})
plt.show()
```