为什么运行此代码时出现密钥错误“0”

2024-04-19 18:27:06 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试运行此代码时出现密钥错误0:

# Draw Plot
plt.figure(figsize=(13,10), dpi= 80)
sns.boxplot(x='demand', y='Price', data=df, notch=False)

# Add N Obs inside boxplot (optional)
def add_n_obs(df,group_col,y):
    medians_dict = {grp[0]:grp[1][y].median() for grp in df.groupby(group_col)}
    xticklabels = [x.get_text() for x in plt.gca().get_xticklabels()]
    n_obs = df.groupby(group_col)[y].size().values
    for (x, xticklabel), n_ob in zip(enumerate(xticklabels), n_obs):
        plt.text(x, medians_dict[xticklabel]*1.01, "#obs : "+str(n_ob), horizontalalignment='center', fontdict={'size':14}, color='white')

add_n_obs(df,group_col='demand',y='Price')    

# Decoration
plt.title('Box Plot', fontsize=22)
plt.ylim(10, 40)
plt.show()

Tags: inadddfforplotgrouppltcol
1条回答
网友
1楼 · 发布于 2024-04-19 18:27:06

我尝试使用seaborn提供的默认提示数据运行您的代码:

from matplotlib import pyplot as plt
import seaborn as sns

df = sns.load_dataset("tips")

# Draw Plot
plt.figure(figsize=(13,10), dpi= 80)
sns.boxplot(x="day", y="total_bill", data=df, notch=False)

# Add N Obs inside boxplot (optional)
def add_n_obs(df,group_col,y):
    medians_dict = {grp[0]:grp[1][y].median() for grp in df.groupby(group_col)}
    xticklabels = [x.get_text() for x in plt.gca().get_xticklabels()]
    n_obs = df.groupby(group_col)[y].size().values
    for (x, xticklabel), n_ob in zip(enumerate(xticklabels), n_obs):
        plt.text(x, medians_dict[xticklabel]*1.01, "#obs : "+str(n_ob), horizontalalignment='center', fontdict={'size':14}, color='white')

add_n_obs(df,group_col='day',y='total_bill')    

# Decoration
plt.title('Box Plot', fontsize=22)
plt.ylim(10, 40)
plt.show()

而且看起来效果不错。您确定您的数据帧变量df有'demand'和'Price'键吗?你知道吗

相关问题 更多 >