为什么运行不了呢?我觉得这没啥错误啊,分开运行的话,function1能运行,function3说我fig,ax。那一行错误

import pandas as pd

def function1():
df = pd.read_excel("practice3.xlsx", sheet_name='公式与函数', index_col=False)
df1 = df.dropna(subset=['手术方式'])
print(df1)
mean_N1 = 0
count_N1 = 0
mean_N2 = 0
count_N2 = 0
for i in df.index:
each_record = df.values[i]
if each_record[3] == "N1":
mean_N1 += each_record[4]
count_N1 += 1
if each_record[3] == "N2":
mean_N2 += each_record[4]
count_N2 += 1
print("手术方式为N1的平均住院天数为:", int(mean_N1/count_N1))
print("手术方式为N2的平均住院天数为:", int(mean_N2/count_N2))
def function2():
import pandas as pd
df = pd.read_excel("practice3.xlsx", sheet_name='result', index_col=False)
df1 = df.sort_values(by=['科室','手术方式'],ascending=[True,False])
df2 = df1.query('是否医保=="是"')
with pd.ExcelWriter('practice3.xlsx', mode='a')as writer:
df2.to_excel(writer, sheet_name='result')
def function3():
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_excel("practice3.xlsx", sheet_name="图表", usecols="D,E", index_col=False)
df2 = df.astype({"住院天数":"int64"})
labels = df2["手术方式"].values
data = df2["住院天数"].values
fig, ax = plt.subplot()
sns.violinplot(labels,data, scale="count", inner="quartile", palette="Set2")
ax.set_ylabel("住院天数",labelpad=10, fontsize=10, fontproperties="SimHei")
plt.show()

img

subplot只会传一个变量出来

同问,我哭死