如何改进数据可视化问题中多个图表类型的错误处理

问题描述 投票:0回答:1

我正在使用 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]
}

我尝试仅为计数图创建异常,但它与初始异常块冲突。 我可以删除整个异常块,但它会减少编码的动态性以及与输入变量相关的错误

python error-handling visualization
1个回答
0
投票

我的印象是您在问如何删除指定计数图的冗余用户提示?

在这种情况下,您可以将输入绘图类型的提示提前到数据输入之前:

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")

我希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.