我正在使用 Seaborn 和 Matplotlib 开发一个用于数据可视化的 Python 函数。该函数应该处理不同类型的图表(条形图、折线图、散点图)并管理
y_column
可能为空的情况。但是,我遇到了该函数如何处理这些场景的问题。
这是我最后的尝试,注意if语句开头使用了y_column,请忽略。
将 matplotlib.pyplot 导入为 plt 将seaborn导入为sns
def visualize(df):
print(df.columns)
chart_types = ["bar chart", "line chart", "scatter chart", "count plot"]
x_column = input("Input the X column: ").strip()
y_column = input("Input the Y column: ").strip()
if x_column not in df.columns:
raise NameError(f"{x_column} not found in the dataframe")
if y_column not in df.columns:
raise NameError(f"{y_column} not found in the dataframe")
chart_name = input("Which chart do you want?: ").strip().lower()
if chart_name not in chart_types:
raise TypeError("Chart Unavailable")
if chart_name == "count plot":
plt.figure(figsize=(10, 6))
sns.countplot(data=df, x=x_column)
plt.title(f"Count Plot showing value counts of {x_column}")
plt.show()
elif chart_name == "bar chart":
plt.figure(figsize=(10, 6))
sns.barplot(data=df, x=x_column, y=y_column)
plt.title(f"Bar Chart showing {x_column} against {y_column}")
plt.show()
elif chart_name == "line chart":
plt.figure(figsize=(10, 6))
sns.lineplot(data=df, x=x_column, y=y_column)
plt.title(f"Line Chart showing {x_column} against {y_column}")
plt.show()
elif chart_name == "scatter chart":
plt.figure(figsize=(10, 6))
sns.scatterplot(data=df, x=x_column, y=y_column)
plt.title(f"Scatter Chart showing {x_column} against {y_column}")
plt.show()
有没有一种方法可以使错误处理对于每种情况都更加动态?
这是一个示例数据框
data = {
'Category': ['A', 'B', 'C', 'D', 'E'],
'Values': [10, 20, 15, 30, 25],
'Dates': pd.date_range(start='2024-01-01', periods=5, freq='D'),
'Sizes': [100, 200, 150, 300, 250]
}
我尝试仅为计数图创建异常,但它与初始异常块冲突。 我可以删除整个异常块,但它会减少编码的动态性以及与输入变量相关的错误
我的印象是您在问如何删除指定计数图的冗余用户提示?
在这种情况下,您可以将输入绘图类型的提示提前到数据输入之前:
chart_name = input("Which chart do you want?: ").strip().lower()
if chart_name not in chart_types:
raise TypeError("Chart Unavailable")
x_column = input("Input the X column: ").strip()
if chart_name != "count plot":
y_column = input("Input the Y column: ").strip()
if x_column not in df.columns:
raise NameError(f"{x_column} not found in the dataframe")
if y_column not in df.columns:
raise NameError(f"{y_column} not found in the dataframe")
我希望这有帮助。