smarteda-shlok 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Shlok Apte
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ include README.md
2
+ include LICENSE
3
+ include requirements.txt
@@ -0,0 +1,187 @@
1
+ Metadata-Version: 2.4
2
+ Name: smarteda-shlok
3
+ Version: 1.0.0
4
+ Summary: A lightweight Python library for automated exploratory data analysis (EDA).
5
+ Author: Shlok Apte
6
+ Author-email: Shlok Apte <shlokapte271@gmail.com>
7
+ License: MIT
8
+ Keywords: eda,exploratory-data-analysis,data-analysis,data-science,pandas,numpy,statistics,analytics,machine-learning
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: Education
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
14
+ Classifier: Topic :: Software Development :: Libraries
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Requires-Python: >=3.8
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: pandas>=2.0
27
+ Requires-Dist: numpy>=1.24
28
+ Dynamic: author
29
+ Dynamic: license-file
30
+ Dynamic: requires-python
31
+
32
+ # SmartEDA
33
+
34
+ SmartEDA is a lightweight Python library for **Automated Exploratory Data Analysis (EDA)**. It helps data analysts, data scientists, students, and researchers quickly understand their datasets by generating essential statistical insights with a single function call.
35
+
36
+ ---
37
+
38
+ ## โœจ Features
39
+
40
+ - ๐Ÿ“Š Dataset Summary
41
+ - ๐Ÿงน Missing Value Analysis
42
+ - ๐Ÿ” Duplicate Analysis
43
+ - ๐Ÿ“ˆ Numerical Feature Analysis
44
+ - ๐Ÿ“ Categorical Feature Analysis
45
+ - ๐Ÿ”— Correlation Analysis
46
+ - ๐Ÿ“ฆ Outlier Detection
47
+ - โšก Fast and Lightweight
48
+ - ๐Ÿ One-Line Dataset Analysis
49
+
50
+ ---
51
+
52
+ ## ๐Ÿ“ฆ Installation
53
+
54
+ ```bash
55
+ pip install smarteda
56
+ ```
57
+
58
+ ---
59
+
60
+ ## ๐Ÿš€ Quick Start
61
+
62
+ ```python
63
+ import pandas as pd
64
+ from smarteda import analyzer
65
+
66
+ # Load dataset
67
+ df = pd.read_csv("Titanic.csv")
68
+
69
+ # Generate EDA Report
70
+ analyzer(df)
71
+ ```
72
+
73
+ ---
74
+
75
+ ## ๐Ÿ“‹ Example Output
76
+
77
+ ```
78
+ ======================================================================
79
+ SMARTEDA REPORT
80
+ ======================================================================
81
+
82
+ ๐Ÿ“Š DATASET SUMMARY
83
+
84
+ Rows : 891
85
+ Columns : 12
86
+ Memory Usage (MB) : 0.28
87
+ Duplicate Rows : 0
88
+ Missing Cells : 866
89
+ Missing Percentage : 8.10
90
+
91
+ ๐Ÿงน MISSING VALUE ANALYSIS
92
+
93
+ Total Missing Cells : 866
94
+ Columns with Missing Values : 3
95
+ Missing Percentage : 8.10
96
+
97
+ ๐Ÿ” DUPLICATE ANALYSIS
98
+
99
+ Duplicate Rows : 0
100
+
101
+ ๐Ÿ“ˆ NUMERICAL ANALYSIS
102
+
103
+ ...
104
+
105
+ ๐Ÿ“ CATEGORICAL ANALYSIS
106
+
107
+ ...
108
+
109
+ ๐Ÿ”— CORRELATION ANALYSIS
110
+
111
+ ...
112
+
113
+ ๐Ÿ“ฆ OUTLIER ANALYSIS
114
+
115
+ ...
116
+ ```
117
+
118
+ ---
119
+
120
+ ## ๐Ÿ“š Modules
121
+
122
+ | Module | Description |
123
+ |---------|-------------|
124
+ | `analyzer.py` | Generates the complete EDA report |
125
+ | `summary.py` | Dataset summary |
126
+ | `missing.py` | Missing value analysis |
127
+ | `duplicates.py` | Duplicate row analysis |
128
+ | `numerical.py` | Numerical statistics |
129
+ | `categorical.py` | Categorical feature analysis |
130
+ | `correlation.py` | Correlation analysis |
131
+ | `outliers.py` | Outlier detection |
132
+
133
+ ---
134
+
135
+ ## ๐Ÿ’ป Requirements
136
+
137
+ - Python 3.9 or higher
138
+ - pandas
139
+ - numpy
140
+
141
+ ---
142
+
143
+ ## ๐Ÿ“‚ Project Structure
144
+
145
+ ```
146
+ smarteda/
147
+ โ”‚
148
+ โ”œโ”€โ”€ src/
149
+ โ”‚ โ””โ”€โ”€ smarteda/
150
+ โ”‚ โ”œโ”€โ”€ __init__.py
151
+ โ”‚ โ”œโ”€โ”€ analyzer.py
152
+ โ”‚ โ”œโ”€โ”€ summary.py
153
+ โ”‚ โ”œโ”€โ”€ missing.py
154
+ โ”‚ โ”œโ”€โ”€ duplicates.py
155
+ โ”‚ โ”œโ”€โ”€ numerical.py
156
+ โ”‚ โ”œโ”€โ”€ categorical.py
157
+ โ”‚ โ”œโ”€โ”€ correlation.py
158
+ โ”‚ โ””โ”€โ”€ outliers.py
159
+ โ”‚
160
+ โ”œโ”€โ”€ pyproject.toml
161
+ โ”œโ”€โ”€ README.md
162
+ โ”œโ”€โ”€ LICENSE
163
+ โ””โ”€โ”€ MANIFEST.in
164
+ ```
165
+
166
+ ---
167
+
168
+ ## ๐ŸŽฏ Why SmartEDA?
169
+
170
+ - Beginner-friendly
171
+ - Lightweight and fast
172
+ - Easy to understand
173
+ - Modular architecture
174
+ - Works seamlessly with Pandas DataFrames
175
+ - Designed for quick exploratory data analysis
176
+
177
+ ---
178
+
179
+ ## ๐Ÿ“„ License
180
+
181
+ This project is licensed under the **MIT License**.
182
+
183
+ ---
184
+
185
+ ## ๐Ÿ‘จโ€๐Ÿ’ป Author
186
+
187
+ **Shlok Apte**
@@ -0,0 +1,156 @@
1
+ # SmartEDA
2
+
3
+ SmartEDA is a lightweight Python library for **Automated Exploratory Data Analysis (EDA)**. It helps data analysts, data scientists, students, and researchers quickly understand their datasets by generating essential statistical insights with a single function call.
4
+
5
+ ---
6
+
7
+ ## โœจ Features
8
+
9
+ - ๐Ÿ“Š Dataset Summary
10
+ - ๐Ÿงน Missing Value Analysis
11
+ - ๐Ÿ” Duplicate Analysis
12
+ - ๐Ÿ“ˆ Numerical Feature Analysis
13
+ - ๐Ÿ“ Categorical Feature Analysis
14
+ - ๐Ÿ”— Correlation Analysis
15
+ - ๐Ÿ“ฆ Outlier Detection
16
+ - โšก Fast and Lightweight
17
+ - ๐Ÿ One-Line Dataset Analysis
18
+
19
+ ---
20
+
21
+ ## ๐Ÿ“ฆ Installation
22
+
23
+ ```bash
24
+ pip install smarteda
25
+ ```
26
+
27
+ ---
28
+
29
+ ## ๐Ÿš€ Quick Start
30
+
31
+ ```python
32
+ import pandas as pd
33
+ from smarteda import analyzer
34
+
35
+ # Load dataset
36
+ df = pd.read_csv("Titanic.csv")
37
+
38
+ # Generate EDA Report
39
+ analyzer(df)
40
+ ```
41
+
42
+ ---
43
+
44
+ ## ๐Ÿ“‹ Example Output
45
+
46
+ ```
47
+ ======================================================================
48
+ SMARTEDA REPORT
49
+ ======================================================================
50
+
51
+ ๐Ÿ“Š DATASET SUMMARY
52
+
53
+ Rows : 891
54
+ Columns : 12
55
+ Memory Usage (MB) : 0.28
56
+ Duplicate Rows : 0
57
+ Missing Cells : 866
58
+ Missing Percentage : 8.10
59
+
60
+ ๐Ÿงน MISSING VALUE ANALYSIS
61
+
62
+ Total Missing Cells : 866
63
+ Columns with Missing Values : 3
64
+ Missing Percentage : 8.10
65
+
66
+ ๐Ÿ” DUPLICATE ANALYSIS
67
+
68
+ Duplicate Rows : 0
69
+
70
+ ๐Ÿ“ˆ NUMERICAL ANALYSIS
71
+
72
+ ...
73
+
74
+ ๐Ÿ“ CATEGORICAL ANALYSIS
75
+
76
+ ...
77
+
78
+ ๐Ÿ”— CORRELATION ANALYSIS
79
+
80
+ ...
81
+
82
+ ๐Ÿ“ฆ OUTLIER ANALYSIS
83
+
84
+ ...
85
+ ```
86
+
87
+ ---
88
+
89
+ ## ๐Ÿ“š Modules
90
+
91
+ | Module | Description |
92
+ |---------|-------------|
93
+ | `analyzer.py` | Generates the complete EDA report |
94
+ | `summary.py` | Dataset summary |
95
+ | `missing.py` | Missing value analysis |
96
+ | `duplicates.py` | Duplicate row analysis |
97
+ | `numerical.py` | Numerical statistics |
98
+ | `categorical.py` | Categorical feature analysis |
99
+ | `correlation.py` | Correlation analysis |
100
+ | `outliers.py` | Outlier detection |
101
+
102
+ ---
103
+
104
+ ## ๐Ÿ’ป Requirements
105
+
106
+ - Python 3.9 or higher
107
+ - pandas
108
+ - numpy
109
+
110
+ ---
111
+
112
+ ## ๐Ÿ“‚ Project Structure
113
+
114
+ ```
115
+ smarteda/
116
+ โ”‚
117
+ โ”œโ”€โ”€ src/
118
+ โ”‚ โ””โ”€โ”€ smarteda/
119
+ โ”‚ โ”œโ”€โ”€ __init__.py
120
+ โ”‚ โ”œโ”€โ”€ analyzer.py
121
+ โ”‚ โ”œโ”€โ”€ summary.py
122
+ โ”‚ โ”œโ”€โ”€ missing.py
123
+ โ”‚ โ”œโ”€โ”€ duplicates.py
124
+ โ”‚ โ”œโ”€โ”€ numerical.py
125
+ โ”‚ โ”œโ”€โ”€ categorical.py
126
+ โ”‚ โ”œโ”€โ”€ correlation.py
127
+ โ”‚ โ””โ”€โ”€ outliers.py
128
+ โ”‚
129
+ โ”œโ”€โ”€ pyproject.toml
130
+ โ”œโ”€โ”€ README.md
131
+ โ”œโ”€โ”€ LICENSE
132
+ โ””โ”€โ”€ MANIFEST.in
133
+ ```
134
+
135
+ ---
136
+
137
+ ## ๐ŸŽฏ Why SmartEDA?
138
+
139
+ - Beginner-friendly
140
+ - Lightweight and fast
141
+ - Easy to understand
142
+ - Modular architecture
143
+ - Works seamlessly with Pandas DataFrames
144
+ - Designed for quick exploratory data analysis
145
+
146
+ ---
147
+
148
+ ## ๐Ÿ“„ License
149
+
150
+ This project is licensed under the **MIT License**.
151
+
152
+ ---
153
+
154
+ ## ๐Ÿ‘จโ€๐Ÿ’ป Author
155
+
156
+ **Shlok Apte**
@@ -0,0 +1,57 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "smarteda-shlok"
7
+ version = "1.0.0"
8
+ description = "A lightweight Python library for automated exploratory data analysis (EDA)."
9
+
10
+ readme = "README.md"
11
+ requires-python = ">=3.9"
12
+
13
+ authors = [
14
+ { name = "Shlok Apte", email = "shlokapte271@gmail.com" }
15
+ ]
16
+
17
+ license = { text = "MIT" }
18
+
19
+ keywords = [
20
+ "eda",
21
+ "exploratory-data-analysis",
22
+ "data-analysis",
23
+ "data-science",
24
+ "pandas",
25
+ "numpy",
26
+ "statistics",
27
+ "analytics",
28
+ "machine-learning"
29
+ ]
30
+
31
+ dependencies = [
32
+ "pandas>=2.0",
33
+ "numpy>=1.24"
34
+ ]
35
+
36
+ classifiers = [
37
+ "Development Status :: 4 - Beta",
38
+ "Intended Audience :: Developers",
39
+ "Intended Audience :: Education",
40
+ "Intended Audience :: Science/Research",
41
+ "Topic :: Scientific/Engineering :: Information Analysis",
42
+ "Topic :: Software Development :: Libraries",
43
+ "License :: OSI Approved :: MIT License",
44
+ "Operating System :: OS Independent",
45
+ "Programming Language :: Python :: 3",
46
+ "Programming Language :: Python :: 3.9",
47
+ "Programming Language :: Python :: 3.10",
48
+ "Programming Language :: Python :: 3.11",
49
+ "Programming Language :: Python :: 3.12",
50
+ "Programming Language :: Python :: 3.13"
51
+ ]
52
+
53
+ [tool.setuptools]
54
+ package-dir = {"" = "src"}
55
+
56
+ [tool.setuptools.packages.find]
57
+ where = ["src"]
@@ -0,0 +1,6 @@
1
+ pandas
2
+ numpy
3
+ matplotlib
4
+ seaborn
5
+ openpyxl
6
+ ipython
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,41 @@
1
+ from setuptools import setup, find_packages
2
+
3
+
4
+ setup(
5
+ name="smarteda-shlok",
6
+ version="1.0.0",
7
+
8
+ author="Shlok Apte",
9
+ author_email="shlokapte271@gmail.com",
10
+
11
+ description="Automated Exploratory Data Analysis Python Library",
12
+
13
+ long_description=open(
14
+ "README.md",
15
+ encoding="utf-8"
16
+ ).read(),
17
+
18
+ long_description_content_type="text/markdown",
19
+
20
+ packages=find_packages(),
21
+
22
+ install_requires=[
23
+ "pandas",
24
+ "numpy",
25
+ "matplotlib",
26
+ "seaborn",
27
+ "openpyxl",
28
+ "ipython"
29
+ ],
30
+
31
+ python_requires=">=3.8",
32
+
33
+ license="MIT",
34
+
35
+ classifiers=[
36
+ "Programming Language :: Python :: 3",
37
+ "License :: OSI Approved :: MIT License",
38
+ "Operating System :: OS Independent",
39
+ "Topic :: Scientific/Engineering :: Information Analysis"
40
+ ],
41
+ )
@@ -0,0 +1,3 @@
1
+ from .analyzer import analyzer
2
+
3
+ __version__ = "1.0.0"
@@ -0,0 +1,121 @@
1
+ import pandas as pd
2
+ from IPython.display import display
3
+
4
+ from .summary import dataset_summary
5
+ from .missing import missing_summary
6
+ from .duplicates import duplicate_analysis
7
+ from .numerical import numerical_analysis
8
+ from .categorical import categorical_analysis
9
+ from .correlation import correlation_analysis
10
+ from .outliers import outlier_analysis
11
+
12
+
13
+ def analyzer(df, return_report=False):
14
+
15
+ summary = dataset_summary(df)
16
+ missing = missing_summary(df)
17
+ duplicates = duplicate_analysis(df)
18
+ numerical = numerical_analysis(df)
19
+ categorical= categorical_analysis(df)
20
+ correlation= correlation_analysis(df)
21
+ outliers= outlier_analysis(df)
22
+
23
+
24
+
25
+
26
+ print("="*70)
27
+ print("SMARTEDA REPORT")
28
+ print("="*70)
29
+
30
+
31
+ # Dataset Summary
32
+ print("\n๐Ÿ“Š DATASET SUMMARY")
33
+
34
+ display(
35
+ pd.DataFrame(
36
+ summary.items(),
37
+ columns=["Metric", "Value"]
38
+ ).style.hide(axis="index")
39
+ )
40
+
41
+
42
+ # Missing Value Analysis
43
+ print("\n๐Ÿงน MISSING VALUE ANALYSIS")
44
+
45
+ display(
46
+ pd.DataFrame(
47
+ missing.items(),
48
+ columns=["Metric", "Value"]
49
+ ).style.hide(axis="index")
50
+ )
51
+
52
+
53
+ # Duplicate Analysis
54
+ print("\n๐Ÿ” DUPLICATE VALUE ANALYSIS")
55
+
56
+ duplicate_report = {
57
+ "Total Rows": duplicates["Total Rows"],
58
+ "Duplicate Rows": duplicates["Duplicate Rows"],
59
+ "Duplicate Percentage": duplicates["Duplicate Percentage"]
60
+ }
61
+
62
+
63
+ display(
64
+ pd.DataFrame(
65
+ duplicate_report.items(),
66
+ columns=["Metric", "Value"]
67
+ ).style.hide(axis="index")
68
+ )
69
+
70
+
71
+ print("\n๐Ÿ”ข NUMERICAL ANALYSIS")
72
+ display(
73
+ numerical
74
+ )
75
+
76
+ print("\n๐Ÿ”ค CATEGORICAL ANALYSIS")
77
+
78
+ display(categorical)
79
+
80
+
81
+ print("\n๐Ÿ”— CORRELATION ANALYSIS")
82
+
83
+
84
+ print("\nCorrelation Matrix")
85
+
86
+ display(
87
+ correlation["Correlation Matrix"]
88
+ )
89
+
90
+
91
+ print("\nStrong Correlations")
92
+
93
+ if not correlation["Strong Correlations"].empty:
94
+
95
+ display(
96
+ correlation["Strong Correlations"]
97
+ )
98
+
99
+ else:
100
+
101
+ print("No highly correlated features found")
102
+
103
+
104
+ print("\n๐Ÿšจ OUTLIER ANALYSIS")
105
+
106
+ display(outliers)
107
+
108
+
109
+
110
+
111
+ if return_report:
112
+ return {
113
+ "summary": summary,
114
+ "missing": missing,
115
+ "duplicates": duplicates,
116
+ "numerical": numerical,
117
+ "categorical": categorical,
118
+ "correlation": correlation,
119
+ "outliers": outliers,
120
+
121
+ }
@@ -0,0 +1,46 @@
1
+ import pandas as pd
2
+
3
+
4
+ def categorical_analysis(df):
5
+
6
+ try:
7
+
8
+ # Select categorical columns
9
+ cat_df = df.select_dtypes(
10
+ include="object"
11
+ )
12
+
13
+
14
+ result = pd.DataFrame({
15
+
16
+ "Column": cat_df.columns,
17
+
18
+ "Count": cat_df.count(),
19
+
20
+ "Unique": cat_df.nunique(),
21
+
22
+ "Top": [
23
+ cat_df[col].mode()[0]
24
+ if not cat_df[col].mode().empty
25
+ else None
26
+ for col in cat_df.columns
27
+ ],
28
+
29
+ "Frequency": [
30
+ cat_df[col].value_counts().iloc[0]
31
+ if not cat_df[col].value_counts().empty
32
+ else 0
33
+ for col in cat_df.columns
34
+ ]
35
+
36
+ })
37
+
38
+
39
+ return result.reset_index(drop=True)
40
+
41
+
42
+ except Exception as e:
43
+
44
+ return pd.DataFrame(
45
+ {"Error":[str(e)]}
46
+ )
@@ -0,0 +1,56 @@
1
+ import pandas as pd
2
+
3
+
4
+ def correlation_analysis(df):
5
+
6
+ try:
7
+
8
+ # Select numerical columns only
9
+ num_df = df.select_dtypes(
10
+ include="number"
11
+ )
12
+
13
+
14
+ # Correlation matrix
15
+ correlation = num_df.corr()
16
+
17
+
18
+ # Find strong correlations
19
+ corr_pairs = []
20
+
21
+ for col1 in correlation.columns:
22
+ for col2 in correlation.columns:
23
+
24
+ if col1 < col2:
25
+
26
+ value = correlation.loc[
27
+ col1, col2
28
+ ]
29
+
30
+ if abs(value) >= 0.7:
31
+
32
+ corr_pairs.append(
33
+ {
34
+ "Feature 1": col1,
35
+ "Feature 2": col2,
36
+ "Correlation": round(value, 2)
37
+ }
38
+ )
39
+
40
+
41
+ strong_corr = pd.DataFrame(
42
+ corr_pairs
43
+ )
44
+
45
+
46
+ return {
47
+ "Correlation Matrix": correlation,
48
+ "Strong Correlations": strong_corr
49
+ }
50
+
51
+
52
+ except Exception as e:
53
+
54
+ return {
55
+ "Error": str(e)
56
+ }
@@ -0,0 +1,45 @@
1
+ import pandas as pd
2
+
3
+
4
+ def duplicate_analysis(df):
5
+ """
6
+ Function to analyze duplicate records
7
+ """
8
+
9
+ result = {}
10
+
11
+ try:
12
+ # Total rows
13
+ total_rows = df.shape[0]
14
+
15
+ # Duplicate rows count
16
+ duplicate_count = df.duplicated().sum()
17
+
18
+ # Duplicate percentage
19
+ duplicate_percentage = (duplicate_count / total_rows) * 100
20
+
21
+
22
+ result["Total Rows"] = total_rows
23
+ result["Duplicate Rows"] = duplicate_count
24
+ result["Duplicate Percentage"] = round(
25
+ duplicate_percentage, 2
26
+ )
27
+
28
+
29
+ # Duplicate dataframe
30
+ duplicate_data = df[df.duplicated(keep=False)]
31
+
32
+ result["Duplicate Data"] = duplicate_data
33
+
34
+
35
+ # Remove duplicates
36
+ cleaned_df = df.drop_duplicates()
37
+
38
+ result["Cleaned Data"] = cleaned_df
39
+
40
+
41
+ except Exception as e:
42
+ result["Error"] = str(e)
43
+
44
+
45
+ return result
@@ -0,0 +1,45 @@
1
+ import pandas as pd
2
+
3
+
4
+ def missing_summary(df):
5
+
6
+ try:
7
+
8
+ # Missing count per column
9
+ missing_count = df.isnull().sum()
10
+
11
+
12
+ # Keep only columns having missing values
13
+ missing_columns = missing_count[
14
+ missing_count > 0
15
+ ]
16
+
17
+
18
+ result = {
19
+
20
+ "Total Missing Cells": int(
21
+ missing_count.sum()
22
+ ),
23
+
24
+ "Missing Percentage": round(
25
+ (missing_count.sum() / df.size) * 100,
26
+ 2
27
+ ),
28
+
29
+ "Columns With Missing Values": list(
30
+ missing_columns.index
31
+ ),
32
+
33
+ "Missing Count By Column": missing_columns.to_dict()
34
+
35
+ }
36
+
37
+
38
+ return result
39
+
40
+
41
+ except Exception as e:
42
+
43
+ return {
44
+ "Error": str(e)
45
+ }
@@ -0,0 +1,20 @@
1
+ import pandas as pd
2
+
3
+
4
+ def numerical_analysis(df):
5
+
6
+ try:
7
+ # Select numerical columns
8
+ num_df = df.select_dtypes(include="number")
9
+
10
+ # Apply describe on all numerical columns
11
+ result = num_df.describe().T
12
+
13
+ # Add extra useful information
14
+ result["missing"] = num_df.isnull().sum()
15
+ result["unique"] = num_df.nunique()
16
+
17
+ return result
18
+
19
+ except Exception as e:
20
+ return {"Error": str(e)}
@@ -0,0 +1,62 @@
1
+ import pandas as pd
2
+
3
+
4
+ def outlier_analysis(df):
5
+
6
+ try:
7
+
8
+ # Select numerical columns
9
+ num_df = df.select_dtypes(
10
+ include="number"
11
+ )
12
+
13
+
14
+ result = []
15
+
16
+
17
+ for col in num_df.columns:
18
+
19
+ Q1 = num_df[col].quantile(0.25)
20
+
21
+ Q3 = num_df[col].quantile(0.75)
22
+
23
+ IQR = Q3 - Q1
24
+
25
+
26
+ lower = Q1 - 1.5 * IQR
27
+
28
+ upper = Q3 + 1.5 * IQR
29
+
30
+
31
+ outliers = num_df[
32
+ (num_df[col] < lower) |
33
+ (num_df[col] > upper)
34
+ ][col].count()
35
+
36
+
37
+ percentage = (
38
+ outliers / len(df)
39
+ ) * 100
40
+
41
+
42
+ result.append({
43
+
44
+ "Column": col,
45
+
46
+ "Outliers": outliers,
47
+
48
+ "Outlier Percentage": round(
49
+ percentage, 2
50
+ )
51
+
52
+ })
53
+
54
+
55
+ return pd.DataFrame(result)
56
+
57
+
58
+ except Exception as e:
59
+
60
+ return pd.DataFrame(
61
+ {"Error":[str(e)]}
62
+ )
@@ -0,0 +1,56 @@
1
+ import pandas as pd
2
+
3
+
4
+ def dataset_summary(df: pd.DataFrame) -> dict:
5
+ """
6
+ Generate a summary of a pandas DataFrame.
7
+
8
+ Parameters
9
+ ----------
10
+ df : pandas.DataFrame
11
+ Input DataFrame.
12
+
13
+ Returns
14
+ -------
15
+ dict
16
+ Dataset summary statistics.
17
+ """
18
+
19
+ if not isinstance(df, pd.DataFrame):
20
+ raise TypeError("Input must be a pandas DataFrame.")
21
+
22
+ rows = df.shape[0]
23
+ columns = df.shape[1]
24
+
25
+ memory = round(df.memory_usage(deep=True).sum() / (1024 ** 2), 2)
26
+
27
+ duplicate_rows = int(df.duplicated().sum())
28
+
29
+ missing_cells = int(df.isnull().sum().sum())
30
+
31
+ missing_percentage = round(
32
+ (missing_cells / (rows * columns)) * 100, 2
33
+ ) if rows and columns else 0
34
+
35
+ numeric_columns = len(df.select_dtypes(include="number").columns)
36
+
37
+ categorical_columns = len(
38
+ df.select_dtypes(include=["object", "category"]).columns
39
+ )
40
+
41
+ boolean_columns = len(df.select_dtypes(include="bool").columns)
42
+
43
+ datetime_columns = len(df.select_dtypes(include="datetime").columns)
44
+
45
+ return {
46
+ "Rows": rows,
47
+ "Columns": columns,
48
+ "Memory Usage (MB)": memory,
49
+ "Duplicate Rows": duplicate_rows,
50
+ "Missing Cells": missing_cells,
51
+ "Missing Percentage": missing_percentage,
52
+ "Numeric Columns": numeric_columns,
53
+ "Categorical Columns": categorical_columns,
54
+ "Boolean Columns": boolean_columns,
55
+ "Datetime Columns": datetime_columns,
56
+ }
@@ -0,0 +1,187 @@
1
+ Metadata-Version: 2.4
2
+ Name: smarteda-shlok
3
+ Version: 1.0.0
4
+ Summary: A lightweight Python library for automated exploratory data analysis (EDA).
5
+ Author: Shlok Apte
6
+ Author-email: Shlok Apte <shlokapte271@gmail.com>
7
+ License: MIT
8
+ Keywords: eda,exploratory-data-analysis,data-analysis,data-science,pandas,numpy,statistics,analytics,machine-learning
9
+ Classifier: Development Status :: 4 - Beta
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Intended Audience :: Education
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
14
+ Classifier: Topic :: Software Development :: Libraries
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.9
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Requires-Python: >=3.8
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: pandas>=2.0
27
+ Requires-Dist: numpy>=1.24
28
+ Dynamic: author
29
+ Dynamic: license-file
30
+ Dynamic: requires-python
31
+
32
+ # SmartEDA
33
+
34
+ SmartEDA is a lightweight Python library for **Automated Exploratory Data Analysis (EDA)**. It helps data analysts, data scientists, students, and researchers quickly understand their datasets by generating essential statistical insights with a single function call.
35
+
36
+ ---
37
+
38
+ ## โœจ Features
39
+
40
+ - ๐Ÿ“Š Dataset Summary
41
+ - ๐Ÿงน Missing Value Analysis
42
+ - ๐Ÿ” Duplicate Analysis
43
+ - ๐Ÿ“ˆ Numerical Feature Analysis
44
+ - ๐Ÿ“ Categorical Feature Analysis
45
+ - ๐Ÿ”— Correlation Analysis
46
+ - ๐Ÿ“ฆ Outlier Detection
47
+ - โšก Fast and Lightweight
48
+ - ๐Ÿ One-Line Dataset Analysis
49
+
50
+ ---
51
+
52
+ ## ๐Ÿ“ฆ Installation
53
+
54
+ ```bash
55
+ pip install smarteda
56
+ ```
57
+
58
+ ---
59
+
60
+ ## ๐Ÿš€ Quick Start
61
+
62
+ ```python
63
+ import pandas as pd
64
+ from smarteda import analyzer
65
+
66
+ # Load dataset
67
+ df = pd.read_csv("Titanic.csv")
68
+
69
+ # Generate EDA Report
70
+ analyzer(df)
71
+ ```
72
+
73
+ ---
74
+
75
+ ## ๐Ÿ“‹ Example Output
76
+
77
+ ```
78
+ ======================================================================
79
+ SMARTEDA REPORT
80
+ ======================================================================
81
+
82
+ ๐Ÿ“Š DATASET SUMMARY
83
+
84
+ Rows : 891
85
+ Columns : 12
86
+ Memory Usage (MB) : 0.28
87
+ Duplicate Rows : 0
88
+ Missing Cells : 866
89
+ Missing Percentage : 8.10
90
+
91
+ ๐Ÿงน MISSING VALUE ANALYSIS
92
+
93
+ Total Missing Cells : 866
94
+ Columns with Missing Values : 3
95
+ Missing Percentage : 8.10
96
+
97
+ ๐Ÿ” DUPLICATE ANALYSIS
98
+
99
+ Duplicate Rows : 0
100
+
101
+ ๐Ÿ“ˆ NUMERICAL ANALYSIS
102
+
103
+ ...
104
+
105
+ ๐Ÿ“ CATEGORICAL ANALYSIS
106
+
107
+ ...
108
+
109
+ ๐Ÿ”— CORRELATION ANALYSIS
110
+
111
+ ...
112
+
113
+ ๐Ÿ“ฆ OUTLIER ANALYSIS
114
+
115
+ ...
116
+ ```
117
+
118
+ ---
119
+
120
+ ## ๐Ÿ“š Modules
121
+
122
+ | Module | Description |
123
+ |---------|-------------|
124
+ | `analyzer.py` | Generates the complete EDA report |
125
+ | `summary.py` | Dataset summary |
126
+ | `missing.py` | Missing value analysis |
127
+ | `duplicates.py` | Duplicate row analysis |
128
+ | `numerical.py` | Numerical statistics |
129
+ | `categorical.py` | Categorical feature analysis |
130
+ | `correlation.py` | Correlation analysis |
131
+ | `outliers.py` | Outlier detection |
132
+
133
+ ---
134
+
135
+ ## ๐Ÿ’ป Requirements
136
+
137
+ - Python 3.9 or higher
138
+ - pandas
139
+ - numpy
140
+
141
+ ---
142
+
143
+ ## ๐Ÿ“‚ Project Structure
144
+
145
+ ```
146
+ smarteda/
147
+ โ”‚
148
+ โ”œโ”€โ”€ src/
149
+ โ”‚ โ””โ”€โ”€ smarteda/
150
+ โ”‚ โ”œโ”€โ”€ __init__.py
151
+ โ”‚ โ”œโ”€โ”€ analyzer.py
152
+ โ”‚ โ”œโ”€โ”€ summary.py
153
+ โ”‚ โ”œโ”€โ”€ missing.py
154
+ โ”‚ โ”œโ”€โ”€ duplicates.py
155
+ โ”‚ โ”œโ”€โ”€ numerical.py
156
+ โ”‚ โ”œโ”€โ”€ categorical.py
157
+ โ”‚ โ”œโ”€โ”€ correlation.py
158
+ โ”‚ โ””โ”€โ”€ outliers.py
159
+ โ”‚
160
+ โ”œโ”€โ”€ pyproject.toml
161
+ โ”œโ”€โ”€ README.md
162
+ โ”œโ”€โ”€ LICENSE
163
+ โ””โ”€โ”€ MANIFEST.in
164
+ ```
165
+
166
+ ---
167
+
168
+ ## ๐ŸŽฏ Why SmartEDA?
169
+
170
+ - Beginner-friendly
171
+ - Lightweight and fast
172
+ - Easy to understand
173
+ - Modular architecture
174
+ - Works seamlessly with Pandas DataFrames
175
+ - Designed for quick exploratory data analysis
176
+
177
+ ---
178
+
179
+ ## ๐Ÿ“„ License
180
+
181
+ This project is licensed under the **MIT License**.
182
+
183
+ ---
184
+
185
+ ## ๐Ÿ‘จโ€๐Ÿ’ป Author
186
+
187
+ **Shlok Apte**
@@ -0,0 +1,20 @@
1
+ LICENSE
2
+ MANIFEST.in
3
+ README.md
4
+ pyproject.toml
5
+ requirements.txt
6
+ setup.py
7
+ src/smarteda/__init__.py
8
+ src/smarteda/analyzer.py
9
+ src/smarteda/categorical.py
10
+ src/smarteda/correlation.py
11
+ src/smarteda/duplicates.py
12
+ src/smarteda/missing.py
13
+ src/smarteda/numerical.py
14
+ src/smarteda/outliers.py
15
+ src/smarteda/summary.py
16
+ src/smarteda_shlok.egg-info/PKG-INFO
17
+ src/smarteda_shlok.egg-info/SOURCES.txt
18
+ src/smarteda_shlok.egg-info/dependency_links.txt
19
+ src/smarteda_shlok.egg-info/requires.txt
20
+ src/smarteda_shlok.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ pandas>=2.0
2
+ numpy>=1.24