A Python-based Exploratory Data Analysis tool with two interfaces:
- Terminal — interactive menu-driven CLI
- Streamlit — web-based UI with file upload support
EDA Project/
│
├── app.py # Streamlit web application
├── main.py # Entry point — data loading
├── eda_utils.py # Orchestration layer for terminal flow
├── numeric_information.py # All numeric column analysis functions
└── categorical_information.py # All categorical column analysis functions
main.py ──────────────────────────────► data_reading()
│ (loads CSV)
│
│
│
└──► app.py ──────────────────► numeric_information.py
(Streamlit) └──► categorical_information.py
Install the required libraries:
pip install pandas numpy matplotlib seaborn streamlitstreamlit run app.pypython main.py- Upload any
.csvfile directly from your desktop via the file uploader - App halts gracefully until a file is provided
| Feature | Description |
|---|---|
| Shape | Displays total rows and columns |
| Column Information | Shows datatype, non-null count, null count, and null percentage for every column |
| Sample Rows | User selects how many random rows to preview |
| Feature | Description |
|---|---|
| Basic Description | Mean, Median, Std Dev, and full .describe() output |
| Outlier Detection | Auto-selects Z-Score method (normal distribution) or IQR method (skewed) |
| Missing Value Analysis | Null count, percentage, and suggested treatment |
| Missing Value Imputation | User chooses Yes/No to trigger imputation |
(Coming soon — plot functions pending return fig fix)
| Feature | Description |
|---|---|
| Basic Summary | Unique count and mode |
| Value Counts | Full frequency table |
| Missing Value Analysis | Null count, percentage, and suggested treatment |
| Missing Value Imputation | User chooses Yes/No to trigger imputation |
------------- EDA MENU -------------
1. Basic Information about Data
2. Information about a Particular Column
3. Exit
------------------------------------
For numeric columns, further options include:
- Basic DataFrame Info
- Describe Column
- Skew & KDE Plot
- Outlier Detection
- Missing Value Calculation
- Missing Value Imputation
| Function | Description | Returns |
|---|---|---|
Describing_numeric_column(df, col) |
Mean, std dev, describe | mean, std_dev |
calculate_skew_and_plot_kdeplot(df, col) |
Skew value + KDE plot | skew_value |
outlier_detection(df, col, skew, mean, std_dev) |
Detects outliers using Z-Score or IQR | Q1, Q2, Q3, IQR, Lower_Bound, Upper_Bound, new_df |
missing_value_calculation(df, col) |
Null count, percentage, verdict | null_values, null_pct, message |
whether_to_impute_missing_values(df, col, choice) |
Triggers imputation based on user choice | status message |
missing_value_treatment(df, col) |
Applies chosen imputation method | Modifies dataframe in place |
| Function | Description | Returns |
|---|---|---|
counting_information(df, col) |
Unique count, mode, value counts | Prints to console |
plot_countplot(df, col) |
Bar chart or pie chart based on cardinality | Prints to console |
The outlier_detection() function automatically picks the right method based on skew:
Skew ≤ 1 → Z-Score Method → Lower = mean - 3*std, Upper = mean + 3*std
Skew > 1 → IQR Method → Lower = Q1 - 1.5*IQR, Upper = Q3 + 1.5*IQR
calculate_skew_and_plot_kdeplot()— needsreturn figfix to render in Streamlitplot_countplot()— needsreturn figfix to render in Streamlit- Download button to export cleaned dataframe as CSV
Built as a learning project to practice EDA, OOP, and Streamlit development.