├── .gitignore
├── Assert_in_Python.ipynb
├── Catandnumplot.ipynb
├── Catboost imputation.ipynb
├── Derivatives.ipynb
├── Dmatrix.png
├── Histograms.ipynb
├── How standardization affects models.ipynb
├── LLN-pal
├── 100000000runs_lottery.png
├── 10000000runs_lottery.png
├── 1000000runs_lottery.png
├── 100000runs_lottery.png
├── 10000runs.png
├── 10000runs_lottery.png
├── 1000runs.png
├── 1000runs_lottery.png
├── 100runs.png
├── 100runs_lottery.png
├── 10runs.png
├── 10runs_lottery.png
└── LLN-pal.ipynb
├── LLN.ipynb
├── Pandas_data_subsets.ipynb
├── Pandas_style.ipynb
├── boxplot.png
├── dicerolls.png
├── joypy-tutorial.ipynb
├── lame to pro - histograms.ipynb
├── stat basics.ipynb
├── stripplot.png
├── swarmplot.png
├── vectors.ipynb
└── violinplot.png
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | *.csv
3 |
--------------------------------------------------------------------------------
/Assert_in_Python.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 17,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import random"
11 | ]
12 | },
13 | {
14 | "attachments": {},
15 | "cell_type": "markdown",
16 | "metadata": {},
17 | "source": [
18 | "# General Syntax"
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": 18,
24 | "metadata": {},
25 | "outputs": [
26 | {
27 | "name": "stdout",
28 | "output_type": "stream",
29 | "text": [
30 | "9\n"
31 | ]
32 | }
33 | ],
34 | "source": [
35 | "# assert expression[, assertion_message]\n",
36 | "\n",
37 | "int = 9\n",
38 | "assert int > 0, f'Value must be greater than 0, got {int}'\n",
39 | "\n",
40 | "print(int)"
41 | ]
42 | },
43 | {
44 | "cell_type": "code",
45 | "execution_count": 19,
46 | "metadata": {},
47 | "outputs": [
48 | {
49 | "ename": "AssertionError",
50 | "evalue": "Value must be greater than 0, got -1",
51 | "output_type": "error",
52 | "traceback": [
53 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
54 | "\u001b[1;31mAssertionError\u001b[0m Traceback (most recent call last)",
55 | "Cell \u001b[1;32mIn[19], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[39mint\u001b[39m \u001b[39m=\u001b[39m \u001b[39m-\u001b[39m\u001b[39m1\u001b[39m\n\u001b[1;32m----> 2\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39mint\u001b[39m \u001b[39m>\u001b[39m \u001b[39m0\u001b[39m, \u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39mValue must be greater than 0, got \u001b[39m\u001b[39m{\u001b[39;00m\u001b[39mint\u001b[39m\u001b[39m}\u001b[39;00m\u001b[39m'\u001b[39m\n\u001b[0;32m 4\u001b[0m \u001b[39mprint\u001b[39m(\u001b[39mint\u001b[39m)\n",
56 | "\u001b[1;31mAssertionError\u001b[0m: Value must be greater than 0, got -1"
57 | ]
58 | }
59 | ],
60 | "source": [
61 | "int = -1\n",
62 | "assert int > 0, f'Value must be greater than 0, got {int}'\n",
63 | "\n",
64 | "print(int)"
65 | ]
66 | },
67 | {
68 | "cell_type": "code",
69 | "execution_count": 28,
70 | "metadata": {},
71 | "outputs": [],
72 | "source": [
73 | "# Create df\n",
74 | "df = pd.DataFrame(\n",
75 | " {\n",
76 | " 'Product': ['Product A', 'Product B', 'Product C', 'Product D', 'Product E'],\n",
77 | " 'Price': [random.randint(100, 200) for i in range(5)]\n",
78 | " }\n",
79 | ")"
80 | ]
81 | },
82 | {
83 | "cell_type": "code",
84 | "execution_count": 29,
85 | "metadata": {},
86 | "outputs": [
87 | {
88 | "data": {
89 | "text/html": [
90 | "
\n",
91 | "\n",
104 | "
\n",
105 | " \n",
106 | " \n",
107 | " | \n",
108 | " Product | \n",
109 | " Price | \n",
110 | "
\n",
111 | " \n",
112 | " \n",
113 | " \n",
114 | " 0 | \n",
115 | " Product A | \n",
116 | " 159 | \n",
117 | "
\n",
118 | " \n",
119 | " 1 | \n",
120 | " Product B | \n",
121 | " 200 | \n",
122 | "
\n",
123 | " \n",
124 | " 2 | \n",
125 | " Product C | \n",
126 | " 158 | \n",
127 | "
\n",
128 | " \n",
129 | " 3 | \n",
130 | " Product D | \n",
131 | " 117 | \n",
132 | "
\n",
133 | " \n",
134 | " 4 | \n",
135 | " Product E | \n",
136 | " 162 | \n",
137 | "
\n",
138 | " \n",
139 | "
\n",
140 | "
"
141 | ],
142 | "text/plain": [
143 | " Product Price\n",
144 | "0 Product A 159\n",
145 | "1 Product B 200\n",
146 | "2 Product C 158\n",
147 | "3 Product D 117\n",
148 | "4 Product E 162"
149 | ]
150 | },
151 | "execution_count": 29,
152 | "metadata": {},
153 | "output_type": "execute_result"
154 | }
155 | ],
156 | "source": [
157 | "df"
158 | ]
159 | },
160 | {
161 | "attachments": {},
162 | "cell_type": "markdown",
163 | "metadata": {},
164 | "source": [
165 | "# Guard your back with assert"
166 | ]
167 | },
168 | {
169 | "cell_type": "code",
170 | "execution_count": 37,
171 | "metadata": {},
172 | "outputs": [],
173 | "source": [
174 | "def discount(price, discount):\n",
175 | " \n",
176 | " assert 0 < discount < 1, f'Discount must be between 0 and 1, got {discount}'\n",
177 | " return price * (1 - discount)"
178 | ]
179 | },
180 | {
181 | "cell_type": "code",
182 | "execution_count": 34,
183 | "metadata": {},
184 | "outputs": [
185 | {
186 | "data": {
187 | "text/html": [
188 | "\n",
189 | "\n",
202 | "
\n",
203 | " \n",
204 | " \n",
205 | " | \n",
206 | " Product | \n",
207 | " Price | \n",
208 | " Discounted Price | \n",
209 | "
\n",
210 | " \n",
211 | " \n",
212 | " \n",
213 | " 0 | \n",
214 | " Product A | \n",
215 | " 159 | \n",
216 | " 127.2 | \n",
217 | "
\n",
218 | " \n",
219 | " 1 | \n",
220 | " Product B | \n",
221 | " 200 | \n",
222 | " 160.0 | \n",
223 | "
\n",
224 | " \n",
225 | " 2 | \n",
226 | " Product C | \n",
227 | " 158 | \n",
228 | " 126.4 | \n",
229 | "
\n",
230 | " \n",
231 | " 3 | \n",
232 | " Product D | \n",
233 | " 117 | \n",
234 | " 93.6 | \n",
235 | "
\n",
236 | " \n",
237 | " 4 | \n",
238 | " Product E | \n",
239 | " 162 | \n",
240 | " 129.6 | \n",
241 | "
\n",
242 | " \n",
243 | "
\n",
244 | "
"
245 | ],
246 | "text/plain": [
247 | " Product Price Discounted Price\n",
248 | "0 Product A 159 127.2\n",
249 | "1 Product B 200 160.0\n",
250 | "2 Product C 158 126.4\n",
251 | "3 Product D 117 93.6\n",
252 | "4 Product E 162 129.6"
253 | ]
254 | },
255 | "execution_count": 34,
256 | "metadata": {},
257 | "output_type": "execute_result"
258 | }
259 | ],
260 | "source": [
261 | "df['Discounted Price'] = discount(df['Price'], 0.2)\n",
262 | "\n",
263 | "df"
264 | ]
265 | },
266 | {
267 | "attachments": {},
268 | "cell_type": "markdown",
269 | "metadata": {},
270 | "source": [
271 | "If someone mistakenly gives an invalid value, the code will not run: \\\n",
272 | "For example, if you add 20 instead of 0.2 to indicate 20%, you will run into an error"
273 | ]
274 | },
275 | {
276 | "cell_type": "code",
277 | "execution_count": 31,
278 | "metadata": {},
279 | "outputs": [
280 | {
281 | "ename": "AssertionError",
282 | "evalue": "Discount must be between 0 and 1, got 20",
283 | "output_type": "error",
284 | "traceback": [
285 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
286 | "\u001b[1;31mAssertionError\u001b[0m Traceback (most recent call last)",
287 | "Cell \u001b[1;32mIn[31], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m df[\u001b[39m'\u001b[39m\u001b[39mDiscounted Price\u001b[39m\u001b[39m'\u001b[39m] \u001b[39m=\u001b[39m discount(df[\u001b[39m'\u001b[39;49m\u001b[39mPrice\u001b[39;49m\u001b[39m'\u001b[39;49m], \u001b[39m20\u001b[39;49m)\n",
288 | "Cell \u001b[1;32mIn[23], line 3\u001b[0m, in \u001b[0;36mdiscount\u001b[1;34m(price, discount)\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mdiscount\u001b[39m(price, discount):\n\u001b[1;32m----> 3\u001b[0m \u001b[39massert\u001b[39;00m \u001b[39m0\u001b[39m \u001b[39m<\u001b[39m discount \u001b[39m<\u001b[39m \u001b[39m1\u001b[39m, \u001b[39mf\u001b[39m\u001b[39m'\u001b[39m\u001b[39mDiscount must be between 0 and 1, got \u001b[39m\u001b[39m{\u001b[39;00mdiscount\u001b[39m}\u001b[39;00m\u001b[39m'\u001b[39m\n\u001b[0;32m 4\u001b[0m \u001b[39mreturn\u001b[39;00m price \u001b[39m*\u001b[39m (\u001b[39m1\u001b[39m \u001b[39m-\u001b[39m discount)\n",
289 | "\u001b[1;31mAssertionError\u001b[0m: Discount must be between 0 and 1, got 20"
290 | ]
291 | }
292 | ],
293 | "source": [
294 | "df['Discounted Price'] = discount(df['Price'], 20)"
295 | ]
296 | },
297 | {
298 | "attachments": {},
299 | "cell_type": "markdown",
300 | "metadata": {},
301 | "source": [
302 | "Without assert the code will run and you have invalid values:"
303 | ]
304 | },
305 | {
306 | "cell_type": "code",
307 | "execution_count": 32,
308 | "metadata": {},
309 | "outputs": [],
310 | "source": [
311 | "def bad_discount(price, discount):\n",
312 | " \n",
313 | " #assert 0 < discount < 1, f'Discount must be between 0 and 1, got {discount}'\n",
314 | " return price * (1 - discount)"
315 | ]
316 | },
317 | {
318 | "cell_type": "code",
319 | "execution_count": 33,
320 | "metadata": {},
321 | "outputs": [
322 | {
323 | "data": {
324 | "text/html": [
325 | "\n",
326 | "\n",
339 | "
\n",
340 | " \n",
341 | " \n",
342 | " | \n",
343 | " Product | \n",
344 | " Price | \n",
345 | " Discounted Price | \n",
346 | "
\n",
347 | " \n",
348 | " \n",
349 | " \n",
350 | " 0 | \n",
351 | " Product A | \n",
352 | " 159 | \n",
353 | " -3021 | \n",
354 | "
\n",
355 | " \n",
356 | " 1 | \n",
357 | " Product B | \n",
358 | " 200 | \n",
359 | " -3800 | \n",
360 | "
\n",
361 | " \n",
362 | " 2 | \n",
363 | " Product C | \n",
364 | " 158 | \n",
365 | " -3002 | \n",
366 | "
\n",
367 | " \n",
368 | " 3 | \n",
369 | " Product D | \n",
370 | " 117 | \n",
371 | " -2223 | \n",
372 | "
\n",
373 | " \n",
374 | " 4 | \n",
375 | " Product E | \n",
376 | " 162 | \n",
377 | " -3078 | \n",
378 | "
\n",
379 | " \n",
380 | "
\n",
381 | "
"
382 | ],
383 | "text/plain": [
384 | " Product Price Discounted Price\n",
385 | "0 Product A 159 -3021\n",
386 | "1 Product B 200 -3800\n",
387 | "2 Product C 158 -3002\n",
388 | "3 Product D 117 -2223\n",
389 | "4 Product E 162 -3078"
390 | ]
391 | },
392 | "execution_count": 33,
393 | "metadata": {},
394 | "output_type": "execute_result"
395 | }
396 | ],
397 | "source": [
398 | "df['Discounted Price'] = bad_discount(df['Price'], 20)\n",
399 | "\n",
400 | "df"
401 | ]
402 | }
403 | ],
404 | "metadata": {
405 | "kernelspec": {
406 | "display_name": "dse",
407 | "language": "python",
408 | "name": "python3"
409 | },
410 | "language_info": {
411 | "codemirror_mode": {
412 | "name": "ipython",
413 | "version": 3
414 | },
415 | "file_extension": ".py",
416 | "mimetype": "text/x-python",
417 | "name": "python",
418 | "nbconvert_exporter": "python",
419 | "pygments_lexer": "ipython3",
420 | "version": "3.11.3"
421 | },
422 | "orig_nbformat": 4
423 | },
424 | "nbformat": 4,
425 | "nbformat_minor": 2
426 | }
427 |
--------------------------------------------------------------------------------
/Catboost imputation.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import catboost as cb"
11 | ]
12 | },
13 | {
14 | "cell_type": "markdown",
15 | "metadata": {},
16 | "source": [
17 | "Dataset: https://www.kaggle.com/datasets/uciml/horse-colic"
18 | ]
19 | },
20 | {
21 | "cell_type": "code",
22 | "execution_count": 2,
23 | "metadata": {},
24 | "outputs": [],
25 | "source": [
26 | "df = pd.read_csv('horse.csv')"
27 | ]
28 | },
29 | {
30 | "cell_type": "code",
31 | "execution_count": 3,
32 | "metadata": {},
33 | "outputs": [
34 | {
35 | "name": "stdout",
36 | "output_type": "stream",
37 | "text": [
38 | "\n",
39 | "RangeIndex: 299 entries, 0 to 298\n",
40 | "Data columns (total 28 columns):\n",
41 | " # Column Non-Null Count Dtype \n",
42 | "--- ------ -------------- ----- \n",
43 | " 0 surgery 299 non-null object \n",
44 | " 1 age 299 non-null object \n",
45 | " 2 hospital_number 299 non-null int64 \n",
46 | " 3 rectal_temp 239 non-null float64\n",
47 | " 4 pulse 275 non-null float64\n",
48 | " 5 respiratory_rate 241 non-null float64\n",
49 | " 6 temp_of_extremities 243 non-null object \n",
50 | " 7 peripheral_pulse 230 non-null object \n",
51 | " 8 mucous_membrane 252 non-null object \n",
52 | " 9 capillary_refill_time 267 non-null object \n",
53 | " 10 pain 244 non-null object \n",
54 | " 11 peristalsis 255 non-null object \n",
55 | " 12 abdominal_distention 243 non-null object \n",
56 | " 13 nasogastric_tube 195 non-null object \n",
57 | " 14 nasogastric_reflux 193 non-null object \n",
58 | " 15 nasogastric_reflux_ph 53 non-null float64\n",
59 | " 16 rectal_exam_feces 197 non-null object \n",
60 | " 17 abdomen 181 non-null object \n",
61 | " 18 packed_cell_volume 270 non-null float64\n",
62 | " 19 total_protein 266 non-null float64\n",
63 | " 20 abdomo_appearance 134 non-null object \n",
64 | " 21 abdomo_protein 101 non-null float64\n",
65 | " 22 outcome 299 non-null object \n",
66 | " 23 surgical_lesion 299 non-null object \n",
67 | " 24 lesion_1 299 non-null int64 \n",
68 | " 25 lesion_2 299 non-null int64 \n",
69 | " 26 lesion_3 299 non-null int64 \n",
70 | " 27 cp_data 299 non-null object \n",
71 | "dtypes: float64(7), int64(4), object(17)\n",
72 | "memory usage: 65.5+ KB\n"
73 | ]
74 | }
75 | ],
76 | "source": [
77 | "df.info()"
78 | ]
79 | },
80 | {
81 | "cell_type": "code",
82 | "execution_count": 4,
83 | "metadata": {},
84 | "outputs": [],
85 | "source": [
86 | "def prep_df(df_):\n",
87 | " return df_.assign(\n",
88 | " **df_.select_dtypes(['object', 'category']).astype(str))\n",
89 | "\n",
90 | "def predict_missing(df_, col):\n",
91 | " df_ = prep_df(df_)\n",
92 | " \n",
93 | " not_missing = df_[df_[col].notna()]\n",
94 | " missing = df_[df_[col].isna()]\n",
95 | " \n",
96 | " X_train = not_missing.drop(columns=[col])\n",
97 | " y_train = not_missing[col]\n",
98 | " X_pred = missing.drop(columns=[col])\n",
99 | " \n",
100 | " cat_cols = list(X_train.select_dtypes(include=['object']).columns)\n",
101 | " \n",
102 | " model = cb.CatBoostRegressor(iterations=20,\n",
103 | " cat_features=cat_cols,\n",
104 | " silent=True)\n",
105 | " \n",
106 | " model.fit(X_train, y_train)\n",
107 | " \n",
108 | " predicted_value = model.predict(X_pred)\n",
109 | " \n",
110 | " return df_[col].where(df_[col].notna(), \n",
111 | " pd.Series(predicted_value, \n",
112 | " index=missing.index))"
113 | ]
114 | },
115 | {
116 | "cell_type": "code",
117 | "execution_count": 5,
118 | "metadata": {},
119 | "outputs": [],
120 | "source": [
121 | "df2 = (df\n",
122 | " .assign(respiratory_rate= lambda df: predict_missing(df, 'respiratory_rate'),\n",
123 | " packed_cell_volume= lambda df: predict_missing(df, 'packed_cell_volume'))\n",
124 | " )"
125 | ]
126 | },
127 | {
128 | "cell_type": "code",
129 | "execution_count": 6,
130 | "metadata": {},
131 | "outputs": [
132 | {
133 | "data": {
134 | "text/plain": [
135 | "0.1939799331103679"
136 | ]
137 | },
138 | "execution_count": 6,
139 | "metadata": {},
140 | "output_type": "execute_result"
141 | }
142 | ],
143 | "source": [
144 | "df.respiratory_rate.isna().mean()"
145 | ]
146 | },
147 | {
148 | "cell_type": "code",
149 | "execution_count": 7,
150 | "metadata": {},
151 | "outputs": [
152 | {
153 | "data": {
154 | "text/plain": [
155 | "0.0"
156 | ]
157 | },
158 | "execution_count": 7,
159 | "metadata": {},
160 | "output_type": "execute_result"
161 | }
162 | ],
163 | "source": [
164 | "df2.respiratory_rate.isna().mean()"
165 | ]
166 | },
167 | {
168 | "cell_type": "code",
169 | "execution_count": 8,
170 | "metadata": {},
171 | "outputs": [
172 | {
173 | "data": {
174 | "text/plain": [
175 | "0.09698996655518395"
176 | ]
177 | },
178 | "execution_count": 8,
179 | "metadata": {},
180 | "output_type": "execute_result"
181 | }
182 | ],
183 | "source": [
184 | "df.packed_cell_volume.isna().mean()"
185 | ]
186 | },
187 | {
188 | "cell_type": "code",
189 | "execution_count": 9,
190 | "metadata": {},
191 | "outputs": [
192 | {
193 | "data": {
194 | "text/html": [
195 | "\n",
196 | "\n",
209 | "
\n",
210 | " \n",
211 | " \n",
212 | " | \n",
213 | " surgery | \n",
214 | " age | \n",
215 | " hospital_number | \n",
216 | " rectal_temp | \n",
217 | " pulse | \n",
218 | " respiratory_rate | \n",
219 | " temp_of_extremities | \n",
220 | " peripheral_pulse | \n",
221 | " mucous_membrane | \n",
222 | " capillary_refill_time | \n",
223 | " ... | \n",
224 | " packed_cell_volume | \n",
225 | " total_protein | \n",
226 | " abdomo_appearance | \n",
227 | " abdomo_protein | \n",
228 | " outcome | \n",
229 | " surgical_lesion | \n",
230 | " lesion_1 | \n",
231 | " lesion_2 | \n",
232 | " lesion_3 | \n",
233 | " cp_data | \n",
234 | "
\n",
235 | " \n",
236 | " \n",
237 | " \n",
238 | " 0 | \n",
239 | " no | \n",
240 | " adult | \n",
241 | " 530101 | \n",
242 | " 38.5 | \n",
243 | " 66.0 | \n",
244 | " 28.0 | \n",
245 | " cool | \n",
246 | " reduced | \n",
247 | " NaN | \n",
248 | " more_3_sec | \n",
249 | " ... | \n",
250 | " 45.0 | \n",
251 | " 8.4 | \n",
252 | " NaN | \n",
253 | " NaN | \n",
254 | " died | \n",
255 | " no | \n",
256 | " 11300 | \n",
257 | " 0 | \n",
258 | " 0 | \n",
259 | " no | \n",
260 | "
\n",
261 | " \n",
262 | " 1 | \n",
263 | " yes | \n",
264 | " adult | \n",
265 | " 534817 | \n",
266 | " 39.2 | \n",
267 | " 88.0 | \n",
268 | " 20.0 | \n",
269 | " NaN | \n",
270 | " NaN | \n",
271 | " pale_cyanotic | \n",
272 | " less_3_sec | \n",
273 | " ... | \n",
274 | " 50.0 | \n",
275 | " 85.0 | \n",
276 | " cloudy | \n",
277 | " 2.0 | \n",
278 | " euthanized | \n",
279 | " no | \n",
280 | " 2208 | \n",
281 | " 0 | \n",
282 | " 0 | \n",
283 | " no | \n",
284 | "
\n",
285 | " \n",
286 | " 2 | \n",
287 | " no | \n",
288 | " adult | \n",
289 | " 530334 | \n",
290 | " 38.3 | \n",
291 | " 40.0 | \n",
292 | " 24.0 | \n",
293 | " normal | \n",
294 | " normal | \n",
295 | " pale_pink | \n",
296 | " less_3_sec | \n",
297 | " ... | \n",
298 | " 33.0 | \n",
299 | " 6.7 | \n",
300 | " NaN | \n",
301 | " NaN | \n",
302 | " lived | \n",
303 | " no | \n",
304 | " 0 | \n",
305 | " 0 | \n",
306 | " 0 | \n",
307 | " yes | \n",
308 | "
\n",
309 | " \n",
310 | " 3 | \n",
311 | " yes | \n",
312 | " young | \n",
313 | " 5290409 | \n",
314 | " 39.1 | \n",
315 | " 164.0 | \n",
316 | " 84.0 | \n",
317 | " cold | \n",
318 | " normal | \n",
319 | " dark_cyanotic | \n",
320 | " more_3_sec | \n",
321 | " ... | \n",
322 | " 48.0 | \n",
323 | " 7.2 | \n",
324 | " serosanguious | \n",
325 | " 5.3 | \n",
326 | " died | \n",
327 | " yes | \n",
328 | " 2208 | \n",
329 | " 0 | \n",
330 | " 0 | \n",
331 | " yes | \n",
332 | "
\n",
333 | " \n",
334 | " 4 | \n",
335 | " no | \n",
336 | " adult | \n",
337 | " 530255 | \n",
338 | " 37.3 | \n",
339 | " 104.0 | \n",
340 | " 35.0 | \n",
341 | " NaN | \n",
342 | " NaN | \n",
343 | " dark_cyanotic | \n",
344 | " more_3_sec | \n",
345 | " ... | \n",
346 | " 74.0 | \n",
347 | " 7.4 | \n",
348 | " NaN | \n",
349 | " NaN | \n",
350 | " died | \n",
351 | " no | \n",
352 | " 4300 | \n",
353 | " 0 | \n",
354 | " 0 | \n",
355 | " no | \n",
356 | "
\n",
357 | " \n",
358 | " 5 | \n",
359 | " no | \n",
360 | " adult | \n",
361 | " 528355 | \n",
362 | " NaN | \n",
363 | " NaN | \n",
364 | " NaN | \n",
365 | " warm | \n",
366 | " normal | \n",
367 | " pale_pink | \n",
368 | " less_3_sec | \n",
369 | " ... | \n",
370 | " NaN | \n",
371 | " NaN | \n",
372 | " NaN | \n",
373 | " NaN | \n",
374 | " lived | \n",
375 | " no | \n",
376 | " 0 | \n",
377 | " 0 | \n",
378 | " 0 | \n",
379 | " no | \n",
380 | "
\n",
381 | " \n",
382 | " 6 | \n",
383 | " yes | \n",
384 | " adult | \n",
385 | " 526802 | \n",
386 | " 37.9 | \n",
387 | " 48.0 | \n",
388 | " 16.0 | \n",
389 | " normal | \n",
390 | " normal | \n",
391 | " normal_pink | \n",
392 | " less_3_sec | \n",
393 | " ... | \n",
394 | " 37.0 | \n",
395 | " 7.0 | \n",
396 | " NaN | \n",
397 | " NaN | \n",
398 | " lived | \n",
399 | " yes | \n",
400 | " 3124 | \n",
401 | " 0 | \n",
402 | " 0 | \n",
403 | " no | \n",
404 | "
\n",
405 | " \n",
406 | " 7 | \n",
407 | " yes | \n",
408 | " adult | \n",
409 | " 529607 | \n",
410 | " NaN | \n",
411 | " 60.0 | \n",
412 | " NaN | \n",
413 | " cool | \n",
414 | " NaN | \n",
415 | " NaN | \n",
416 | " less_3_sec | \n",
417 | " ... | \n",
418 | " 44.0 | \n",
419 | " 8.3 | \n",
420 | " NaN | \n",
421 | " NaN | \n",
422 | " died | \n",
423 | " yes | \n",
424 | " 2208 | \n",
425 | " 0 | \n",
426 | " 0 | \n",
427 | " no | \n",
428 | "
\n",
429 | " \n",
430 | " 8 | \n",
431 | " no | \n",
432 | " adult | \n",
433 | " 530051 | \n",
434 | " NaN | \n",
435 | " 80.0 | \n",
436 | " 36.0 | \n",
437 | " cool | \n",
438 | " absent | \n",
439 | " pale_pink | \n",
440 | " less_3_sec | \n",
441 | " ... | \n",
442 | " 38.0 | \n",
443 | " 6.2 | \n",
444 | " NaN | \n",
445 | " NaN | \n",
446 | " euthanized | \n",
447 | " yes | \n",
448 | " 3205 | \n",
449 | " 0 | \n",
450 | " 0 | \n",
451 | " no | \n",
452 | "
\n",
453 | " \n",
454 | " 9 | \n",
455 | " no | \n",
456 | " young | \n",
457 | " 5299629 | \n",
458 | " 38.3 | \n",
459 | " 90.0 | \n",
460 | " NaN | \n",
461 | " normal | \n",
462 | " NaN | \n",
463 | " normal_pink | \n",
464 | " less_3_sec | \n",
465 | " ... | \n",
466 | " 40.0 | \n",
467 | " 6.2 | \n",
468 | " clear | \n",
469 | " 2.2 | \n",
470 | " lived | \n",
471 | " no | \n",
472 | " 0 | \n",
473 | " 0 | \n",
474 | " 0 | \n",
475 | " yes | \n",
476 | "
\n",
477 | " \n",
478 | "
\n",
479 | "
10 rows × 28 columns
\n",
480 | "
"
481 | ],
482 | "text/plain": [
483 | " surgery age hospital_number rectal_temp pulse respiratory_rate \\\n",
484 | "0 no adult 530101 38.5 66.0 28.0 \n",
485 | "1 yes adult 534817 39.2 88.0 20.0 \n",
486 | "2 no adult 530334 38.3 40.0 24.0 \n",
487 | "3 yes young 5290409 39.1 164.0 84.0 \n",
488 | "4 no adult 530255 37.3 104.0 35.0 \n",
489 | "5 no adult 528355 NaN NaN NaN \n",
490 | "6 yes adult 526802 37.9 48.0 16.0 \n",
491 | "7 yes adult 529607 NaN 60.0 NaN \n",
492 | "8 no adult 530051 NaN 80.0 36.0 \n",
493 | "9 no young 5299629 38.3 90.0 NaN \n",
494 | "\n",
495 | " temp_of_extremities peripheral_pulse mucous_membrane capillary_refill_time \\\n",
496 | "0 cool reduced NaN more_3_sec \n",
497 | "1 NaN NaN pale_cyanotic less_3_sec \n",
498 | "2 normal normal pale_pink less_3_sec \n",
499 | "3 cold normal dark_cyanotic more_3_sec \n",
500 | "4 NaN NaN dark_cyanotic more_3_sec \n",
501 | "5 warm normal pale_pink less_3_sec \n",
502 | "6 normal normal normal_pink less_3_sec \n",
503 | "7 cool NaN NaN less_3_sec \n",
504 | "8 cool absent pale_pink less_3_sec \n",
505 | "9 normal NaN normal_pink less_3_sec \n",
506 | "\n",
507 | " ... packed_cell_volume total_protein abdomo_appearance abdomo_protein \\\n",
508 | "0 ... 45.0 8.4 NaN NaN \n",
509 | "1 ... 50.0 85.0 cloudy 2.0 \n",
510 | "2 ... 33.0 6.7 NaN NaN \n",
511 | "3 ... 48.0 7.2 serosanguious 5.3 \n",
512 | "4 ... 74.0 7.4 NaN NaN \n",
513 | "5 ... NaN NaN NaN NaN \n",
514 | "6 ... 37.0 7.0 NaN NaN \n",
515 | "7 ... 44.0 8.3 NaN NaN \n",
516 | "8 ... 38.0 6.2 NaN NaN \n",
517 | "9 ... 40.0 6.2 clear 2.2 \n",
518 | "\n",
519 | " outcome surgical_lesion lesion_1 lesion_2 lesion_3 cp_data \n",
520 | "0 died no 11300 0 0 no \n",
521 | "1 euthanized no 2208 0 0 no \n",
522 | "2 lived no 0 0 0 yes \n",
523 | "3 died yes 2208 0 0 yes \n",
524 | "4 died no 4300 0 0 no \n",
525 | "5 lived no 0 0 0 no \n",
526 | "6 lived yes 3124 0 0 no \n",
527 | "7 died yes 2208 0 0 no \n",
528 | "8 euthanized yes 3205 0 0 no \n",
529 | "9 lived no 0 0 0 yes \n",
530 | "\n",
531 | "[10 rows x 28 columns]"
532 | ]
533 | },
534 | "execution_count": 9,
535 | "metadata": {},
536 | "output_type": "execute_result"
537 | }
538 | ],
539 | "source": [
540 | "df.head(10)"
541 | ]
542 | },
543 | {
544 | "cell_type": "code",
545 | "execution_count": 10,
546 | "metadata": {},
547 | "outputs": [
548 | {
549 | "data": {
550 | "text/html": [
551 | "\n",
552 | "\n",
565 | "
\n",
566 | " \n",
567 | " \n",
568 | " | \n",
569 | " surgery | \n",
570 | " age | \n",
571 | " hospital_number | \n",
572 | " rectal_temp | \n",
573 | " pulse | \n",
574 | " respiratory_rate | \n",
575 | " temp_of_extremities | \n",
576 | " peripheral_pulse | \n",
577 | " mucous_membrane | \n",
578 | " capillary_refill_time | \n",
579 | " ... | \n",
580 | " packed_cell_volume | \n",
581 | " total_protein | \n",
582 | " abdomo_appearance | \n",
583 | " abdomo_protein | \n",
584 | " outcome | \n",
585 | " surgical_lesion | \n",
586 | " lesion_1 | \n",
587 | " lesion_2 | \n",
588 | " lesion_3 | \n",
589 | " cp_data | \n",
590 | "
\n",
591 | " \n",
592 | " \n",
593 | " \n",
594 | " 0 | \n",
595 | " no | \n",
596 | " adult | \n",
597 | " 530101 | \n",
598 | " 38.5 | \n",
599 | " 66.0 | \n",
600 | " 28.000000 | \n",
601 | " cool | \n",
602 | " reduced | \n",
603 | " NaN | \n",
604 | " more_3_sec | \n",
605 | " ... | \n",
606 | " 45.000000 | \n",
607 | " 8.4 | \n",
608 | " NaN | \n",
609 | " NaN | \n",
610 | " died | \n",
611 | " no | \n",
612 | " 11300 | \n",
613 | " 0 | \n",
614 | " 0 | \n",
615 | " no | \n",
616 | "
\n",
617 | " \n",
618 | " 1 | \n",
619 | " yes | \n",
620 | " adult | \n",
621 | " 534817 | \n",
622 | " 39.2 | \n",
623 | " 88.0 | \n",
624 | " 20.000000 | \n",
625 | " NaN | \n",
626 | " NaN | \n",
627 | " pale_cyanotic | \n",
628 | " less_3_sec | \n",
629 | " ... | \n",
630 | " 50.000000 | \n",
631 | " 85.0 | \n",
632 | " cloudy | \n",
633 | " 2.0 | \n",
634 | " euthanized | \n",
635 | " no | \n",
636 | " 2208 | \n",
637 | " 0 | \n",
638 | " 0 | \n",
639 | " no | \n",
640 | "
\n",
641 | " \n",
642 | " 2 | \n",
643 | " no | \n",
644 | " adult | \n",
645 | " 530334 | \n",
646 | " 38.3 | \n",
647 | " 40.0 | \n",
648 | " 24.000000 | \n",
649 | " normal | \n",
650 | " normal | \n",
651 | " pale_pink | \n",
652 | " less_3_sec | \n",
653 | " ... | \n",
654 | " 33.000000 | \n",
655 | " 6.7 | \n",
656 | " NaN | \n",
657 | " NaN | \n",
658 | " lived | \n",
659 | " no | \n",
660 | " 0 | \n",
661 | " 0 | \n",
662 | " 0 | \n",
663 | " yes | \n",
664 | "
\n",
665 | " \n",
666 | " 3 | \n",
667 | " yes | \n",
668 | " young | \n",
669 | " 5290409 | \n",
670 | " 39.1 | \n",
671 | " 164.0 | \n",
672 | " 84.000000 | \n",
673 | " cold | \n",
674 | " normal | \n",
675 | " dark_cyanotic | \n",
676 | " more_3_sec | \n",
677 | " ... | \n",
678 | " 48.000000 | \n",
679 | " 7.2 | \n",
680 | " serosanguious | \n",
681 | " 5.3 | \n",
682 | " died | \n",
683 | " yes | \n",
684 | " 2208 | \n",
685 | " 0 | \n",
686 | " 0 | \n",
687 | " yes | \n",
688 | "
\n",
689 | " \n",
690 | " 4 | \n",
691 | " no | \n",
692 | " adult | \n",
693 | " 530255 | \n",
694 | " 37.3 | \n",
695 | " 104.0 | \n",
696 | " 35.000000 | \n",
697 | " NaN | \n",
698 | " NaN | \n",
699 | " dark_cyanotic | \n",
700 | " more_3_sec | \n",
701 | " ... | \n",
702 | " 74.000000 | \n",
703 | " 7.4 | \n",
704 | " NaN | \n",
705 | " NaN | \n",
706 | " died | \n",
707 | " no | \n",
708 | " 4300 | \n",
709 | " 0 | \n",
710 | " 0 | \n",
711 | " no | \n",
712 | "
\n",
713 | " \n",
714 | " 5 | \n",
715 | " no | \n",
716 | " adult | \n",
717 | " 528355 | \n",
718 | " NaN | \n",
719 | " NaN | \n",
720 | " 26.575245 | \n",
721 | " warm | \n",
722 | " normal | \n",
723 | " pale_pink | \n",
724 | " less_3_sec | \n",
725 | " ... | \n",
726 | " 44.260957 | \n",
727 | " NaN | \n",
728 | " NaN | \n",
729 | " NaN | \n",
730 | " lived | \n",
731 | " no | \n",
732 | " 0 | \n",
733 | " 0 | \n",
734 | " 0 | \n",
735 | " no | \n",
736 | "
\n",
737 | " \n",
738 | " 6 | \n",
739 | " yes | \n",
740 | " adult | \n",
741 | " 526802 | \n",
742 | " 37.9 | \n",
743 | " 48.0 | \n",
744 | " 16.000000 | \n",
745 | " normal | \n",
746 | " normal | \n",
747 | " normal_pink | \n",
748 | " less_3_sec | \n",
749 | " ... | \n",
750 | " 37.000000 | \n",
751 | " 7.0 | \n",
752 | " NaN | \n",
753 | " NaN | \n",
754 | " lived | \n",
755 | " yes | \n",
756 | " 3124 | \n",
757 | " 0 | \n",
758 | " 0 | \n",
759 | " no | \n",
760 | "
\n",
761 | " \n",
762 | " 7 | \n",
763 | " yes | \n",
764 | " adult | \n",
765 | " 529607 | \n",
766 | " NaN | \n",
767 | " 60.0 | \n",
768 | " 24.355778 | \n",
769 | " cool | \n",
770 | " NaN | \n",
771 | " NaN | \n",
772 | " less_3_sec | \n",
773 | " ... | \n",
774 | " 44.000000 | \n",
775 | " 8.3 | \n",
776 | " NaN | \n",
777 | " NaN | \n",
778 | " died | \n",
779 | " yes | \n",
780 | " 2208 | \n",
781 | " 0 | \n",
782 | " 0 | \n",
783 | " no | \n",
784 | "
\n",
785 | " \n",
786 | " 8 | \n",
787 | " no | \n",
788 | " adult | \n",
789 | " 530051 | \n",
790 | " NaN | \n",
791 | " 80.0 | \n",
792 | " 36.000000 | \n",
793 | " cool | \n",
794 | " absent | \n",
795 | " pale_pink | \n",
796 | " less_3_sec | \n",
797 | " ... | \n",
798 | " 38.000000 | \n",
799 | " 6.2 | \n",
800 | " NaN | \n",
801 | " NaN | \n",
802 | " euthanized | \n",
803 | " yes | \n",
804 | " 3205 | \n",
805 | " 0 | \n",
806 | " 0 | \n",
807 | " no | \n",
808 | "
\n",
809 | " \n",
810 | " 9 | \n",
811 | " no | \n",
812 | " young | \n",
813 | " 5299629 | \n",
814 | " 38.3 | \n",
815 | " 90.0 | \n",
816 | " 33.019102 | \n",
817 | " normal | \n",
818 | " NaN | \n",
819 | " normal_pink | \n",
820 | " less_3_sec | \n",
821 | " ... | \n",
822 | " 40.000000 | \n",
823 | " 6.2 | \n",
824 | " clear | \n",
825 | " 2.2 | \n",
826 | " lived | \n",
827 | " no | \n",
828 | " 0 | \n",
829 | " 0 | \n",
830 | " 0 | \n",
831 | " yes | \n",
832 | "
\n",
833 | " \n",
834 | "
\n",
835 | "
10 rows × 28 columns
\n",
836 | "
"
837 | ],
838 | "text/plain": [
839 | " surgery age hospital_number rectal_temp pulse respiratory_rate \\\n",
840 | "0 no adult 530101 38.5 66.0 28.000000 \n",
841 | "1 yes adult 534817 39.2 88.0 20.000000 \n",
842 | "2 no adult 530334 38.3 40.0 24.000000 \n",
843 | "3 yes young 5290409 39.1 164.0 84.000000 \n",
844 | "4 no adult 530255 37.3 104.0 35.000000 \n",
845 | "5 no adult 528355 NaN NaN 26.575245 \n",
846 | "6 yes adult 526802 37.9 48.0 16.000000 \n",
847 | "7 yes adult 529607 NaN 60.0 24.355778 \n",
848 | "8 no adult 530051 NaN 80.0 36.000000 \n",
849 | "9 no young 5299629 38.3 90.0 33.019102 \n",
850 | "\n",
851 | " temp_of_extremities peripheral_pulse mucous_membrane capillary_refill_time \\\n",
852 | "0 cool reduced NaN more_3_sec \n",
853 | "1 NaN NaN pale_cyanotic less_3_sec \n",
854 | "2 normal normal pale_pink less_3_sec \n",
855 | "3 cold normal dark_cyanotic more_3_sec \n",
856 | "4 NaN NaN dark_cyanotic more_3_sec \n",
857 | "5 warm normal pale_pink less_3_sec \n",
858 | "6 normal normal normal_pink less_3_sec \n",
859 | "7 cool NaN NaN less_3_sec \n",
860 | "8 cool absent pale_pink less_3_sec \n",
861 | "9 normal NaN normal_pink less_3_sec \n",
862 | "\n",
863 | " ... packed_cell_volume total_protein abdomo_appearance abdomo_protein \\\n",
864 | "0 ... 45.000000 8.4 NaN NaN \n",
865 | "1 ... 50.000000 85.0 cloudy 2.0 \n",
866 | "2 ... 33.000000 6.7 NaN NaN \n",
867 | "3 ... 48.000000 7.2 serosanguious 5.3 \n",
868 | "4 ... 74.000000 7.4 NaN NaN \n",
869 | "5 ... 44.260957 NaN NaN NaN \n",
870 | "6 ... 37.000000 7.0 NaN NaN \n",
871 | "7 ... 44.000000 8.3 NaN NaN \n",
872 | "8 ... 38.000000 6.2 NaN NaN \n",
873 | "9 ... 40.000000 6.2 clear 2.2 \n",
874 | "\n",
875 | " outcome surgical_lesion lesion_1 lesion_2 lesion_3 cp_data \n",
876 | "0 died no 11300 0 0 no \n",
877 | "1 euthanized no 2208 0 0 no \n",
878 | "2 lived no 0 0 0 yes \n",
879 | "3 died yes 2208 0 0 yes \n",
880 | "4 died no 4300 0 0 no \n",
881 | "5 lived no 0 0 0 no \n",
882 | "6 lived yes 3124 0 0 no \n",
883 | "7 died yes 2208 0 0 no \n",
884 | "8 euthanized yes 3205 0 0 no \n",
885 | "9 lived no 0 0 0 yes \n",
886 | "\n",
887 | "[10 rows x 28 columns]"
888 | ]
889 | },
890 | "execution_count": 10,
891 | "metadata": {},
892 | "output_type": "execute_result"
893 | }
894 | ],
895 | "source": [
896 | "df2.head(10)"
897 | ]
898 | }
899 | ],
900 | "metadata": {
901 | "kernelspec": {
902 | "display_name": "dse",
903 | "language": "python",
904 | "name": "python3"
905 | },
906 | "language_info": {
907 | "codemirror_mode": {
908 | "name": "ipython",
909 | "version": 3
910 | },
911 | "file_extension": ".py",
912 | "mimetype": "text/x-python",
913 | "name": "python",
914 | "nbconvert_exporter": "python",
915 | "pygments_lexer": "ipython3",
916 | "version": "3.11.3"
917 | }
918 | },
919 | "nbformat": 4,
920 | "nbformat_minor": 2
921 | }
922 |
--------------------------------------------------------------------------------
/Derivatives.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "attachments": {},
5 | "cell_type": "markdown",
6 | "metadata": {},
7 | "source": [
8 | "# Calculate derivatives in Python"
9 | ]
10 | },
11 | {
12 | "cell_type": "code",
13 | "execution_count": 88,
14 | "metadata": {},
15 | "outputs": [],
16 | "source": [
17 | "import sympy as sym"
18 | ]
19 | },
20 | {
21 | "cell_type": "code",
22 | "execution_count": 89,
23 | "metadata": {},
24 | "outputs": [
25 | {
26 | "data": {
27 | "text/latex": [
28 | "$\\displaystyle \\frac{d}{d x} \\left(x^{3} + 3 x - 2\\right)$"
29 | ],
30 | "text/plain": [
31 | "Derivative(x**3 + 3*x - 2, x)"
32 | ]
33 | },
34 | "execution_count": 89,
35 | "metadata": {},
36 | "output_type": "execute_result"
37 | }
38 | ],
39 | "source": [
40 | "x = sym.Symbol('x') # Symbolize X\n",
41 | "\n",
42 | "func= x**3+3*x-2 # Function\n",
43 | "\n",
44 | "sym.Derivative(func, x) # Derivative expression"
45 | ]
46 | },
47 | {
48 | "cell_type": "code",
49 | "execution_count": 90,
50 | "metadata": {},
51 | "outputs": [
52 | {
53 | "data": {
54 | "text/latex": [
55 | "$\\displaystyle 3 x^{2} + 3$"
56 | ],
57 | "text/plain": [
58 | "3*x**2 + 3"
59 | ]
60 | },
61 | "execution_count": 90,
62 | "metadata": {},
63 | "output_type": "execute_result"
64 | }
65 | ],
66 | "source": [
67 | "sym.Derivative(func, x, evaluate=True) # Calculate derivative of func"
68 | ]
69 | },
70 | {
71 | "cell_type": "code",
72 | "execution_count": 91,
73 | "metadata": {},
74 | "outputs": [
75 | {
76 | "data": {
77 | "text/latex": [
78 | "$\\displaystyle 3 x^{2} + 3$"
79 | ],
80 | "text/plain": [
81 | "3*x**2 + 3"
82 | ]
83 | },
84 | "execution_count": 91,
85 | "metadata": {},
86 | "output_type": "execute_result"
87 | }
88 | ],
89 | "source": [
90 | "func.diff(x) # Or use this for the same"
91 | ]
92 | },
93 | {
94 | "cell_type": "code",
95 | "execution_count": 92,
96 | "metadata": {},
97 | "outputs": [],
98 | "source": [
99 | "# Create functions with lambdify\n",
100 | "\n",
101 | "expr= sym.lambdify(x, func) \n",
102 | "\n",
103 | "expr_der=sym.lambdify(x, func.diff(x))"
104 | ]
105 | },
106 | {
107 | "cell_type": "code",
108 | "execution_count": 93,
109 | "metadata": {},
110 | "outputs": [
111 | {
112 | "name": "stdout",
113 | "output_type": "stream",
114 | "text": [
115 | "value of func at x=5: 138\n",
116 | "derivative of func at x=5: 78\n"
117 | ]
118 | }
119 | ],
120 | "source": [
121 | "print(f'value of func at x=5: {expr(5)}')\n",
122 | "print(f'derivative of func at x=5: {expr_der(5)}')"
123 | ]
124 | },
125 | {
126 | "attachments": {},
127 | "cell_type": "markdown",
128 | "metadata": {},
129 | "source": [
130 | "# Visualize derivatives in Python"
131 | ]
132 | },
133 | {
134 | "cell_type": "code",
135 | "execution_count": 94,
136 | "metadata": {},
137 | "outputs": [],
138 | "source": [
139 | "import numpy as np\n",
140 | "import pandas as pd\n",
141 | "import matplotlib.pyplot as plt"
142 | ]
143 | },
144 | {
145 | "cell_type": "code",
146 | "execution_count": 95,
147 | "metadata": {},
148 | "outputs": [
149 | {
150 | "data": {
151 | "image/png": "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",
152 | "text/plain": [
153 | ""
154 | ]
155 | },
156 | "metadata": {
157 | "needs_background": "light"
158 | },
159 | "output_type": "display_data"
160 | }
161 | ],
162 | "source": [
163 | "values = np.linspace(-10, 10, 100) # Create values for the function\n",
164 | "\n",
165 | "#Plot the function\n",
166 | "plt.plot(values, expr(values))\n",
167 | "\n",
168 | "# Add points where we want to calculate derivative\n",
169 | "x1=-5 \n",
170 | "y1=expr(x1)\n",
171 | "\n",
172 | "# Define x range for tangent line\n",
173 | "xrange = np.linspace(x1-5, x1+5, 10)\n",
174 | "\n",
175 | "# Define tangent line\n",
176 | "# y = m*(x - x1) + y1\n",
177 | "def line(x, x1, y1): return expr_der(x1)*(x - x1) + y1\n",
178 | "\n",
179 | "# Add tangent and touching point\n",
180 | "plt.plot(xrange, line(xrange, x1, y1), '--')\n",
181 | "plt.scatter(x1, y1, s=50, c='C1');"
182 | ]
183 | },
184 | {
185 | "attachments": {},
186 | "cell_type": "markdown",
187 | "metadata": {},
188 | "source": [
189 | "# References\n",
190 | "\n",
191 | "- https://stackoverflow.com/questions/54961306/how-to-plot-the-slope-tangent-line-of-parabola-at-any-point\n",
192 | "- https://dev.to/erikwhiting88/calculate-derivative-functions-in-python-h58"
193 | ]
194 | }
195 | ],
196 | "metadata": {
197 | "kernelspec": {
198 | "display_name": "MLFenv",
199 | "language": "python",
200 | "name": "python3"
201 | },
202 | "language_info": {
203 | "codemirror_mode": {
204 | "name": "ipython",
205 | "version": 3
206 | },
207 | "file_extension": ".py",
208 | "mimetype": "text/x-python",
209 | "name": "python",
210 | "nbconvert_exporter": "python",
211 | "pygments_lexer": "ipython3",
212 | "version": "3.9.16"
213 | },
214 | "orig_nbformat": 4
215 | },
216 | "nbformat": 4,
217 | "nbformat_minor": 2
218 | }
219 |
--------------------------------------------------------------------------------
/Dmatrix.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/Dmatrix.png
--------------------------------------------------------------------------------
/LLN-pal/100000000runs_lottery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/100000000runs_lottery.png
--------------------------------------------------------------------------------
/LLN-pal/10000000runs_lottery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/10000000runs_lottery.png
--------------------------------------------------------------------------------
/LLN-pal/1000000runs_lottery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/1000000runs_lottery.png
--------------------------------------------------------------------------------
/LLN-pal/100000runs_lottery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/100000runs_lottery.png
--------------------------------------------------------------------------------
/LLN-pal/10000runs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/10000runs.png
--------------------------------------------------------------------------------
/LLN-pal/10000runs_lottery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/10000runs_lottery.png
--------------------------------------------------------------------------------
/LLN-pal/1000runs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/1000runs.png
--------------------------------------------------------------------------------
/LLN-pal/1000runs_lottery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/1000runs_lottery.png
--------------------------------------------------------------------------------
/LLN-pal/100runs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/100runs.png
--------------------------------------------------------------------------------
/LLN-pal/100runs_lottery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/100runs_lottery.png
--------------------------------------------------------------------------------
/LLN-pal/10runs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/10runs.png
--------------------------------------------------------------------------------
/LLN-pal/10runs_lottery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/LLN-pal/10runs_lottery.png
--------------------------------------------------------------------------------
/LLN-pal/LLN-pal.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import matplotlib.pyplot as plt\n",
11 | "import numpy as np\n",
12 | "import random"
13 | ]
14 | },
15 | {
16 | "cell_type": "markdown",
17 | "metadata": {},
18 | "source": [
19 | "# Dice\n"
20 | ]
21 | },
22 | {
23 | "cell_type": "code",
24 | "execution_count": 2,
25 | "metadata": {},
26 | "outputs": [],
27 | "source": [
28 | "exp = (1+2+3+4+5+6)/6"
29 | ]
30 | },
31 | {
32 | "cell_type": "code",
33 | "execution_count": 3,
34 | "metadata": {},
35 | "outputs": [
36 | {
37 | "data": {
38 | "text/plain": [
39 | "3.5"
40 | ]
41 | },
42 | "execution_count": 3,
43 | "metadata": {},
44 | "output_type": "execute_result"
45 | }
46 | ],
47 | "source": [
48 | "exp"
49 | ]
50 | },
51 | {
52 | "cell_type": "code",
53 | "execution_count": 4,
54 | "metadata": {},
55 | "outputs": [
56 | {
57 | "data": {
58 | "text/plain": [
59 | "[2.0,\n",
60 | " 1.5,\n",
61 | " 2.3333333333333335,\n",
62 | " 2.25,\n",
63 | " 3.0,\n",
64 | " 3.3333333333333335,\n",
65 | " 3.142857142857143,\n",
66 | " 3.125,\n",
67 | " 2.888888888888889,\n",
68 | " 3.2,\n",
69 | " 3.3636363636363638,\n",
70 | " 3.1666666666666665,\n",
71 | " 3.3846153846153846,\n",
72 | " 3.2142857142857144,\n",
73 | " 3.4,\n",
74 | " 3.5,\n",
75 | " 3.6470588235294117,\n",
76 | " 3.7222222222222223,\n",
77 | " 3.6842105263157894,\n",
78 | " 3.75,\n",
79 | " 3.6666666666666665,\n",
80 | " 3.6363636363636362,\n",
81 | " 3.739130434782609,\n",
82 | " 3.8333333333333335,\n",
83 | " 3.88,\n",
84 | " 3.8076923076923075,\n",
85 | " 3.814814814814815,\n",
86 | " 3.7142857142857144,\n",
87 | " 3.6206896551724137,\n",
88 | " 3.566666666666667,\n",
89 | " 3.5806451612903225,\n",
90 | " 3.59375,\n",
91 | " 3.5757575757575757,\n",
92 | " 3.5588235294117645,\n",
93 | " 3.4857142857142858,\n",
94 | " 3.5555555555555554,\n",
95 | " 3.4864864864864864,\n",
96 | " 3.5,\n",
97 | " 3.4615384615384617,\n",
98 | " 3.475,\n",
99 | " 3.4634146341463414,\n",
100 | " 3.4285714285714284,\n",
101 | " 3.441860465116279,\n",
102 | " 3.477272727272727,\n",
103 | " 3.533333333333333,\n",
104 | " 3.4782608695652173,\n",
105 | " 3.425531914893617,\n",
106 | " 3.375,\n",
107 | " 3.3877551020408165,\n",
108 | " 3.34,\n",
109 | " 3.392156862745098,\n",
110 | " 3.4423076923076925,\n",
111 | " 3.4339622641509435,\n",
112 | " 3.4444444444444446,\n",
113 | " 3.4545454545454546,\n",
114 | " 3.4285714285714284,\n",
115 | " 3.3859649122807016,\n",
116 | " 3.396551724137931,\n",
117 | " 3.3559322033898304,\n",
118 | " 3.3333333333333335,\n",
119 | " 3.360655737704918,\n",
120 | " 3.3225806451612905,\n",
121 | " 3.3174603174603177,\n",
122 | " 3.28125,\n",
123 | " 3.292307692307692,\n",
124 | " 3.272727272727273,\n",
125 | " 3.3134328358208953,\n",
126 | " 3.3088235294117645,\n",
127 | " 3.318840579710145,\n",
128 | " 3.3,\n",
129 | " 3.3098591549295775,\n",
130 | " 3.3055555555555554,\n",
131 | " 3.3424657534246576,\n",
132 | " 3.310810810810811,\n",
133 | " 3.3066666666666666,\n",
134 | " 3.276315789473684,\n",
135 | " 3.2987012987012987,\n",
136 | " 3.269230769230769,\n",
137 | " 3.240506329113924,\n",
138 | " 3.2625,\n",
139 | " 3.246913580246914,\n",
140 | " 3.231707317073171,\n",
141 | " 3.216867469879518,\n",
142 | " 3.238095238095238,\n",
143 | " 3.2470588235294118,\n",
144 | " 3.244186046511628,\n",
145 | " 3.218390804597701,\n",
146 | " 3.227272727272727,\n",
147 | " 3.202247191011236,\n",
148 | " 3.2222222222222223,\n",
149 | " 3.21978021978022,\n",
150 | " 3.217391304347826,\n",
151 | " 3.225806451612903,\n",
152 | " 3.25531914893617,\n",
153 | " 3.231578947368421,\n",
154 | " 3.2291666666666665,\n",
155 | " 3.247422680412371,\n",
156 | " 3.2653061224489797,\n",
157 | " 3.282828282828283,\n",
158 | " 3.3,\n",
159 | " 3.3267326732673266,\n",
160 | " 3.3137254901960786,\n",
161 | " 3.3009708737864076,\n",
162 | " 3.3173076923076925,\n",
163 | " 3.3142857142857145,\n",
164 | " 3.339622641509434,\n",
165 | " 3.3551401869158877,\n",
166 | " 3.3518518518518516,\n",
167 | " 3.3394495412844036,\n",
168 | " 3.327272727272727,\n",
169 | " 3.3423423423423424,\n",
170 | " 3.3392857142857144,\n",
171 | " 3.3451327433628317,\n",
172 | " 3.3684210526315788,\n",
173 | " 3.373913043478261,\n",
174 | " 3.3793103448275863,\n",
175 | " 3.3675213675213675,\n",
176 | " 3.3813559322033897,\n",
177 | " 3.361344537815126,\n",
178 | " 3.35,\n",
179 | " 3.347107438016529,\n",
180 | " 3.3360655737704916,\n",
181 | " 3.3495934959349594,\n",
182 | " 3.3306451612903225,\n",
183 | " 3.352,\n",
184 | " 3.373015873015873,\n",
185 | " 3.377952755905512,\n",
186 | " 3.3984375,\n",
187 | " 3.4108527131782944,\n",
188 | " 3.4076923076923076,\n",
189 | " 3.427480916030534,\n",
190 | " 3.446969696969697,\n",
191 | " 3.443609022556391,\n",
192 | " 3.425373134328358,\n",
193 | " 3.414814814814815,\n",
194 | " 3.3970588235294117,\n",
195 | " 3.4160583941605838,\n",
196 | " 3.420289855072464,\n",
197 | " 3.431654676258993,\n",
198 | " 3.442857142857143,\n",
199 | " 3.4397163120567376,\n",
200 | " 3.436619718309859,\n",
201 | " 3.4475524475524475,\n",
202 | " 3.4583333333333335,\n",
203 | " 3.4551724137931035,\n",
204 | " 3.4657534246575343,\n",
205 | " 3.45578231292517,\n",
206 | " 3.445945945945946,\n",
207 | " 3.4630872483221475,\n",
208 | " 3.473333333333333,\n",
209 | " 3.4635761589403975,\n",
210 | " 3.4671052631578947,\n",
211 | " 3.4705882352941178,\n",
212 | " 3.4675324675324677,\n",
213 | " 3.470967741935484,\n",
214 | " 3.4743589743589745,\n",
215 | " 3.4713375796178343,\n",
216 | " 3.4556962025316458,\n",
217 | " 3.4465408805031448,\n",
218 | " 3.45,\n",
219 | " 3.4472049689440993,\n",
220 | " 3.450617283950617,\n",
221 | " 3.4355828220858897,\n",
222 | " 3.4207317073170733,\n",
223 | " 3.4242424242424243,\n",
224 | " 3.427710843373494,\n",
225 | " 3.4251497005988023,\n",
226 | " 3.4166666666666665,\n",
227 | " 3.4319526627218937,\n",
228 | " 3.429411764705882,\n",
229 | " 3.43859649122807,\n",
230 | " 3.453488372093023,\n",
231 | " 3.468208092485549,\n",
232 | " 3.4655172413793105,\n",
233 | " 3.4685714285714284,\n",
234 | " 3.460227272727273,\n",
235 | " 3.457627118644068,\n",
236 | " 3.455056179775281,\n",
237 | " 3.458100558659218,\n",
238 | " 3.45,\n",
239 | " 3.4419889502762433,\n",
240 | " 3.4505494505494507,\n",
241 | " 3.453551912568306,\n",
242 | " 3.467391304347826,\n",
243 | " 3.4702702702702704,\n",
244 | " 3.4623655913978495,\n",
245 | " 3.449197860962567,\n",
246 | " 3.4414893617021276,\n",
247 | " 3.4444444444444446,\n",
248 | " 3.431578947368421,\n",
249 | " 3.43979057591623,\n",
250 | " 3.4375,\n",
251 | " 3.430051813471503,\n",
252 | " 3.417525773195876,\n",
253 | " 3.41025641025641,\n",
254 | " 3.4081632653061225,\n",
255 | " 3.4060913705583755,\n",
256 | " 3.398989898989899,\n",
257 | " 3.4120603015075375,\n",
258 | " 3.415,\n",
259 | " 3.417910447761194,\n",
260 | " 3.4257425742574257,\n",
261 | " 3.41871921182266,\n",
262 | " 3.4215686274509802,\n",
263 | " 3.4292682926829268,\n",
264 | " 3.441747572815534,\n",
265 | " 3.4444444444444446,\n",
266 | " 3.4375,\n",
267 | " 3.4354066985645932,\n",
268 | " 3.442857142857143,\n",
269 | " 3.4360189573459716,\n",
270 | " 3.44811320754717,\n",
271 | " 3.4413145539906105,\n",
272 | " 3.4299065420560746,\n",
273 | " 3.4232558139534883,\n",
274 | " 3.435185185185185,\n",
275 | " 3.4331797235023043,\n",
276 | " 3.4220183486238533,\n",
277 | " 3.415525114155251,\n",
278 | " 3.4045454545454548,\n",
279 | " 3.3936651583710407,\n",
280 | " 3.3873873873873874,\n",
281 | " 3.3856502242152464,\n",
282 | " 3.3839285714285716,\n",
283 | " 3.3777777777777778,\n",
284 | " 3.3849557522123894,\n",
285 | " 3.383259911894273,\n",
286 | " 3.3859649122807016,\n",
287 | " 3.3799126637554586,\n",
288 | " 3.382608695652174,\n",
289 | " 3.380952380952381,\n",
290 | " 3.3836206896551726,\n",
291 | " 3.3733905579399144,\n",
292 | " 3.3632478632478633,\n",
293 | " 3.3574468085106384,\n",
294 | " 3.347457627118644,\n",
295 | " 3.3375527426160336,\n",
296 | " 3.3487394957983194,\n",
297 | " 3.3514644351464433,\n",
298 | " 3.3541666666666665,\n",
299 | " 3.3651452282157677,\n",
300 | " 3.371900826446281,\n",
301 | " 3.3621399176954734,\n",
302 | " 3.3565573770491803,\n",
303 | " 3.3510204081632655,\n",
304 | " 3.361788617886179,\n",
305 | " 3.3684210526315788,\n",
306 | " 3.379032258064516,\n",
307 | " 3.3694779116465865,\n",
308 | " 3.364,\n",
309 | " 3.362549800796813,\n",
310 | " 3.365079365079365,\n",
311 | " 3.375494071146245,\n",
312 | " 3.37007874015748,\n",
313 | " 3.376470588235294,\n",
314 | " 3.37890625,\n",
315 | " 3.3813229571984436,\n",
316 | " 3.383720930232558,\n",
317 | " 3.3745173745173744,\n",
318 | " 3.3653846153846154,\n",
319 | " 3.363984674329502,\n",
320 | " 3.366412213740458,\n",
321 | " 3.3688212927756656,\n",
322 | " 3.359848484848485,\n",
323 | " 3.362264150943396,\n",
324 | " 3.3646616541353382,\n",
325 | " 3.3707865168539324,\n",
326 | " 3.361940298507463,\n",
327 | " 3.3643122676579926,\n",
328 | " 3.359259259259259,\n",
329 | " 3.3542435424354244,\n",
330 | " 3.360294117647059,\n",
331 | " 3.3626373626373627,\n",
332 | " 3.3613138686131387,\n",
333 | " 3.370909090909091,\n",
334 | " 3.3659420289855073,\n",
335 | " 3.371841155234657,\n",
336 | " 3.381294964028777,\n",
337 | " 3.379928315412186,\n",
338 | " 3.3857142857142857,\n",
339 | " 3.395017793594306,\n",
340 | " 3.400709219858156,\n",
341 | " 3.392226148409894,\n",
342 | " 3.397887323943662,\n",
343 | " 3.3929824561403508,\n",
344 | " 3.3916083916083917,\n",
345 | " 3.3867595818815333,\n",
346 | " 3.3958333333333335,\n",
347 | " 3.397923875432526,\n",
348 | " 3.4,\n",
349 | " 3.3917525773195876,\n",
350 | " 3.386986301369863,\n",
351 | " 3.385665529010239,\n",
352 | " 3.391156462585034,\n",
353 | " 3.4,\n",
354 | " 3.402027027027027,\n",
355 | " 3.4006734006734005,\n",
356 | " 3.402684563758389,\n",
357 | " 3.3946488294314383,\n",
358 | " 3.39,\n",
359 | " 3.39202657807309,\n",
360 | " 3.4006622516556293,\n",
361 | " 3.396039603960396,\n",
362 | " 3.4046052631578947,\n",
363 | " 3.40655737704918,\n",
364 | " 3.4084967320261437,\n",
365 | " 3.403908794788274,\n",
366 | " 3.4123376623376624,\n",
367 | " 3.4174757281553396,\n",
368 | " 3.4161290322580644,\n",
369 | " 3.418006430868167,\n",
370 | " 3.41025641025641,\n",
371 | " 3.402555910543131,\n",
372 | " 3.410828025477707,\n",
373 | " 3.419047619047619,\n",
374 | " 3.4145569620253164,\n",
375 | " 3.410094637223975,\n",
376 | " 3.4150943396226414,\n",
377 | " 3.420062695924765,\n",
378 | " 3.421875,\n",
379 | " 3.4174454828660434,\n",
380 | " 3.4161490683229814,\n",
381 | " 3.417956656346749,\n",
382 | " 3.4104938271604937,\n",
383 | " 3.4184615384615387,\n",
384 | " 3.420245398773006,\n",
385 | " 3.4250764525993884,\n",
386 | " 3.423780487804878,\n",
387 | " 3.43161094224924,\n",
388 | " 3.43030303030303,\n",
389 | " 3.4290030211480365,\n",
390 | " 3.427710843373494,\n",
391 | " 3.4324324324324325,\n",
392 | " 3.431137724550898,\n",
393 | " 3.4328358208955225,\n",
394 | " 3.4285714285714284,\n",
395 | " 3.427299703264095,\n",
396 | " 3.42603550295858,\n",
397 | " 3.433628318584071,\n",
398 | " 3.4323529411764704,\n",
399 | " 3.4281524926686218,\n",
400 | " 3.4327485380116958,\n",
401 | " 3.43731778425656,\n",
402 | " 3.441860465116279,\n",
403 | " 3.4405797101449274,\n",
404 | " 3.447976878612717,\n",
405 | " 3.440922190201729,\n",
406 | " 3.4482758620689653,\n",
407 | " 3.4412607449856734,\n",
408 | " 3.4485714285714284,\n",
409 | " 3.4472934472934473,\n",
410 | " 3.4517045454545454,\n",
411 | " 3.456090651558074,\n",
412 | " 3.4604519774011298,\n",
413 | " 3.4591549295774646,\n",
414 | " 3.460674157303371,\n",
415 | " 3.46218487394958,\n",
416 | " 3.4553072625698324,\n",
417 | " 3.4596100278551534,\n",
418 | " 3.4611111111111112,\n",
419 | " 3.4653739612188366,\n",
420 | " 3.4613259668508287,\n",
421 | " 3.465564738292011,\n",
422 | " 3.4642857142857144,\n",
423 | " 3.4602739726027396,\n",
424 | " 3.453551912568306,\n",
425 | " 3.4523160762942777,\n",
426 | " 3.4456521739130435,\n",
427 | " 3.4471544715447155,\n",
428 | " 3.4513513513513514,\n",
429 | " 3.444743935309973,\n",
430 | " 3.4408602150537635,\n",
431 | " 3.4450402144772116,\n",
432 | " 3.449197860962567,\n",
433 | " 3.445333333333333,\n",
434 | " 3.452127659574468,\n",
435 | " 3.453580901856764,\n",
436 | " 3.4523809523809526,\n",
437 | " 3.445910290237467,\n",
438 | " 3.4526315789473685,\n",
439 | " 3.4488188976377954,\n",
440 | " 3.4528795811518322,\n",
441 | " 3.4595300261096606,\n",
442 | " 3.4557291666666665,\n",
443 | " 3.4623376623376623,\n",
444 | " 3.461139896373057,\n",
445 | " 3.4677002583979326,\n",
446 | " 3.461340206185567,\n",
447 | " 3.467866323907455,\n",
448 | " 3.4641025641025642,\n",
449 | " 3.4603580562659846,\n",
450 | " 3.4668367346938775,\n",
451 | " 3.4681933842239188,\n",
452 | " 3.472081218274112,\n",
453 | " 3.4683544303797467,\n",
454 | " 3.4722222222222223,\n",
455 | " 3.4760705289672544,\n",
456 | " 3.477386934673367,\n",
457 | " 3.4711779448621556,\n",
458 | " 3.4725,\n",
459 | " 3.478802992518703,\n",
460 | " 3.4776119402985075,\n",
461 | " 3.4838709677419355,\n",
462 | " 3.48019801980198,\n",
463 | " 3.4814814814814814,\n",
464 | " 3.4852216748768474,\n",
465 | " 3.4914004914004915,\n",
466 | " 3.4926470588235294,\n",
467 | " 3.491442542787286,\n",
468 | " 3.4878048780487805,\n",
469 | " 3.493917274939173,\n",
470 | " 3.487864077669903,\n",
471 | " 3.4818401937046004,\n",
472 | " 3.4782608695652173,\n",
473 | " 3.47710843373494,\n",
474 | " 3.483173076923077,\n",
475 | " 3.4820143884892087,\n",
476 | " 3.4808612440191387,\n",
477 | " 3.484486873508353,\n",
478 | " 3.4785714285714286,\n",
479 | " 3.477434679334917,\n",
480 | " 3.471563981042654,\n",
481 | " 3.4775413711583925,\n",
482 | " 3.4716981132075473,\n",
483 | " 3.4776470588235293,\n",
484 | " 3.471830985915493,\n",
485 | " 3.4754098360655736,\n",
486 | " 3.4742990654205608,\n",
487 | " 3.48018648018648,\n",
488 | " 3.4813953488372094,\n",
489 | " 3.48491879350348,\n",
490 | " 3.490740740740741,\n",
491 | " 3.484988452655889,\n",
492 | " 3.4838709677419355,\n",
493 | " 3.4873563218390804,\n",
494 | " 3.493119266055046,\n",
495 | " 3.4988558352402745,\n",
496 | " 3.5045662100456623,\n",
497 | " 3.498861047835991,\n",
498 | " 3.5045454545454544,\n",
499 | " 3.5011337868480727,\n",
500 | " 3.5,\n",
501 | " 3.5033860045146725,\n",
502 | " 3.5022522522522523,\n",
503 | " 3.507865168539326,\n",
504 | " 3.504484304932735,\n",
505 | " 3.498881431767338,\n",
506 | " 3.5044642857142856,\n",
507 | " 3.510022271714922,\n",
508 | " 3.511111111111111,\n",
509 | " 3.516629711751663,\n",
510 | " 3.52212389380531,\n",
511 | " 3.520971302428256,\n",
512 | " 3.5198237885462555,\n",
513 | " 3.523076923076923,\n",
514 | " 3.526315789473684,\n",
515 | " 3.5317286652078774,\n",
516 | " 3.534934497816594,\n",
517 | " 3.531590413943355,\n",
518 | " 3.532608695652174,\n",
519 | " 3.531453362255965,\n",
520 | " 3.5303030303030303,\n",
521 | " 3.5313174946004318,\n",
522 | " 3.5301724137931036,\n",
523 | " 3.5268817204301075,\n",
524 | " 3.5278969957081543,\n",
525 | " 3.531049250535332,\n",
526 | " 3.5256410256410255,\n",
527 | " 3.5202558635394454,\n",
528 | " 3.525531914893617,\n",
529 | " 3.524416135881104,\n",
530 | " 3.5190677966101696,\n",
531 | " 3.522198731501057,\n",
532 | " 3.5253164556962027,\n",
533 | " 3.528421052631579,\n",
534 | " 3.527310924369748,\n",
535 | " 3.530398322851153,\n",
536 | " 3.5271966527196654,\n",
537 | " 3.528183716075157,\n",
538 | " 3.527083333333333,\n",
539 | " 3.525987525987526,\n",
540 | " 3.529045643153527,\n",
541 | " 3.5341614906832297,\n",
542 | " 3.53099173553719,\n",
543 | " 3.531958762886598,\n",
544 | " 3.52880658436214,\n",
545 | " 3.5236139630390144,\n",
546 | " 3.5184426229508197,\n",
547 | " 3.513292433537832,\n",
548 | " 3.5142857142857142,\n",
549 | " 3.5091649694501017,\n",
550 | " 3.508130081300813,\n",
551 | " 3.5070993914807302,\n",
552 | " 3.5040485829959516,\n",
553 | " 3.507070707070707,\n",
554 | " 3.5080645161290325,\n",
555 | " 3.5030181086519114,\n",
556 | " 3.5080321285140563,\n",
557 | " 3.509018036072144,\n",
558 | " 3.514,\n",
559 | " 3.5169660678642716,\n",
560 | " 3.5179282868525896,\n",
561 | " 3.518886679920477,\n",
562 | " 3.5218253968253967,\n",
563 | " 3.5267326732673268,\n",
564 | " 3.5296442687747036,\n",
565 | " 3.534516765285996,\n",
566 | " 3.5393700787401574,\n",
567 | " 3.5402750491159134,\n",
568 | " 3.5431372549019606,\n",
569 | " 3.5459882583170255,\n",
570 | " 3.548828125,\n",
571 | " 3.551656920077973,\n",
572 | " 3.5486381322957197,\n",
573 | " 3.549514563106796,\n",
574 | " 3.550387596899225,\n",
575 | " 3.5493230174081236,\n",
576 | " 3.5444015444015444,\n",
577 | " 3.5452793834296723,\n",
578 | " 3.546153846153846,\n",
579 | " 3.5412667946257197,\n",
580 | " 3.545977011494253,\n",
581 | " 3.5506692160611855,\n",
582 | " 3.549618320610687,\n",
583 | " 3.552380952380952,\n",
584 | " 3.5513307984790874,\n",
585 | " 3.5502846299810247,\n",
586 | " 3.5511363636363638,\n",
587 | " 3.5463137996219283,\n",
588 | " 3.550943396226415,\n",
589 | " 3.553672316384181,\n",
590 | " 3.5488721804511276,\n",
591 | " 3.544090056285178,\n",
592 | " 3.544943820224719,\n",
593 | " 3.547663551401869,\n",
594 | " 3.550373134328358,\n",
595 | " 3.5456238361266292,\n",
596 | " 3.546468401486989,\n",
597 | " 3.541743970315399,\n",
598 | " 3.5407407407407407,\n",
599 | " 3.5434380776340113,\n",
600 | " 3.544280442804428,\n",
601 | " 3.539594843462247,\n",
602 | " 3.5349264705882355,\n",
603 | " 3.539449541284404,\n",
604 | " 3.5384615384615383,\n",
605 | " 3.5356489945155394,\n",
606 | " 3.5328467153284673,\n",
607 | " 3.5336976320582876,\n",
608 | " 3.5345454545454547,\n",
609 | " 3.531760435571688,\n",
610 | " 3.536231884057971,\n",
611 | " 3.5406871609403257,\n",
612 | " 3.5433212996389893,\n",
613 | " 3.5441441441441444,\n",
614 | " 3.54136690647482,\n",
615 | " 3.540394973070018,\n",
616 | " 3.543010752688172,\n",
617 | " 3.5420393559928445,\n",
618 | " 3.5464285714285713,\n",
619 | " 3.5472370766488415,\n",
620 | " 3.5427046263345194,\n",
621 | " 3.5381882770870337,\n",
622 | " 3.5390070921985815,\n",
623 | " 3.538053097345133,\n",
624 | " 3.537102473498233,\n",
625 | " 3.5361552028218695,\n",
626 | " 3.5369718309859155,\n",
627 | " 3.5360281195079084,\n",
628 | " 3.533333333333333,\n",
629 | " 3.5288966725043784,\n",
630 | " 3.527972027972028,\n",
631 | " 3.5305410122164047,\n",
632 | " 3.5313588850174216,\n",
633 | " 3.528695652173913,\n",
634 | " 3.5277777777777777,\n",
635 | " 3.5285961871750433,\n",
636 | " 3.5294117647058822,\n",
637 | " 3.5319516407599307,\n",
638 | " 3.532758620689655,\n",
639 | " 3.5352839931153186,\n",
640 | " 3.5395189003436425,\n",
641 | " 3.5385934819897082,\n",
642 | " 3.5428082191780823,\n",
643 | " 3.5418803418803417,\n",
644 | " 3.537542662116041,\n",
645 | " 3.533219761499148,\n",
646 | " 3.5374149659863945,\n",
647 | " 3.538200339558574,\n",
648 | " 3.538983050847458,\n",
649 | " 3.539763113367174,\n",
650 | " 3.54222972972973,\n",
651 | " 3.5430016863406406,\n",
652 | " 3.5454545454545454,\n",
653 | " 3.549579831932773,\n",
654 | " 3.546979865771812,\n",
655 | " 3.5510887772194306,\n",
656 | " 3.5551839464882944,\n",
657 | " 3.5509181969949917,\n",
658 | " 3.5516666666666667,\n",
659 | " 3.5557404326123128,\n",
660 | " 3.558139534883721,\n",
661 | " 3.560530679933665,\n",
662 | " 3.5612582781456954,\n",
663 | " 3.55702479338843,\n",
664 | " 3.561056105610561,\n",
665 | " 3.5617792421746293,\n",
666 | " 3.5641447368421053,\n",
667 | " 3.5632183908045976,\n",
668 | " 3.559016393442623,\n",
669 | " 3.55810147299509,\n",
670 | " 3.5620915032679736,\n",
671 | " 3.564437194127243,\n",
672 | " 3.5618892508143323,\n",
673 | " 3.5577235772357723,\n",
674 | " 3.5551948051948052,\n",
675 | " 3.5559157212317665,\n",
676 | " 3.55663430420712,\n",
677 | " 3.5573505654281097,\n",
678 | " 3.5596774193548386,\n",
679 | " 3.5619967793880836,\n",
680 | " 3.5659163987138265,\n",
681 | " 3.5698234349919744,\n",
682 | " 3.5721153846153846,\n",
683 | " 3.5712,\n",
684 | " 3.570287539936102,\n",
685 | " 3.5661881977671452,\n",
686 | " 3.5684713375796178,\n",
687 | " 3.5691573926868045,\n",
688 | " 3.5650793650793653,\n",
689 | " 3.5641838351822503,\n",
690 | " 3.5617088607594938,\n",
691 | " 3.559241706161137,\n",
692 | " 3.555205047318612,\n",
693 | " 3.5559055118110234,\n",
694 | " 3.559748427672956,\n",
695 | " 3.563579277864992,\n",
696 | " 3.561128526645768,\n",
697 | " 3.5586854460093895,\n",
698 | " 3.5578125,\n",
699 | " 3.561622464898596,\n",
700 | " 3.5638629283489096,\n",
701 | " 3.561430793157076,\n",
702 | " 3.559006211180124,\n",
703 | " 3.5565891472868216,\n",
704 | " 3.5588235294117645,\n",
705 | " 3.5579598145285933,\n",
706 | " 3.560185185185185,\n",
707 | " 3.559322033898305,\n",
708 | " 3.556923076923077,\n",
709 | " 3.557603686635945,\n",
710 | " 3.553680981595092,\n",
711 | " 3.549770290964778,\n",
712 | " 3.5458715596330275,\n",
713 | " 3.549618320610687,\n",
714 | " 3.5533536585365852,\n",
715 | " 3.5509893455098935,\n",
716 | " 3.547112462006079,\n",
717 | " 3.544764795144158,\n",
718 | " 3.543939393939394,\n",
719 | " 3.5416036308623298,\n",
720 | " 3.5453172205438066,\n",
721 | " 3.5414781297134237,\n",
722 | " 3.5451807228915664,\n",
723 | " 3.5488721804511276,\n",
724 | " 3.545045045045045,\n",
725 | " 3.5472263868065967,\n",
726 | " 3.5479041916167664,\n",
727 | " 3.5500747384155455,\n",
728 | " 3.5492537313432835,\n",
729 | " 3.5454545454545454,\n",
730 | " 3.549107142857143,\n",
731 | " 3.552748885586924,\n",
732 | " 3.5519287833827895,\n",
733 | " 3.5555555555555554,\n",
734 | " 3.554733727810651,\n",
735 | " 3.5568685376661744,\n",
736 | " 3.556047197640118,\n",
737 | " 3.555228276877761,\n",
738 | " 3.552941176470588,\n",
739 | " 3.550660792951542,\n",
740 | " 3.5469208211143695,\n",
741 | " 3.5461200585651538,\n",
742 | " 3.5423976608187133,\n",
743 | " 3.5416058394160586,\n",
744 | " 3.545189504373178,\n",
745 | " 3.548762736535662,\n",
746 | " 3.546511627906977,\n",
747 | " 3.5428156748911466,\n",
748 | " 3.5391304347826087,\n",
749 | " 3.536903039073806,\n",
750 | " 3.540462427745665,\n",
751 | " 3.538239538239538,\n",
752 | " 3.5345821325648417,\n",
753 | " 3.5323741007194243,\n",
754 | " 3.528735632183908,\n",
755 | " 3.527977044476327,\n",
756 | " 3.525787965616046,\n",
757 | " 3.5293276108726754,\n",
758 | " 3.527142857142857,\n",
759 | " 3.526390870185449,\n",
760 | " 3.52991452991453,\n",
761 | " 3.532005689900427,\n",
762 | " 3.5355113636363638,\n",
763 | " 3.5361702127659576,\n",
764 | " 3.5339943342776206,\n",
765 | " 3.5346534653465347,\n",
766 | " 3.5338983050847457,\n",
767 | " 3.535966149506347,\n",
768 | " 3.5380281690140847,\n",
769 | " 3.5344585091420533,\n",
770 | " 3.5365168539325844,\n",
771 | " 3.5371669004207575,\n",
772 | " 3.5350140056022408,\n",
773 | " 3.5356643356643356,\n",
774 | " 3.5349162011173183,\n",
775 | " 3.5369595536959553,\n",
776 | " 3.5362116991643453,\n",
777 | " 3.5396383866481225,\n",
778 | " 3.5375,\n",
779 | " 3.5395284327323164,\n",
780 | " 3.538781163434903,\n",
781 | " 3.5352697095435683,\n",
782 | " 3.5345303867403315,\n",
783 | " 3.533793103448276,\n",
784 | " 3.5303030303030303,\n",
785 | " 3.53232462173315,\n",
786 | " 3.5315934065934065,\n",
787 | " 3.5294924554183815,\n",
788 | " 3.526027397260274,\n",
789 | " 3.528043775649795,\n",
790 | " 3.5273224043715845,\n",
791 | " 3.527967257844475,\n",
792 | " 3.524523160762943,\n",
793 | " 3.527891156462585,\n",
794 | " 3.53125,\n",
795 | " 3.5291723202170964,\n",
796 | " 3.532520325203252,\n",
797 | " 3.5358592692828146,\n",
798 | " 3.5364864864864867,\n",
799 | " 3.534412955465587,\n",
800 | " 3.532345013477089,\n",
801 | " 3.528936742934051,\n",
802 | " 3.5309139784946235,\n",
803 | " 3.5342281879194632,\n",
804 | " 3.53485254691689,\n",
805 | " 3.531459170013387,\n",
806 | " 3.5307486631016043,\n",
807 | " 3.534045393858478,\n",
808 | " 3.532,\n",
809 | " 3.5326231691078562,\n",
810 | " 3.5305851063829787,\n",
811 | " 3.5338645418326693,\n",
812 | " 3.5344827586206895,\n",
813 | " 3.537748344370861,\n",
814 | " 3.5343915343915344,\n",
815 | " 3.536327608982827,\n",
816 | " 3.532981530343008,\n",
817 | " 3.5349143610013174,\n",
818 | " 3.536842105263158,\n",
819 | " 3.5348226018396844,\n",
820 | " 3.536745406824147,\n",
821 | " 3.5386631716906947,\n",
822 | " 3.5392670157068062,\n",
823 | " 3.537254901960784,\n",
824 | " 3.5365535248041775,\n",
825 | " 3.533246414602347,\n",
826 | " 3.53125,\n",
827 | " 3.530559167750325,\n",
828 | " 3.5272727272727273,\n",
829 | " 3.529182879377432,\n",
830 | " 3.5297927461139897,\n",
831 | " 3.5278137128072444,\n",
832 | " 3.5297157622739017,\n",
833 | " 3.5316129032258066,\n",
834 | " 3.533505154639175,\n",
835 | " 3.5341055341055343,\n",
836 | " 3.537275064267352,\n",
837 | " 3.5353016688061616,\n",
838 | " 3.533333333333333,\n",
839 | " 3.5339308578745197,\n",
840 | " 3.530690537084399,\n",
841 | " 3.532567049808429,\n",
842 | " 3.5293367346938775,\n",
843 | " 3.5261146496815288,\n",
844 | " 3.5229007633587788,\n",
845 | " 3.526048284625159,\n",
846 | " 3.529187817258883,\n",
847 | " 3.527249683143219,\n",
848 | " 3.526582278481013,\n",
849 | " 3.5259165613147916,\n",
850 | " 3.5277777777777777,\n",
851 | " 3.5245901639344264,\n",
852 | " 3.5214105793450883,\n",
853 | " 3.5245283018867926,\n",
854 | " 3.5263819095477387,\n",
855 | " 3.5294855708908406,\n",
856 | " 3.530075187969925,\n",
857 | " 3.530663329161452,\n",
858 | " 3.53375,\n",
859 | " 3.5343320848938826,\n",
860 | " 3.5374064837905235,\n",
861 | " 3.5342465753424657,\n",
862 | " 3.533582089552239,\n",
863 | " 3.53167701863354,\n",
864 | " 3.531017369727047,\n",
865 | " 3.5340768277571253,\n",
866 | " 3.5346534653465347,\n",
867 | " 3.533992583436341,\n",
868 | " 3.533333333333333,\n",
869 | " 3.531442663378545,\n",
870 | " 3.5344827586206895,\n",
871 | " 3.5350553505535056,\n",
872 | " 3.536855036855037,\n",
873 | " 3.5374233128834356,\n",
874 | " 3.534313725490196,\n",
875 | " 3.5373317013463894,\n",
876 | " 3.5366748166259168,\n",
877 | " 3.537240537240537,\n",
878 | " 3.5390243902439025,\n",
879 | " 3.540803897685749,\n",
880 | " 3.5437956204379564,\n",
881 | " 3.5455650060753343,\n",
882 | " 3.546116504854369,\n",
883 | " 3.5442424242424244,\n",
884 | " 3.5472154963680387,\n",
885 | " 3.5441354292623943,\n",
886 | " 3.5434782608695654,\n",
887 | " 3.5440289505428226,\n",
888 | " 3.544578313253012,\n",
889 | " 3.5415162454873648,\n",
890 | " 3.5420673076923075,\n",
891 | " 3.545018007202881,\n",
892 | " 3.5455635491606716,\n",
893 | " 3.548502994011976,\n",
894 | " 3.547846889952153,\n",
895 | " 3.5448028673835124,\n",
896 | " 3.5417661097852027,\n",
897 | " 3.541120381406436,\n",
898 | " 3.539285714285714,\n",
899 | " 3.539833531510107,\n",
900 | " 3.539192399049881,\n",
901 | " 3.5385527876631078,\n",
902 | " 3.536729857819905,\n",
903 | " 3.5384615384615383,\n",
904 | " 3.5354609929078014,\n",
905 | " 3.538370720188902,\n",
906 | " 3.5412735849056602,\n",
907 | " 3.5382803297997643,\n",
908 | " 3.5352941176470587,\n",
909 | " 3.537015276145711,\n",
910 | " 3.539906103286385,\n",
911 | " 3.5381008206330598,\n",
912 | " 3.5351288056206087,\n",
913 | " 3.5345029239766084,\n",
914 | " 3.532710280373832,\n",
915 | " 3.530921820303384,\n",
916 | " 3.527972027972028,\n",
917 | " 3.5273573923166475,\n",
918 | " 3.530232558139535,\n",
919 | " 3.533101045296167,\n",
920 | " 3.5359628770301623,\n",
921 | " 3.5341830822711473,\n",
922 | " 3.53125,\n",
923 | " 3.531791907514451,\n",
924 | " 3.5288683602771362,\n",
925 | " 3.5305651672433678,\n",
926 | " 3.53110599078341,\n",
927 | " 3.5316455696202533,\n",
928 | " 3.5344827586206895,\n",
929 | " 3.537313432835821,\n",
930 | " 3.5378440366972477,\n",
931 | " 3.5395189003436425,\n",
932 | " 3.540045766590389,\n",
933 | " 3.5428571428571427,\n",
934 | " 3.541095890410959,\n",
935 | " 3.541619156214367,\n",
936 | " 3.5432801822323463,\n",
937 | " 3.546075085324232,\n",
938 | " 3.546590909090909,\n",
939 | " 3.5493757094211125,\n",
940 | " 3.5476190476190474,\n",
941 | " 3.548131370328426,\n",
942 | " 3.5509049773755654,\n",
943 | " 3.5480225988700567,\n",
944 | " 3.55079006772009,\n",
945 | " 3.5512965050732808,\n",
946 | " 3.550675675675676,\n",
947 | " 3.5511811023622046,\n",
948 | " 3.553932584269663,\n",
949 | " 3.5544332210998877,\n",
950 | " 3.5560538116591927,\n",
951 | " 3.558790593505039,\n",
952 | " 3.557046979865772,\n",
953 | " 3.558659217877095,\n",
954 | " 3.5558035714285716,\n",
955 | " 3.5585284280936453,\n",
956 | " 3.560133630289532,\n",
957 | " 3.558398220244716,\n",
958 | " 3.5555555555555554,\n",
959 | " 3.556048834628191,\n",
960 | " 3.5532150776053215,\n",
961 | " 3.5559246954595793,\n",
962 | " 3.5542035398230087,\n",
963 | " 3.5513812154696134,\n",
964 | " 3.5518763796909494,\n",
965 | " 3.5523704520396913,\n",
966 | " 3.555066079295154,\n",
967 | " 3.5544554455445545,\n",
968 | " 3.5538461538461537,\n",
969 | " 3.5554335894621296,\n",
970 | " 3.5526315789473686,\n",
971 | " 3.552026286966046,\n",
972 | " 3.549234135667396,\n",
973 | " 3.546448087431694,\n",
974 | " 3.5447598253275108,\n",
975 | " 3.5419847328244276,\n",
976 | " 3.5403050108932463,\n",
977 | " 3.5386289445048966,\n",
978 | " 3.541304347826087,\n",
979 | " 3.539630836047774,\n",
980 | " 3.5412147505422995,\n",
981 | " 3.5438786565547127,\n",
982 | " 3.5411255411255413,\n",
983 | " 3.5405405405405403,\n",
984 | " 3.5431965442764577,\n",
985 | " 3.5415318230852213,\n",
986 | " 3.5420258620689653,\n",
987 | " 3.5392895586652315,\n",
988 | " 3.5408602150537636,\n",
989 | " 3.5413533834586466,\n",
990 | " 3.541845493562232,\n",
991 | " 3.5412647374062165,\n",
992 | " 3.54389721627409,\n",
993 | " 3.544385026737968,\n",
994 | " 3.5438034188034186,\n",
995 | " 3.5421558164354323,\n",
996 | " 3.544776119402985,\n",
997 | " 3.5463258785942493,\n",
998 | " 3.548936170212766,\n",
999 | " 3.547290116896918,\n",
1000 | " 3.5467091295116773,\n",
1001 | " 3.5440084835630965,\n",
1002 | " 3.545550847457627,\n",
1003 | " 3.5481481481481483,\n",
1004 | " 3.5454545454545454,\n",
1005 | " 3.542766631467793,\n",
1006 | " 3.542194092827004,\n",
1007 | " 3.5405690200210747,\n",
1008 | " 3.5410526315789475,\n",
1009 | " 3.538380651945321,\n",
1010 | " 3.53781512605042,\n",
1011 | " 3.5372507869884573,\n",
1012 | " 3.5345911949685536,\n",
1013 | " 3.531937172774869,\n",
1014 | " 3.530334728033473,\n",
1015 | " 3.529780564263323,\n",
1016 | " 3.5302713987473906,\n",
1017 | " 3.5307612095933263,\n",
1018 | " 3.5322916666666666,\n",
1019 | " 3.5327783558792922,\n",
1020 | " 3.5311850311850312,\n",
1021 | " 3.5285565939771546,\n",
1022 | " 3.5311203319502074,\n",
1023 | " 3.533678756476684,\n",
1024 | " 3.5341614906832297,\n",
1025 | " 3.5367114788004135,\n",
1026 | " 3.534090909090909,\n",
1027 | " 3.5325077399380804,\n",
1028 | " 3.531958762886598,\n",
1029 | " 3.534500514933059,\n",
1030 | " 3.5318930041152266,\n",
1031 | " 3.5313463514902366,\n",
1032 | " 3.528747433264887,\n",
1033 | " 3.5292307692307694,\n",
1034 | " 3.528688524590164,\n",
1035 | " 3.528147389969294,\n",
1036 | " 3.5286298568507157,\n",
1037 | " 3.529111338100102,\n",
1038 | " 3.529591836734694,\n",
1039 | " 3.530071355759429,\n",
1040 | " 3.531568228105906,\n",
1041 | " 3.5289928789420144,\n",
1042 | " 3.5284552845528454,\n",
1043 | " 3.5269035532994923,\n",
1044 | " 3.526369168356998,\n",
1045 | " 3.5238095238095237,\n",
1046 | " 3.526315789473684,\n",
1047 | " 3.524772497472194,\n",
1048 | " 3.5242424242424244,\n",
1049 | " 3.525731584258325,\n",
1050 | " 3.528225806451613,\n",
1051 | " 3.527693856998993,\n",
1052 | " 3.5291750503018107,\n",
1053 | " 3.530653266331658,\n",
1054 | " 3.531124497991968,\n",
1055 | " 3.5285857572718156,\n",
1056 | " 3.5280561122244487,\n",
1057 | " 3.5255255255255253,\n",
1058 | " 3.525,\n",
1059 | " ...]"
1060 | ]
1061 | },
1062 | "execution_count": 4,
1063 | "metadata": {},
1064 | "output_type": "execute_result"
1065 | }
1066 | ],
1067 | "source": [
1068 | "avg_dice =[]\n",
1069 | "\n",
1070 | "n=1\n",
1071 | "\n",
1072 | "while n<=10000:\n",
1073 | " np.random.seed(11)\n",
1074 | " throws=np.random.randint(1,7,size=n)\n",
1075 | " avg_dice.append(sum(throws)/n)\n",
1076 | " n+=1\n",
1077 | " \n",
1078 | "avg_dice"
1079 | ]
1080 | },
1081 | {
1082 | "cell_type": "code",
1083 | "execution_count": 5,
1084 | "metadata": {},
1085 | "outputs": [
1086 | {
1087 | "data": {
1088 | "image/png": "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QV8TJ07Ud77zHW3cuFHbtm3TE088oTPOOMO2D3UGPVwulz73uc/l2yXPPfecPvWpT8kwDNt+1Jnyde655+r+++9XU1OTmpubdcUVVxTtM1r1Y8qUKbr//vv12muvacOGDfrqV78qj8cz/BddoCxDy3ve8x6tWrVK//Zv/6Z3v/vdampq0k9/+lNNmTJlrIuGEXbeeefpwQcf1Hvf+17dcsstcrvd+tnPfqZAIJDf57//9/+uj33sY1q1apWuvvpqHT16VL/4xS8UCoXy+6xatUpXXnmlbr/9dl1//fUKhUJ64IEHZJq9P1Lf+973tGDBAi1fvlzLly/XggULtHr16lG9XgyvxYsX66abbtLWrVtt26kz6KuqqkoPP/ywksmkli9frssuu0z/+q//qs7Ozvw+1Bn09YlPfEI333yzVq1apXe84x36+te/rttuu00f+chH8vtQZ8pbMBjUa6+9VvSFWY/Rqh+maerf//3fFQwGdf311+v222/XVVddpbvuumvkLj6nLJc8/t3vfqfNmzfb3uCnnnpKf/rTn/TNb35zDEuG0VZXV6cNGzboAx/4gJqamiRJL730ku6//3798Ic/lJT9ZuLll1/WN77xDf3yl79UZWWl1q9fr5UrV+rxxx+XJE2YMEF///vf9ZGPfETPPvusTjnlFD311FO69tprtXHjRknSmWeeqd/97ne65JJLtHv37jG5Xpy4YDCoP/zhD7rrrrt0xx13aOvWrbrnnnskUWdgd+edd+rss8/WBz7wgQH3oc6grwceeEDHjh3TF77whfy2H/7wh4pGo1q5cqUk6gx6NTc36+Mf/7j+/Oc/57eNVv14+9vfrgceeEDnn3++jhw5Ikm6+uqr9e1vf1vLli1Td3f3iF132fW0eDweLVq0SM8995xt+7PPPqtly5aNUakwViorKyVJ7e3tkqTp06drwoQJtvqRSCT04osv5uvHokWL5PV69eyzz+b3OXLkiLZv357f56yzzlJHR0f+h16SNmzYoI6ODurZOHXvvffq6aef1tq1a23bqTModPnll+vVV1/Vfffdp3Xr1umJJ57QDTfckH+eOoNCL730ki644ALNnj1bknT66afr7LPP1l/+8hdJ1BkMbjTrx1lnnaXt27fnA4sk/fWvf5Xf79eiRYtG8jLlHtFXd6Da2lq53W4dO3bMtv3YsWNqbGwco1JhrHz5y19WU1OTduzYISn7rYMkHT161LbfsWPHNHXqVElSY2Oj4vG4bahHzz49daixsVEtLS1F52tpaaGejUNXX321zjjjDF1zzTVFz1FnUGj69Om65ZZbtGbNGn3/+9/XkiVLdPfddyuRSOiRRx6hzqDID37wA1VWVurpp59WOp2Wy+XSt771LT322GOS+D2DwY1m/WhsbCxqQ3d2dioej494HSq70NIjk7GPijMMo2gb3truvfdezZ8/X9dff/1x9x1K/Sjcp7/9qWfjz+TJk/WVr3xFt956q+Lx+JCPo86UL9M0tWnTJn3rW9+SJG3ZskWnnXaabr31Vj3yyCMDHkedKV9XX321rrvuOn3qU5/Sjh07tGDBAn3lK1/R4cOH9fDDDw94HHUGgxmp+jFWdajshoe1tbUplUoVpcH6+vqi5Ii3rrvvvluXXXaZbrzxRh06dCi/vae7c7D6cfToUfl8vqLVNAr3aWhoKDpvXV0d9WycWbRokRobG/X4449r165d2rVrl972trfpox/9qHbt2pX/Zos6gx5HjhzRzp07bdtef/31/GIv/J5BoS9+8Yv6wQ9+oN///vfavn27Hn30Ud1///1asWKFJOoMBjea9ePo0aNF56mqqpLX6x3xOlR2oSWZTGrTpk26+OKLbdsvvvhirVu3boxKhdF0zz336J3vfKduvPFG7d271/bc3r17deTIEV100UX5bR6PR+edd16+fmzatEmJRMJWhyZMmKB58+bl91m/fr2qq6u1ZMmS/D5Lly5VdXU19WycWbt2rS6//HJdddVV+f9eeeUV/e53v9NVV12lN998kzoDm3Xr1hUtpT579mzt379fEr9nUCwQCMiyLNu2dDqdX9WJOoPBjGb9WL9+vebNm5cfkiZJ//AP/6BYLKZNmzaN6HWW5fCwNWvWaPXq1Xr11Ve1fv163XjjjZoyZYp+8YtfjHXRMMK+9rWv6ZprrtHHP/5xhcPh/LcFPeMxJen+++/XJz/5Se3Zs0dvvPGGbr/9dsViMf3Hf/yHJKmrq0u/+tWvdNddd6m9vV3t7e360pe+pG3btun555+XlP1W9ZlnntE3vvENffGLX5Qkff3rX9eTTz7J6izjTDgczs956hGJRNTW1pbfTp1BX2vWrNEjjzyiT37yk3r88ce1dOlS3XTTTfqXf/mX/D7UGfT15JNP6vbbb9eBAwe0Y8cOLVy4UB/72Mf061//Or8Pdaa8BYNBzZo1K/94+vTpWrBggdrb23XgwIFRqx/PPvusdu7cqdWrV+t//s//qZqaGn3pS1/SQw89NKIrh0lluuSxlL255G233aYJEyZox44duueee/JL3uKtq7m5ud/tn/3sZ/Xb3/42//jTn/60br75ZlVVVWnjxo368pe/bGu4+nw+ffGLX9S1114rv9+vtWvX6q677tLBgwfz+1RXV+eHoUnZP0qrVq0qmgSH8eehhx6yLXksUWdgd+mll+rOO+/UrFmztG/fPv3kJz/RQw89ZNuHOoMeoVBIn/3sZ3XllVeqoaFBhw8f1mOPPabvfve7SiaT+f2oM+Xr/PPP169+9aui7b/5zW/0uc99TtLo1Y8pU6boa1/7mi644IJ8MPrXf/1XJRKJkbp8SWUcWgAAAACMD2U3pwUAAADA+EJoAQAAAOBohBYAAAAAjkZoAQAAAOBohBYAAAAAjkZoAQAAAOBohBYAAAAAjkZoAQAAAOBohBYAAAAAjkZoAQAAAOBohBYAAAAAjkZoAQAAAOBo/z9LqSYnyWFIOAAAAABJRU5ErkJggg==",
1089 | "text/plain": [
1090 | ""
1091 | ]
1092 | },
1093 | "metadata": {},
1094 | "output_type": "display_data"
1095 | }
1096 | ],
1097 | "source": [
1098 | "fig, ax = plt.subplots(figsize=(10,5), facecolor='#1E1E1E')\n",
1099 | "\n",
1100 | "#Plotting:\n",
1101 | "\n",
1102 | "y = avg_dice[:10_000]\n",
1103 | "\n",
1104 | "ax.plot(y, color='#D81E5B', linewidth=3)\n",
1105 | "\n",
1106 | "ax.hlines(exp, 0, len(y), color='#E8C547')\n",
1107 | "\n",
1108 | "#add text to right upper corner\n",
1109 | "\n",
1110 | "ax.text(len(y)/2*0.6, 5.3, f'No. of experiments: {len(y)}', color='#06A062', fontsize=16, fontweight='bold')\n",
1111 | "ax.text(len(y)/2*0.6, 4.8, f'Mean of means: {round(np.mean(y), 2)}', color='#06A062', fontsize=16, fontweight='bold')\n",
1112 | "\n",
1113 | "if len(y)<=10:\n",
1114 | " ax.text(0, exp+0.2, f'Expected Value: {exp}', color='#E8C547', fontsize=16, fontweight='bold')\n",
1115 | "\n",
1116 | "#Formatting: \n",
1117 | "\n",
1118 | "ax.tick_params(which='both', colors='white')\n",
1119 | "\n",
1120 | "ax.spines[['left', 'bottom']].set_color('white')\n",
1121 | "\n",
1122 | "ax.spines[['right', 'top']].set_visible(False)\n",
1123 | "\n",
1124 | "ax.set_facecolor('#1E1E1E')\n",
1125 | "\n",
1126 | "ax.set_yticks([1,2,3,4,5,6])\n",
1127 | "\n",
1128 | "if len(y)<=10:\n",
1129 | " ax.set_xticks(np.arange(len(y)), np.arange(1, len(y)+1))\n",
1130 | "\n",
1131 | "plt.savefig(f'{len(y)}runs.png', dpi=300,bbox_inches='tight');"
1132 | ]
1133 | },
1134 | {
1135 | "cell_type": "markdown",
1136 | "metadata": {},
1137 | "source": [
1138 | "# Lottery"
1139 | ]
1140 | },
1141 | {
1142 | "cell_type": "code",
1143 | "execution_count": 6,
1144 | "metadata": {},
1145 | "outputs": [
1146 | {
1147 | "name": "stdout",
1148 | "output_type": "stream",
1149 | "text": [
1150 | "The chance to win something is: 26.34%\n"
1151 | ]
1152 | }
1153 | ],
1154 | "source": [
1155 | "chance=1/8.5 + 1/16 + 1/31 + 1/21 + 1/301 + 1/40801 + 1/408001 + 1/2550001\n",
1156 | "\n",
1157 | "print(f'The chance to win something is: {chance:.2%}')"
1158 | ]
1159 | },
1160 | {
1161 | "cell_type": "code",
1162 | "execution_count": 7,
1163 | "metadata": {},
1164 | "outputs": [
1165 | {
1166 | "name": "stdout",
1167 | "output_type": "stream",
1168 | "text": [
1169 | "The Expected payoff is: $75.28958477381234\n"
1170 | ]
1171 | }
1172 | ],
1173 | "source": [
1174 | "expected_payoff = (1/8.5*150 + 1/16*200 + 1/31*300 + 1/21*500 + 1/301*1000 +\n",
1175 | " 1/40801*10000 + 1/408001*100000 + 1/2550001 *20000000)\n",
1176 | "\n",
1177 | "print(f'The Expected payoff is: ${expected_payoff}')"
1178 | ]
1179 | },
1180 | {
1181 | "cell_type": "code",
1182 | "execution_count": 8,
1183 | "metadata": {},
1184 | "outputs": [],
1185 | "source": [
1186 | "np.random.seed(12)\n",
1187 | "\n",
1188 | "num_iterations = 100_000_000\n",
1189 | "\n",
1190 | "# Define the payoff options and their respective probabilities\n",
1191 | "payoff_options = np.array([0, 150, 200, 300, 500, 1000, 10000, 100000, 20000000])\n",
1192 | "probabilities = np.array([1 - chance, 1 / 8.5, 1 / 16, 1 / 31, 1 / 21, 1 / 301, 1 / 40801, 1 / 408001, 1 / 2550001])\n",
1193 | "\n",
1194 | "# Simulate all iterations at once\n",
1195 | "win = np.random.choice(payoff_options, size=(num_iterations,), p=probabilities)\n",
1196 | "\n",
1197 | "# Calculate the average payoff for each iteration\n",
1198 | "avg_payoff = np.cumsum(win) / np.arange(1, num_iterations + 1)"
1199 | ]
1200 | },
1201 | {
1202 | "cell_type": "code",
1203 | "execution_count": 9,
1204 | "metadata": {},
1205 | "outputs": [
1206 | {
1207 | "data": {
1208 | "text/plain": [
1209 | "-53.02096981958061"
1210 | ]
1211 | },
1212 | "execution_count": 9,
1213 | "metadata": {},
1214 | "output_type": "execute_result"
1215 | }
1216 | ],
1217 | "source": [
1218 | "avg_payoff[33333333]"
1219 | ]
1220 | },
1221 | {
1222 | "cell_type": "code",
1223 | "execution_count": null,
1224 | "metadata": {},
1225 | "outputs": [],
1226 | "source": [
1227 | "fig, ax = plt.subplots(figsize=(10,5), facecolor='#1E1E1E')\n",
1228 | "\n",
1229 | "#Plotting:\n",
1230 | "\n",
1231 | "y3 = avg_payoff[:100_000_000]\n",
1232 | "\n",
1233 | "ax.plot(y3, color='#D81E5B', linewidth=3)\n",
1234 | "\n",
1235 | "ax.hlines(expected_payoff, 0, len(y3), color='#E8C547')\n",
1236 | "\n",
1237 | "#add text to right upper corner\n",
1238 | "\n",
1239 | "ax.text(len(y3)/2*0.6, 140, f'No. of experiments: {len(y3)}', color='#06A062', fontsize=16, fontweight='bold')\n",
1240 | "ax.text(len(y3)/2*0.6, 120, f'Mean of means: {round(np.mean(y3), 2)}', color='#06A062', fontsize=16, fontweight='bold')\n",
1241 | "\n",
1242 | "if len(y3)<=10:\n",
1243 | " ax.text(0, expected_payoff+5, f'expected Value: {round(expected_payoff, 2)}', color='#E8C547', fontsize=16, fontweight='bold')\n",
1244 | "\n",
1245 | "#Formatting: \n",
1246 | "\n",
1247 | "ax.tick_params(which='both', colors='white')\n",
1248 | "\n",
1249 | "ax.spines[['left', 'bottom']].set_color('white')\n",
1250 | "\n",
1251 | "ax.spines[['right', 'top']].set_visible(False)\n",
1252 | "\n",
1253 | "ax.set_facecolor('#1E1E1E')\n",
1254 | "\n",
1255 | "#ax.set_yticks([20,40,60,75,80,120])\n",
1256 | "\n",
1257 | "if len(y3)<=10:\n",
1258 | " ax.set_xticks(np.arange(len(y3)), np.arange(1, len(y3)+1))\n",
1259 | "\n",
1260 | "#plt.savefig(f'{len(y3)}runs_lottery.png', dpi=300,bbox_inches='tight');"
1261 | ]
1262 | }
1263 | ],
1264 | "metadata": {
1265 | "kernelspec": {
1266 | "display_name": "dse",
1267 | "language": "python",
1268 | "name": "python3"
1269 | },
1270 | "language_info": {
1271 | "codemirror_mode": {
1272 | "name": "ipython",
1273 | "version": 3
1274 | },
1275 | "file_extension": ".py",
1276 | "mimetype": "text/x-python",
1277 | "name": "python",
1278 | "nbconvert_exporter": "python",
1279 | "pygments_lexer": "ipython3",
1280 | "version": "3.11.3"
1281 | },
1282 | "orig_nbformat": 4
1283 | },
1284 | "nbformat": 4,
1285 | "nbformat_minor": 2
1286 | }
1287 |
--------------------------------------------------------------------------------
/Pandas_style.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 3,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import numpy as np"
11 | ]
12 | },
13 | {
14 | "attachments": {},
15 | "cell_type": "markdown",
16 | "metadata": {},
17 | "source": [
18 | "# Add summary stat below table in 🐼"
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": 4,
24 | "metadata": {},
25 | "outputs": [],
26 | "source": [
27 | "data = np.random.uniform(low=0, high=1000, size=(5, 5))\n",
28 | "df = pd.DataFrame(data, columns=['Column_1', 'Column_2', 'Column_3', 'Column_4', 'Column_5'])"
29 | ]
30 | },
31 | {
32 | "cell_type": "code",
33 | "execution_count": 5,
34 | "metadata": {},
35 | "outputs": [
36 | {
37 | "data": {
38 | "text/html": [
39 | "\n",
61 | "\n",
62 | " \n",
63 | " \n",
64 | " | \n",
65 | " Column_1 | \n",
66 | " Column_2 | \n",
67 | " Column_3 | \n",
68 | " Column_4 | \n",
69 | " Column_5 | \n",
70 | "
\n",
71 | " \n",
72 | " \n",
73 | " \n",
74 | " 0 | \n",
75 | " 416.831806 | \n",
76 | " 816.462010 | \n",
77 | " 880.182713 | \n",
78 | " 706.539404 | \n",
79 | " 764.070450 | \n",
80 | "
\n",
81 | " \n",
82 | " 1 | \n",
83 | " 783.113611 | \n",
84 | " 995.494165 | \n",
85 | " 398.369827 | \n",
86 | " 895.645223 | \n",
87 | " 145.439599 | \n",
88 | "
\n",
89 | " \n",
90 | " 2 | \n",
91 | " 740.515059 | \n",
92 | " 863.160990 | \n",
93 | " 454.434300 | \n",
94 | " 204.735725 | \n",
95 | " 45.832147 | \n",
96 | "
\n",
97 | " \n",
98 | " 3 | \n",
99 | " 161.069277 | \n",
100 | " 966.711237 | \n",
101 | " 501.556533 | \n",
102 | " 325.439854 | \n",
103 | " 317.495292 | \n",
104 | "
\n",
105 | " \n",
106 | " 4 | \n",
107 | " 808.141444 | \n",
108 | " 351.002436 | \n",
109 | " 652.414456 | \n",
110 | " 663.400368 | \n",
111 | " 844.759334 | \n",
112 | "
\n",
113 | " \n",
114 | " \n",
115 | " \n",
116 | " \n",
117 | " \n",
118 | " \n",
119 | " \n",
120 | "
\n",
121 | " \n",
122 | " \n",
123 | " \n",
124 | " \n",
125 | " \n",
126 | " \n",
127 | " \n",
128 | "
\n",
129 | " \n",
130 | "
\n"
131 | ],
132 | "text/plain": [
133 | ""
134 | ]
135 | },
136 | "execution_count": 5,
137 | "metadata": {},
138 | "output_type": "execute_result"
139 | }
140 | ],
141 | "source": [
142 | "summary_stat = (df.agg([\"sum\", \"mean\"])\n",
143 | " .style.relabel_index([\"Sum\", \"Average\"])\n",
144 | " .format(precision=2)\n",
145 | " .background_gradient(axis=1, cmap='Greens')\n",
146 | ")\n",
147 | "\n",
148 | "df.style.concat(summary_stat)"
149 | ]
150 | },
151 | {
152 | "attachments": {},
153 | "cell_type": "markdown",
154 | "metadata": {},
155 | "source": [
156 | "---"
157 | ]
158 | },
159 | {
160 | "cell_type": "code",
161 | "execution_count": 7,
162 | "metadata": {},
163 | "outputs": [],
164 | "source": [
165 | "df = pd.read_csv('house price data.csv')"
166 | ]
167 | },
168 | {
169 | "attachments": {},
170 | "cell_type": "markdown",
171 | "metadata": {},
172 | "source": [
173 | "Dataframe: https://www.kaggle.com/datasets/shree1992/housedata"
174 | ]
175 | },
176 | {
177 | "attachments": {},
178 | "cell_type": "markdown",
179 | "metadata": {},
180 | "source": [
181 | "# Barcharts in columns 🐼"
182 | ]
183 | },
184 | {
185 | "cell_type": "code",
186 | "execution_count": 93,
187 | "metadata": {},
188 | "outputs": [
189 | {
190 | "data": {
191 | "text/html": [
192 | "\n",
294 | "\n",
295 | " \n",
296 | " \n",
297 | " | \n",
298 | " price | \n",
299 | " bedrooms | \n",
300 | " bathrooms | \n",
301 | " sqft_living | \n",
302 | " sqft_lot | \n",
303 | " floors | \n",
304 | "
\n",
305 | " \n",
306 | " \n",
307 | " \n",
308 | " 1326 | \n",
309 | " 326,100.00 | \n",
310 | " 2.000000 | \n",
311 | " 1.000000 | \n",
312 | " 880 | \n",
313 | " 7683 | \n",
314 | " 1.000000 | \n",
315 | "
\n",
316 | " \n",
317 | " 1094 | \n",
318 | " 668,750.00 | \n",
319 | " 4.000000 | \n",
320 | " 2.500000 | \n",
321 | " 2340 | \n",
322 | " 6420 | \n",
323 | " 1.000000 | \n",
324 | "
\n",
325 | " \n",
326 | " 3595 | \n",
327 | " 504,200.00 | \n",
328 | " 2.000000 | \n",
329 | " 1.500000 | \n",
330 | " 1200 | \n",
331 | " 1687 | \n",
332 | " 3.000000 | \n",
333 | "
\n",
334 | " \n",
335 | " 2093 | \n",
336 | " 1,635,000.00 | \n",
337 | " 5.000000 | \n",
338 | " 3.500000 | \n",
339 | " 4220 | \n",
340 | " 26784 | \n",
341 | " 1.000000 | \n",
342 | "
\n",
343 | " \n",
344 | " 272 | \n",
345 | " 900,000.00 | \n",
346 | " 5.000000 | \n",
347 | " 3.750000 | \n",
348 | " 4130 | \n",
349 | " 226076 | \n",
350 | " 2.000000 | \n",
351 | "
\n",
352 | " \n",
353 | " 3664 | \n",
354 | " 875,000.00 | \n",
355 | " 4.000000 | \n",
356 | " 1.500000 | \n",
357 | " 1800 | \n",
358 | " 3245 | \n",
359 | " 1.500000 | \n",
360 | "
\n",
361 | " \n",
362 | " 2702 | \n",
363 | " 554,000.00 | \n",
364 | " 4.000000 | \n",
365 | " 1.000000 | \n",
366 | " 1120 | \n",
367 | " 7104 | \n",
368 | " 1.500000 | \n",
369 | "
\n",
370 | " \n",
371 | " 3624 | \n",
372 | " 265,000.00 | \n",
373 | " 3.000000 | \n",
374 | " 1.000000 | \n",
375 | " 1800 | \n",
376 | " 7650 | \n",
377 | " 1.000000 | \n",
378 | "
\n",
379 | " \n",
380 | " 431 | \n",
381 | " 290,000.00 | \n",
382 | " 4.000000 | \n",
383 | " 2.500000 | \n",
384 | " 2000 | \n",
385 | " 13300 | \n",
386 | " 1.000000 | \n",
387 | "
\n",
388 | " \n",
389 | "
\n"
390 | ],
391 | "text/plain": [
392 | ""
393 | ]
394 | },
395 | "execution_count": 93,
396 | "metadata": {},
397 | "output_type": "execute_result"
398 | }
399 | ],
400 | "source": [
401 | "(df.sample(9).iloc[:, 1:7].style\n",
402 | " .bar(subset=[\"price\"], color='darkgreen')\n",
403 | " .bar(subset=[\"sqft_living\"], color='darkblue')\n",
404 | " .bar(subset=[\"sqft_lot\"], color='darkred')\n",
405 | " .format({'price': '{:,.2f}'})\n",
406 | " \n",
407 | ")"
408 | ]
409 | },
410 | {
411 | "cell_type": "code",
412 | "execution_count": null,
413 | "metadata": {},
414 | "outputs": [],
415 | "source": []
416 | }
417 | ],
418 | "metadata": {
419 | "kernelspec": {
420 | "display_name": "dse",
421 | "language": "python",
422 | "name": "python3"
423 | },
424 | "language_info": {
425 | "codemirror_mode": {
426 | "name": "ipython",
427 | "version": 3
428 | },
429 | "file_extension": ".py",
430 | "mimetype": "text/x-python",
431 | "name": "python",
432 | "nbconvert_exporter": "python",
433 | "pygments_lexer": "ipython3",
434 | "version": "3.11.3"
435 | },
436 | "orig_nbformat": 4
437 | },
438 | "nbformat": 4,
439 | "nbformat_minor": 2
440 | }
441 |
--------------------------------------------------------------------------------
/boxplot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/boxplot.png
--------------------------------------------------------------------------------
/dicerolls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/dicerolls.png
--------------------------------------------------------------------------------
/joypy-tutorial.ipynb:
--------------------------------------------------------------------------------
1 | {"cells":[{"attachments":{},"cell_type":"markdown","metadata":{},"source":["1. Install Joypy & import libraries"]},{"cell_type":"code","execution_count":null,"metadata":{"execution":{"iopub.execute_input":"2023-02-03T10:28:50.813310Z","iopub.status.busy":"2023-02-03T10:28:50.812723Z","iopub.status.idle":"2023-02-03T10:29:01.851103Z","shell.execute_reply":"2023-02-03T10:29:01.849489Z","shell.execute_reply.started":"2023-02-03T10:28:50.813275Z"},"trusted":true},"outputs":[],"source":["pip install joypy"]},{"cell_type":"code","execution_count":78,"metadata":{"execution":{"iopub.execute_input":"2023-02-03T10:34:47.772416Z","iopub.status.busy":"2023-02-03T10:34:47.772021Z","iopub.status.idle":"2023-02-03T10:34:47.777878Z","shell.execute_reply":"2023-02-03T10:34:47.776818Z","shell.execute_reply.started":"2023-02-03T10:34:47.772386Z"},"trusted":true},"outputs":[],"source":["import numpy as np\n","import pandas as pd\n","import joypy\n","import matplotlib.pyplot as plt\n","from matplotlib import cm\n","import datetime as dt"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["2. Modify data "]},{"cell_type":"code","execution_count":68,"metadata":{"execution":{"iopub.execute_input":"2023-02-03T10:31:36.723959Z","iopub.status.busy":"2023-02-03T10:31:36.723345Z","iopub.status.idle":"2023-02-03T10:31:36.751619Z","shell.execute_reply":"2023-02-03T10:31:36.750360Z","shell.execute_reply.started":"2023-02-03T10:31:36.723925Z"},"trusted":true},"outputs":[],"source":["df = pd.read_csv('/kaggle/input/szeged-weather/weatherHistory.csv')\n","df['Formatted Date'] = df['Formatted Date'].str[:10]\n","df['Formatted Date'] = pd.to_datetime(df['Formatted Date'], format=\"%Y-%m-%d\")\n","year = df['Formatted Date'].dt.year"]},{"attachments":{},"cell_type":"markdown","metadata":{},"source":["3. Plot 📈"]},{"cell_type":"code","execution_count":100,"metadata":{"execution":{"iopub.execute_input":"2023-02-03T10:46:31.770370Z","iopub.status.busy":"2023-02-03T10:46:31.769919Z","iopub.status.idle":"2023-02-03T10:46:34.538554Z","shell.execute_reply":"2023-02-03T10:46:34.537149Z","shell.execute_reply.started":"2023-02-03T10:46:31.770333Z"},"trusted":true},"outputs":[{"data":{"image/png":"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","text/plain":[""]},"metadata":{"needs_background":"light"},"output_type":"display_data"}],"source":["fig, ax = joypy.joyplot(df, by=year, column=\"Temperature (C)\", overlap=0.8, \n"," title=\"Weather in Szeged 2006-2016\")"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.7.12"}},"nbformat":4,"nbformat_minor":4}
2 |
--------------------------------------------------------------------------------
/stat basics.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import matplotlib.pyplot as plt\n",
11 | "import numpy as np"
12 | ]
13 | },
14 | {
15 | "cell_type": "code",
16 | "execution_count": 74,
17 | "metadata": {},
18 | "outputs": [],
19 | "source": [
20 | "# Create a list called y with 15 random integers between 0 and 100\n",
21 | "\n",
22 | "x = np.random.randint(0, 100, 13)\n",
23 | "\n",
24 | "# Create a list called x with 15 zeros\n",
25 | "\n",
26 | "y = np.zeros(15)"
27 | ]
28 | },
29 | {
30 | "cell_type": "code",
31 | "execution_count": 75,
32 | "metadata": {},
33 | "outputs": [
34 | {
35 | "data": {
36 | "text/plain": [
37 | "array([24, 63, 64, 83, 10, 26, 14, 72, 38, 33, 62, 58, 38])"
38 | ]
39 | },
40 | "execution_count": 75,
41 | "metadata": {},
42 | "output_type": "execute_result"
43 | }
44 | ],
45 | "source": [
46 | "x"
47 | ]
48 | },
49 | {
50 | "cell_type": "code",
51 | "execution_count": 77,
52 | "metadata": {},
53 | "outputs": [
54 | {
55 | "data": {
56 | "text/plain": [
57 | "array([24, 63, 64, 83, 10, 26, 14, 72, 38, 33, 62, 58, 38, 44, 44])"
58 | ]
59 | },
60 | "execution_count": 77,
61 | "metadata": {},
62 | "output_type": "execute_result"
63 | }
64 | ],
65 | "source": [
66 | "x= np.append(x, 44)\n",
67 | "\n",
68 | "x"
69 | ]
70 | },
71 | {
72 | "cell_type": "code",
73 | "execution_count": 111,
74 | "metadata": {},
75 | "outputs": [
76 | {
77 | "data": {
78 | "image/png": "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",
79 | "text/plain": [
80 | ""
81 | ]
82 | },
83 | "metadata": {},
84 | "output_type": "display_data"
85 | }
86 | ],
87 | "source": [
88 | "# plot x and y on scatter plot\n",
89 | "\n",
90 | "fig, ax=plt.subplots(figsize=(5,2.2))\n",
91 | "\n",
92 | "plt.scatter(x, y, s=500, linewidth=2, color='#FFEC99', edgecolors='#F08C00')\n",
93 | "\n",
94 | "\n",
95 | "\n",
96 | "plt.gca().get_yaxis().set_visible(False)\n",
97 | "\n",
98 | "plt.gca().spines[['right', 'top', 'left']].set_visible(False)\n",
99 | "\n",
100 | "# x axis should be 0 20 40 60 80\n",
101 | "\n",
102 | "plt.xticks([20, 40, 60, 80], [20, 40, 60, 80])\n",
103 | "\n",
104 | "# plot vertical line with mean\n",
105 | "\n",
106 | "plt.vlines(np.mean(x),ymin=-0.04, ymax=0.04, color='red', linestyle='--')\n",
107 | "\n",
108 | "\n",
109 | "plt.gca().spines['bottom'].set_position(('data', -0.01))\n",
110 | "\n"
111 | ]
112 | },
113 | {
114 | "cell_type": "code",
115 | "execution_count": null,
116 | "metadata": {},
117 | "outputs": [],
118 | "source": []
119 | },
120 | {
121 | "cell_type": "code",
122 | "execution_count": null,
123 | "metadata": {},
124 | "outputs": [],
125 | "source": []
126 | },
127 | {
128 | "cell_type": "code",
129 | "execution_count": null,
130 | "metadata": {},
131 | "outputs": [],
132 | "source": []
133 | },
134 | {
135 | "cell_type": "code",
136 | "execution_count": null,
137 | "metadata": {},
138 | "outputs": [],
139 | "source": []
140 | }
141 | ],
142 | "metadata": {
143 | "kernelspec": {
144 | "display_name": "dse",
145 | "language": "python",
146 | "name": "python3"
147 | },
148 | "language_info": {
149 | "codemirror_mode": {
150 | "name": "ipython",
151 | "version": 3
152 | },
153 | "file_extension": ".py",
154 | "mimetype": "text/x-python",
155 | "name": "python",
156 | "nbconvert_exporter": "python",
157 | "pygments_lexer": "ipython3",
158 | "version": "3.11.3"
159 | },
160 | "orig_nbformat": 4
161 | },
162 | "nbformat": 4,
163 | "nbformat_minor": 2
164 | }
165 |
--------------------------------------------------------------------------------
/stripplot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/stripplot.png
--------------------------------------------------------------------------------
/swarmplot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/swarmplot.png
--------------------------------------------------------------------------------
/violinplot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/levikul09/Tutorials/8954bb7806c4463c354be407a21e44328a9c18c7/violinplot.png
--------------------------------------------------------------------------------