File size: 1,445 Bytes
2de3793
44ba9e4
 
 
 
2de3793
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44ba9e4
2de3793
bd43248
2de3793
 
 
 
bd43248
2de3793
 
bd43248
2de3793
 
 
 
 
44ba9e4
2de3793
44ba9e4
2de3793
44ba9e4
2de3793
 
 
 
 
44ba9e4
 
2de3793
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# outlier_detection_gradio.py

import pandas as pd
import gradio as gr

# Dummy dataset
data = {
    "Order ID": [101, 102, 103, 104, 105, 106],
    "Customer Name": ["Alice", "Bob", "Charlie", "David", "Eva", "Frank"],
    "Product": ["Laptop", "Mouse", "Keyboard", "Monitor", "Printer", "Tablet"],
    "Quantity": [1, 2, 1, 3, 2, 50],  # Notice 50 is an outlier
    "Price": [1000, 20, 50, 300, 150, 200]
}

df = pd.DataFrame(data)

# Outlier detection function
def detect_outliers(column_name):
    if column_name not in df.columns:
        return pd.DataFrame({"Error": [f"Column '{column_name}' does not exist."]})
    
    col_data = df[column_name]
    
    # Using IQR method
    Q1 = col_data.quantile(0.25)
    Q3 = col_data.quantile(0.75)
    IQR = Q3 - Q1
    
    lower_bound = Q1 - 1.5 * IQR
    upper_bound = Q3 + 1.5 * IQR
    
    # Flag outliers
    df_outliers = df.copy()
    df_outliers["Outlier"] = df_outliers[column_name].apply(
        lambda x: "Yes" if x < lower_bound or x > upper_bound else "No"
    )
    
    return df_outliers

# Gradio Interface
iface = gr.Interface(
    fn=detect_outliers,
    inputs=gr.Textbox(label="Column Name for Outlier Detection", placeholder="e.g., Quantity"),
    outputs=gr.Dataframe(label="Outlier Detection Result"),
    title="Outlier Detection Demo",
    description="Detects outliers in a specified column using the IQR method."
)

if __name__ == "__main__":
    iface.launch()