├── README.md
├── .gitattributes
├── LICENSE
├── .gitignore
└── src
└── outliers.ipynb
/README.md:
--------------------------------------------------------------------------------
1 | # statistics_basics
2 |
3 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2025 SaurabhSSB
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.
22 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | share/python-wheels/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 | MANIFEST
28 |
29 | # PyInstaller
30 | # Usually these files are written by a python script from a template
31 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
32 | *.manifest
33 | *.spec
34 |
35 | # Installer logs
36 | pip-log.txt
37 | pip-delete-this-directory.txt
38 |
39 | # Unit test / coverage reports
40 | htmlcov/
41 | .tox/
42 | .nox/
43 | .coverage
44 | .coverage.*
45 | .cache
46 | nosetests.xml
47 | coverage.xml
48 | *.cover
49 | *.py,cover
50 | .hypothesis/
51 | .pytest_cache/
52 | cover/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | .pybuilder/
76 | target/
77 |
78 | # Jupyter Notebook
79 | .ipynb_checkpoints
80 |
81 | # IPython
82 | profile_default/
83 | ipython_config.py
84 |
85 | # pyenv
86 | # For a library or package, you might want to ignore these files since the code is
87 | # intended to run in multiple environments; otherwise, check them in:
88 | # .python-version
89 |
90 | # pipenv
91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
94 | # install all needed dependencies.
95 | #Pipfile.lock
96 |
97 | # poetry
98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
99 | # This is especially recommended for binary packages to ensure reproducibility, and is more
100 | # commonly ignored for libraries.
101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
102 | #poetry.lock
103 |
104 | # pdm
105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
106 | #pdm.lock
107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
108 | # in version control.
109 | # https://pdm.fming.dev/#use-with-ide
110 | .pdm.toml
111 |
112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
113 | __pypackages__/
114 |
115 | # Celery stuff
116 | celerybeat-schedule
117 | celerybeat.pid
118 |
119 | # SageMath parsed files
120 | *.sage.py
121 |
122 | # Environments
123 | .env
124 | .venv
125 | env/
126 | venv/
127 | ENV/
128 | env.bak/
129 | venv.bak/
130 |
131 | # Spyder project settings
132 | .spyderproject
133 | .spyproject
134 |
135 | # Rope project settings
136 | .ropeproject
137 |
138 | # mkdocs documentation
139 | /site
140 |
141 | # mypy
142 | .mypy_cache/
143 | .dmypy.json
144 | dmypy.json
145 |
146 | # Pyre type checker
147 | .pyre/
148 |
149 | # pytype static type analyzer
150 | .pytype/
151 |
152 | # Cython debug symbols
153 | cython_debug/
154 |
155 | # PyCharm
156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
158 | # and can be added to the global gitignore or merged into this file. For a more nuclear
159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder.
160 | #.idea/
161 |
--------------------------------------------------------------------------------
/src/outliers.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "nbformat": 4,
3 | "nbformat_minor": 0,
4 | "metadata": {
5 | "colab": {
6 | "provenance": [],
7 | "authorship_tag": "ABX9TyMfCedhrXuwYNWRLm4Y6lRA",
8 | "include_colab_link": true
9 | },
10 | "kernelspec": {
11 | "name": "python3",
12 | "display_name": "Python 3"
13 | },
14 | "language_info": {
15 | "name": "python"
16 | }
17 | },
18 | "cells": [
19 | {
20 | "cell_type": "markdown",
21 | "metadata": {
22 | "id": "view-in-github",
23 | "colab_type": "text"
24 | },
25 | "source": [
26 | "
"
27 | ]
28 | },
29 | {
30 | "cell_type": "code",
31 | "execution_count": 1,
32 | "metadata": {
33 | "id": "nh30OqNafZFX"
34 | },
35 | "outputs": [],
36 | "source": [
37 | "import numpy as np\n",
38 | "import matplotlib.pyplot as plt\n",
39 | "%matplotlib inline"
40 | ]
41 | },
42 | {
43 | "cell_type": "code",
44 | "source": [
45 | "### Data\n",
46 | "data = [11,10,12,14,12,15,14,13,15,102,12,14,17,19,107,10,13,12,14,12,108,12,11,14,13,15,10,15,12,10,14,13,15,10]"
47 | ],
48 | "metadata": {
49 | "id": "5jagRSSgjKva"
50 | },
51 | "execution_count": 2,
52 | "outputs": []
53 | },
54 | {
55 | "cell_type": "code",
56 | "source": [
57 | "plt.hist(data)"
58 | ],
59 | "metadata": {
60 | "colab": {
61 | "base_uri": "https://localhost:8080/",
62 | "height": 499
63 | },
64 | "id": "jhwNH16Tjk9q",
65 | "outputId": "870f5856-3d6d-41dc-e4ed-5b2617f1ffa8"
66 | },
67 | "execution_count": 3,
68 | "outputs": [
69 | {
70 | "output_type": "execute_result",
71 | "data": {
72 | "text/plain": [
73 | "(array([31., 0., 0., 0., 0., 0., 0., 0., 0., 3.]),\n",
74 | " array([ 10. , 19.8, 29.6, 39.4, 49.2, 59. , 68.8, 78.6, 88.4,\n",
75 | " 98.2, 108. ]),\n",
76 | " )"
77 | ]
78 | },
79 | "metadata": {},
80 | "execution_count": 3
81 | },
82 | {
83 | "output_type": "display_data",
84 | "data": {
85 | "text/plain": [
86 | ""
87 | ],
88 | "image/png": "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0Cqyw3lPDABAifjbLgBAUuIDAEhKfAAASYkPACAp8XGUaGlpibPPPjtGjRoVY8eOjUsvvTS2bt3aY82+ffuiqakpxowZEyNHjoy5c+ce9GFu9M3SpUujoqIiFi5cWDxnv0vrd7/7XXzoQx+KMWPGxIgRI+LMM8+MzZs3F69nWRY33XRTjBs3LkaMGBGzZs2KZ555ZgAnLl8HDhyIG2+8MSZOnBgjRoyIk08+Ob785S/3+Jsb9rvv1q9fHxdffHHU19dHRUVF3HvvvT2uH87evvjiizFv3ryorq6O0aNHx9VXXx0vvfRSwu9iYImPo0Rra2s0NTXFxo0bY/Xq1bF///644IILoqurq7hm0aJFcf/998c999wTra2tsXPnzrjssssGcOrB4fHHH4///M//jClTpvQ4b79L549//GPMnDkzhg4dGg888EA8/fTT8fWvfz3e+MY3Ftfccsstcdttt8Xtt98emzZtije84Q0xe/bs2Ldv3wBOXp5uvvnmWL58efzHf/xH/OIXv4ibb745brnllvj3f//34hr73XddXV0xderUWLZs2SGvH87ezps3L37+85/H6tWrY9WqVbF+/fr4+Mc/nupbGHgZR6Xdu3dnEZG1trZmWZZle/bsyYYOHZrdc889xTW/+MUvsojINmzYMFBjlr29e/dmp5xySrZ69ers3e9+d3bddddlWWa/S+2zn/1sds4557zq9e7u7qyuri772te+Vjy3Z8+erKqqKvve976XYsRB5aKLLso++tGP9jh32WWXZfPmzcuyzH6XUkRkK1euLN4+nL19+umns4jIHn/88eKaBx54IKuoqMh+97vfJZt9IHnm4yjV2dkZERE1NTUREdHW1hb79++PWbNmFddMmjQpJkyYEBs2bBiQGQeDpqamuOiii3rsa4T9LrX/+7//i+nTp8e//Mu/xNixY+Oss86K//7v/y5e37ZtW7S3t/fY71wuFzNmzLDfffDOd74z1qxZE7/61a8iIuKnP/1pPProozFnzpyIsN/96XD2dsOGDTF69OiYPn16cc2sWbNiyJAhsWnTpuQzD4QB/6u2HKy7uzsWLlwYM2fOjMmTJ0dERHt7ewwbNuygP7pXW1sb7e3tAzBl+bv77rvjJz/5STz++OMHXbPfpfXrX/86li9fHosXL47Pfe5z8fjjj8enPvWpGDZsWMyfP7+4p3//Kcj2u29uuOGGyOfzMWnSpDjmmGPiwIED8ZWvfCXmzZsXEWG/+9Hh7G17e3uMHTu2x/XKysqoqal53ey/+DgKNTU1xVNPPRWPPvroQI8yaO3YsSOuu+66WL16dQwfPnygxxn0uru7Y/r06fHVr341IiLOOuuseOqpp+L222+P+fPnD/B0g88PfvCDuOuuu2LFihVxxhlnxJYtW2LhwoVRX19vvzkq+LXLUWbBggWxatWqeOSRR2L8+PHF83V1dfHKK6/Enj17eqzv6OiIurq6xFOWv7a2tti9e3e87W1vi8rKyqisrIzW1ta47bbborKyMmpra+13CY0bNy5OP/30HudOO+202L59e0REcU///t1E9rtvPvOZz8QNN9wQl19+eZx55pnx4Q9/OBYtWhQtLS0RYb/70+HsbV1dXezevbvH9T//+c/x4osvvm72X3wcJbIsiwULFsTKlStj7dq1MXHixB7Xp02bFkOHDo01a9YUz23dujW2b98ejY2Nqccte+eff3787Gc/iy1bthSP6dOnx7x584r/tt+lM3PmzIPeOv6rX/0qTjjhhIiImDhxYtTV1fXY73w+H5s2bbLfffDyyy/HkCE9//d+zDHHRHd3d0TY7/50OHvb2NgYe/bsiba2tuKatWvXRnd3d8yYMSP5zANioF/xyl9cc801WS6Xy9atW5ft2rWreLz88svFNZ/4xCeyCRMmZGvXrs02b96cNTY2Zo2NjQM49eDyt+92yTL7XUqPPfZYVllZmX3lK1/Jnnnmmeyuu+7Kjj322Oy73/1ucc3SpUuz0aNHZ/fdd1/25JNPZpdcckk2ceLE7E9/+tMATl6e5s+fn73pTW/KVq1alW3bti374Q9/mB133HHZ9ddfX1xjv/tu79692RNPPJE98cQTWURk3/jGN7Innngi+81vfpNl2eHt7YUXXpidddZZ2aZNm7JHH300O+WUU7IrrrhioL6l5MTHUSIiDnnccccdxTV/+tOfsk9+8pPZG9/4xuzYY4/N3ve+92W7du0auKEHmb+PD/tdWvfff382efLkrKqqKps0aVL2X//1Xz2ud3d3ZzfeeGNWW1ubVVVVZeeff362devWAZq2vOXz+ey6667LJkyYkA0fPjw76aSTss9//vNZoVAorrHffffII48c8v/X8+fPz7Ls8Pb2hRdeyK644ops5MiRWXV1dXbVVVdle/fuHYDvZmBUZNnffOQdAEA/85oPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJDU/wN5GuTNLM6DwwAAAABJRU5ErkJggg==\n"
89 | },
90 | "metadata": {}
91 | }
92 | ]
93 | },
94 | {
95 | "cell_type": "code",
96 | "source": [
97 | "# Z- score\n",
98 | "outliers= []\n",
99 | "def detect_outliers(data_x):\n",
100 | " threshold= 3 ## 3rd standard deviation\n",
101 | " mean=np.mean(data_x)\n",
102 | " sd= np.std(data_x)\n",
103 | "\n",
104 | " for i in data_x:\n",
105 | " z_score= (i-mean)/sd\n",
106 | " if np.abs(z_score)>threshold:\n",
107 | " outliers.append(i)\n",
108 | " return outliers"
109 | ],
110 | "metadata": {
111 | "id": "OkhfgTdtjyvp"
112 | },
113 | "execution_count": 4,
114 | "outputs": []
115 | },
116 | {
117 | "cell_type": "code",
118 | "source": [
119 | "outliers_z= detect_outliers(data)\n",
120 | "print(\"Outlier found using z-score:- \\n\", outliers_z)"
121 | ],
122 | "metadata": {
123 | "colab": {
124 | "base_uri": "https://localhost:8080/"
125 | },
126 | "id": "4An5g9PrnusF",
127 | "outputId": "f6ef25f4-4cec-4305-ba91-2c252e4b9e26"
128 | },
129 | "execution_count": 5,
130 | "outputs": [
131 | {
132 | "output_type": "stream",
133 | "name": "stdout",
134 | "text": [
135 | "Outlier found using z-score:- \n",
136 | " [102, 107, 108]\n"
137 | ]
138 | }
139 | ]
140 | },
141 | {
142 | "cell_type": "markdown",
143 | "source": [
144 | "## IQR\n",
145 | "Step 1. Sort the data\n",
146 | "\n",
147 | "Step 2. Calculate Q1(25%) and Q3(75%)\n",
148 | "\n",
149 | "Step 3. IQR(Q3-q1)\n",
150 | "\n",
151 | "Step 4. Find the lower fence q1- 1.5(IQR)\n",
152 | "\n",
153 | "Step 5. Find the upeer fence q3+ 1.5(IQR)\n"
154 | ],
155 | "metadata": {
156 | "id": "tsYVd9uvoMoG"
157 | }
158 | },
159 | {
160 | "cell_type": "code",
161 | "source": [
162 | "## Sort\n",
163 | "data= sorted(data)\n",
164 | "data"
165 | ],
166 | "metadata": {
167 | "colab": {
168 | "base_uri": "https://localhost:8080/"
169 | },
170 | "id": "wfgybA6-qQn3",
171 | "outputId": "0bdf8f2a-5f8f-4719-8c33-bd69ae62c86b"
172 | },
173 | "execution_count": 6,
174 | "outputs": [
175 | {
176 | "output_type": "execute_result",
177 | "data": {
178 | "text/plain": [
179 | "[10,\n",
180 | " 10,\n",
181 | " 10,\n",
182 | " 10,\n",
183 | " 10,\n",
184 | " 11,\n",
185 | " 11,\n",
186 | " 12,\n",
187 | " 12,\n",
188 | " 12,\n",
189 | " 12,\n",
190 | " 12,\n",
191 | " 12,\n",
192 | " 12,\n",
193 | " 13,\n",
194 | " 13,\n",
195 | " 13,\n",
196 | " 13,\n",
197 | " 14,\n",
198 | " 14,\n",
199 | " 14,\n",
200 | " 14,\n",
201 | " 14,\n",
202 | " 14,\n",
203 | " 15,\n",
204 | " 15,\n",
205 | " 15,\n",
206 | " 15,\n",
207 | " 15,\n",
208 | " 17,\n",
209 | " 19,\n",
210 | " 102,\n",
211 | " 107,\n",
212 | " 108]"
213 | ]
214 | },
215 | "metadata": {},
216 | "execution_count": 6
217 | }
218 | ]
219 | },
220 | {
221 | "cell_type": "code",
222 | "source": [
223 | "q1,q3= np.percentile(data,[25,75])\n",
224 | "print(q1,q3)"
225 | ],
226 | "metadata": {
227 | "colab": {
228 | "base_uri": "https://localhost:8080/"
229 | },
230 | "id": "7QSoHBiyqaSM",
231 | "outputId": "32d7e4a7-3392-40ef-a0df-1fb2caec7f85"
232 | },
233 | "execution_count": 7,
234 | "outputs": [
235 | {
236 | "output_type": "stream",
237 | "name": "stdout",
238 | "text": [
239 | "12.0 15.0\n"
240 | ]
241 | }
242 | ]
243 | },
244 | {
245 | "cell_type": "code",
246 | "source": [
247 | "IQR= q3-q1\n",
248 | "print(IQR)"
249 | ],
250 | "metadata": {
251 | "colab": {
252 | "base_uri": "https://localhost:8080/"
253 | },
254 | "id": "WzXgrJQ-qqDx",
255 | "outputId": "3cbc4a15-5eb5-426e-d23a-639fc9dc1724"
256 | },
257 | "execution_count": 8,
258 | "outputs": [
259 | {
260 | "output_type": "stream",
261 | "name": "stdout",
262 | "text": [
263 | "3.0\n"
264 | ]
265 | }
266 | ]
267 | },
268 | {
269 | "cell_type": "code",
270 | "source": [
271 | "## Finding the lower fence and upper fence\n",
272 | "lower_fence= q1- 1.5* IQR\n",
273 | "upper_fence= q3+ 1.5* IQR\n",
274 | "print(\"lower_fence= \", lower_fence)\n",
275 | "print(\"upper_fence= \", upper_fence)"
276 | ],
277 | "metadata": {
278 | "colab": {
279 | "base_uri": "https://localhost:8080/"
280 | },
281 | "id": "WuVPQ06NqwBZ",
282 | "outputId": "d2a2bc03-f8b9-4bb0-9695-9e8a4f6b60b9"
283 | },
284 | "execution_count": 9,
285 | "outputs": [
286 | {
287 | "output_type": "stream",
288 | "name": "stdout",
289 | "text": [
290 | "lower_fence= 7.5\n",
291 | "upper_fence= 19.5\n"
292 | ]
293 | }
294 | ]
295 | },
296 | {
297 | "cell_type": "code",
298 | "source": [
299 | "outliers_iqr=[]\n",
300 | "for i in data:\n",
301 | " if(i< lower_fence or i> upper_fence):\n",
302 | " outliers_iqr.append(i)\n",
303 | "\n",
304 | "print(\"Outliers found using IQR:- \\n\",outliers_iqr)"
305 | ],
306 | "metadata": {
307 | "colab": {
308 | "base_uri": "https://localhost:8080/"
309 | },
310 | "id": "5P6RbQyurdRQ",
311 | "outputId": "d6c3140c-a1b6-4979-8816-f627f3565a7b"
312 | },
313 | "execution_count": 10,
314 | "outputs": [
315 | {
316 | "output_type": "stream",
317 | "name": "stdout",
318 | "text": [
319 | "Outliers found using IQR:- \n",
320 | " [102, 107, 108]\n"
321 | ]
322 | }
323 | ]
324 | },
325 | {
326 | "cell_type": "code",
327 | "source": [
328 | "import seaborn as sns"
329 | ],
330 | "metadata": {
331 | "id": "YxRYqJU8v4Xh"
332 | },
333 | "execution_count": 11,
334 | "outputs": []
335 | },
336 | {
337 | "cell_type": "code",
338 | "source": [
339 | "sns.boxplot(data,orient= \"h\")"
340 | ],
341 | "metadata": {
342 | "colab": {
343 | "base_uri": "https://localhost:8080/",
344 | "height": 447
345 | },
346 | "id": "U8MyAa5Yv8RZ",
347 | "outputId": "83788344-b366-43c6-e2a4-83df5ea26fd0"
348 | },
349 | "execution_count": 14,
350 | "outputs": [
351 | {
352 | "output_type": "execute_result",
353 | "data": {
354 | "text/plain": [
355 | ""
356 | ]
357 | },
358 | "metadata": {},
359 | "execution_count": 14
360 | },
361 | {
362 | "output_type": "display_data",
363 | "data": {
364 | "text/plain": [
365 | ""
366 | ],
367 | "image/png": "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\n"
368 | },
369 | "metadata": {}
370 | }
371 | ]
372 | }
373 | ]
374 | }
--------------------------------------------------------------------------------