├── jugwater.py
├── waterjug.py
└── md_lateef.ipynb
/jugwater.py:
--------------------------------------------------------------------------------
1 | import math
2 | from collections import deque
3 | a = int(input("Enter Jug A Capacity:"))
4 | b = int(input("Enter Jug B Capacity:"))
5 | ai = int(input("Initially Water in Jug A: "))
6 | bi = int(input("Initially Water in Jug B: "))
7 | af = int(input("Final State of Jug A: "))
8 | bf = int(input("Final State of Jug B: "))
9 | if a <= 0 or b <=0:
10 | print("Jug capacities must be positive.")
11 | exit(1)
12 | if ai < 0 or bi < 0 or af < 0 or bf < 0:
13 | print("Negative values are not allowed.")
14 | exit()
15 | if ai==af and bi==bf:
16 | print(f"initial state is already the final state: juga{ai} and jugb={bi}")
17 | exit()
18 | def bfs_wjug(a, b, ai, bi, af, bf):
19 | visited = set()
20 | queue = deque([(ai, bi,[])])
21 |
22 | while queue:
23 | curr_ai, curr_bi, operations = queue.popleft()
24 |
25 | if(curr_ai,curr_bi) in visited:
26 | continue
27 | visited.add((curr_ai, curr_bi))
28 |
29 | if curr_ai == af and curr_bi ==bf:
30 | for i,op in enumerate(operations):
31 | print(f"Step {i + 1}: {op}")
32 | print(f"Final State Reached Jug A = {curr_ai},Jug B = {curr_bi}")
33 | return
34 | possible_operations = [
35 | (a,curr_bi,"Fill Jug A"),
36 | (curr_ai,b,"Fill Jug B"),
37 | (0, curr_bi,"Empty Jug A"),
38 | (curr_ai, 0, "Empry Jug B"),
39 | (curr_ai - min(curr_ai, b - curr_bi),curr_bi + min(curr_ai, b - curr_bi), "Pour from A to B"),
40 | (curr_ai + min(curr_bi, a - curr_ai), curr_bi -min(curr_bi, a - curr_ai), "Pour from B to A"),
41 | ]
42 |
43 | for next_ai, next_bi, op in possible_operatons:
44 | if(next_ai, next_bi) not in visited:
45 | queue.append((next_ai, next_bi, operations + [op]))
46 |
47 | print("No solution found.")
48 | return
49 |
50 | gcd = math.gcd(a,b)
51 |
52 | if (af <=a and bf <=b) and (af % gcd == bf % gcd ==0):
53 | bfs_wjug(a, b, ai, bi, af, bf)
54 | else:
55 | print("the final state is not achievable with the given capacites.")
56 | exit()
57 |
--------------------------------------------------------------------------------
/waterjug.py:
--------------------------------------------------------------------------------
1 | import math
2 |
3 |
4 | a = int(input("Enter Jug A Capacity: "))
5 | b = int(input("Enter Jug B Capacity: "))
6 | ai = int(input("Initially Water in Jug A: "))
7 | bi = int(input("Initially Water in Jug B: "))
8 | af = int(input("Final State of Jug A: "))
9 | bf = int(input("Final State of Jug B: "))
10 |
11 |
12 | if a <= 0 or b <= 0:
13 | print("Jug capacities must be positive.")
14 | exit(1)
15 | if ai < 0 or bi < 0 or af < 0 or bf < 0:
16 | print("Negative values are not allowed.")
17 | exit(1)
18 |
19 |
20 | def wjug(a, b, ai, bi, af, bf):
21 | print("List Of Operations You Can Do:\n")
22 | print("1. Fill Jug A Completely")
23 | print("2. Fill Jug B Completely")
24 | print("3. Empty Jug A Completely")
25 | print("4. Empty Jug B Completely")
26 | print("5. Pour From Jug A till Jug B is full or A becomes empty")
27 | print("6. Pour From Jug B till Jug A is full or B becomes empty")
28 | print("7. Pour all from Jug B to Jug A")
29 | print("8. Pour all from Jug A to Jug B")
30 |
31 |
32 | while ai != af or bi != bf:
33 | op = int(input("Enter the Operation (1-8): "))
34 |
35 | if op == 1:
36 | ai = a
37 | elif op == 2:
38 | bi = b
39 | elif op == 3:
40 | ai = 0
41 | elif op == 4:
42 | bi = 0
43 | elif op == 5:
44 | pour_amount = min(ai, b - bi)
45 | ai -= pour_amount
46 | bi += pour_amount
47 | elif op == 6:
48 | pour_amount = min(bi, a - ai)
49 | bi -= pour_amount
50 | ai += pour_amount
51 | elif op == 7:
52 | pour_amount = min(bi, a - ai)
53 | ai += pour_amount
54 | bi -= pour_amount
55 | elif op == 8:
56 | pour_amount = min(ai, b - bi)
57 | bi += pour_amount
58 | ai -= pour_amount
59 | else:
60 | print("Invalid operation. Please choose a number between 1 and 8.")
61 | continue
62 |
63 | print(f"Jug A: {ai}, Jug B: {bi}")
64 |
65 | if ai == af and bi == bf:
66 | print("Final State Reached: Jug A =", ai, ", Jug B =", bi)
67 | return
68 |
69 |
70 |
71 | print("Final State Reached: Jug A =", ai, ", Jug B =", bi)
72 |
73 |
74 | gcd = math.gcd(a, b)
75 |
76 | if (af <= a and bf <= b) and (af % gcd == bf % gcd == 0):
77 | wjug(a, b, ai, bi, af, bf)
78 | else:
79 | print("The final state is not achievable with the given capacities.")
80 | exit(1)
81 |
--------------------------------------------------------------------------------
/md_lateef.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 1,
6 | "id": "b64296ff",
7 | "metadata": {},
8 | "outputs": [],
9 | "source": [
10 | "import numpy as np"
11 | ]
12 | },
13 | {
14 | "cell_type": "code",
15 | "execution_count": 2,
16 | "id": "c2b5bcae",
17 | "metadata": {},
18 | "outputs": [
19 | {
20 | "name": "stdout",
21 | "output_type": "stream",
22 | "text": [
23 | "Defaulting to user installation because normal site-packages is not writeable\n",
24 | "Requirement already satisfied: numpy in c:\\programdata\\anaconda3\\lib\\site-packages (1.24.3)\n",
25 | "Note: you may need to restart the kernel to use updated packages.\n"
26 | ]
27 | },
28 | {
29 | "name": "stderr",
30 | "output_type": "stream",
31 | "text": [
32 | "\n",
33 | "[notice] A new release of pip is available: 23.3.1 -> 24.3.1\n",
34 | "[notice] To update, run: python.exe -m pip install --upgrade pip\n"
35 | ]
36 | }
37 | ],
38 | "source": [
39 | "pip install numpy "
40 | ]
41 | },
42 | {
43 | "cell_type": "code",
44 | "execution_count": 4,
45 | "id": "e70d6410",
46 | "metadata": {},
47 | "outputs": [
48 | {
49 | "data": {
50 | "text/plain": [
51 | "'1.24.3'"
52 | ]
53 | },
54 | "execution_count": 4,
55 | "metadata": {},
56 | "output_type": "execute_result"
57 | }
58 | ],
59 | "source": [
60 | "np.__version__"
61 | ]
62 | },
63 | {
64 | "cell_type": "code",
65 | "execution_count": 14,
66 | "id": "c730909c",
67 | "metadata": {},
68 | "outputs": [
69 | {
70 | "data": {
71 | "text/plain": [
72 | "array([1, 2, 3])"
73 | ]
74 | },
75 | "execution_count": 14,
76 | "metadata": {},
77 | "output_type": "execute_result"
78 | }
79 | ],
80 | "source": [
81 | "array1=np.array([1,2,3])\n",
82 | "array1"
83 | ]
84 | },
85 | {
86 | "cell_type": "code",
87 | "execution_count": 18,
88 | "id": "c23d099c",
89 | "metadata": {},
90 | "outputs": [
91 | {
92 | "data": {
93 | "text/plain": [
94 | "numpy.ndarray"
95 | ]
96 | },
97 | "execution_count": 18,
98 | "metadata": {},
99 | "output_type": "execute_result"
100 | }
101 | ],
102 | "source": [
103 | "type(array1)"
104 | ]
105 | },
106 | {
107 | "cell_type": "code",
108 | "execution_count": 22,
109 | "id": "6468481c",
110 | "metadata": {},
111 | "outputs": [
112 | {
113 | "data": {
114 | "text/plain": [
115 | "array([[1, 2],\n",
116 | " [3, 4]])"
117 | ]
118 | },
119 | "execution_count": 22,
120 | "metadata": {},
121 | "output_type": "execute_result"
122 | }
123 | ],
124 | "source": [
125 | "array2=np.array([[1,2],[3,4]])\n",
126 | "array2"
127 | ]
128 | },
129 | {
130 | "cell_type": "code",
131 | "execution_count": 21,
132 | "id": "edc97436",
133 | "metadata": {},
134 | "outputs": [
135 | {
136 | "data": {
137 | "text/plain": [
138 | "array([[1. , 2. , 3.3],\n",
139 | " [4. , 5. , 6.4]])"
140 | ]
141 | },
142 | "execution_count": 21,
143 | "metadata": {},
144 | "output_type": "execute_result"
145 | }
146 | ],
147 | "source": [
148 | "arr2=np.array([ \n",
149 | " [1,2,3.3],\n",
150 | " [4,5,6.4]\n",
151 | "])\n",
152 | "arr2"
153 | ]
154 | },
155 | {
156 | "cell_type": "code",
157 | "execution_count": 27,
158 | "id": "53c222cf",
159 | "metadata": {},
160 | "outputs": [
161 | {
162 | "data": {
163 | "text/plain": [
164 | "array([[[1, 2],\n",
165 | " [3, 4]],\n",
166 | "\n",
167 | " [[5, 6],\n",
168 | " [7, 8]]])"
169 | ]
170 | },
171 | "execution_count": 27,
172 | "metadata": {},
173 | "output_type": "execute_result"
174 | }
175 | ],
176 | "source": [
177 | "arr=np.array([\n",
178 | " [\n",
179 | " [1,2],\n",
180 | " [3,4]\n",
181 | " ],\n",
182 | " [\n",
183 | " [5,6],\n",
184 | " [7,8]\n",
185 | " ]\n",
186 | "])\n",
187 | "arr"
188 | ]
189 | },
190 | {
191 | "cell_type": "code",
192 | "execution_count": 19,
193 | "id": "f2fa6d7c",
194 | "metadata": {},
195 | "outputs": [
196 | {
197 | "ename": "NameError",
198 | "evalue": "name 'np' is not defined",
199 | "output_type": "error",
200 | "traceback": [
201 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
202 | "\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
203 | "Cell \u001b[1;32mIn[19], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m array3\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39marray([\n\u001b[0;32m 2\u001b[0m [\n\u001b[0;32m 3\u001b[0m [\u001b[38;5;241m1\u001b[39m,\u001b[38;5;241m2\u001b[39m,\u001b[38;5;241m3\u001b[39m],\n\u001b[0;32m 4\u001b[0m [\u001b[38;5;241m4\u001b[39m,\u001b[38;5;241m5\u001b[39m,\u001b[38;5;241m6\u001b[39m],\n\u001b[0;32m 5\u001b[0m [\u001b[38;5;241m7\u001b[39m,\u001b[38;5;241m8\u001b[39m,\u001b[38;5;241m9\u001b[39m]\n\u001b[0;32m 6\u001b[0m ],\n\u001b[0;32m 7\u001b[0m [\n\u001b[0;32m 8\u001b[0m [\u001b[38;5;241m7\u001b[39m,\u001b[38;5;241m21\u001b[39m,\u001b[38;5;241m10\u001b[39m],\n\u001b[0;32m 9\u001b[0m [\u001b[38;5;241m20\u001b[39m,\u001b[38;5;241m45\u001b[39m,\u001b[38;5;241m11\u001b[39m],\n\u001b[0;32m 10\u001b[0m [\u001b[38;5;241m47\u001b[39m,\u001b[38;5;241m91\u001b[39m,\u001b[38;5;241m51\u001b[39m]\n\u001b[0;32m 11\u001b[0m ]\n\u001b[0;32m 12\u001b[0m \n\u001b[0;32m 13\u001b[0m ])\n\u001b[0;32m 14\u001b[0m array3\n",
204 | "\u001b[1;31mNameError\u001b[0m: name 'np' is not defined"
205 | ]
206 | }
207 | ],
208 | "source": [
209 | "array3=np.array([\n",
210 | " [\n",
211 | " [1,2,3],\n",
212 | " [4,5,6],\n",
213 | " [7,8,9]\n",
214 | " ],\n",
215 | " [\n",
216 | " [7,21,10],\n",
217 | " [20,45,11],\n",
218 | " [47,91,51]\n",
219 | " ]\n",
220 | "\n",
221 | "])\n",
222 | "array3"
223 | ]
224 | },
225 | {
226 | "cell_type": "code",
227 | "execution_count": null,
228 | "id": "ba61af3e",
229 | "metadata": {},
230 | "outputs": [],
231 | "source": [
232 | "arr=np.array((12,13,14))\n",
233 | "array"
234 | ]
235 | },
236 | {
237 | "cell_type": "code",
238 | "execution_count": 30,
239 | "id": "4a6f7675",
240 | "metadata": {},
241 | "outputs": [
242 | {
243 | "name": "stdout",
244 | "output_type": "stream",
245 | "text": [
246 | "3\n"
247 | ]
248 | },
249 | {
250 | "data": {
251 | "text/plain": [
252 | "3"
253 | ]
254 | },
255 | "execution_count": 30,
256 | "metadata": {},
257 | "output_type": "execute_result"
258 | }
259 | ],
260 | "source": [
261 | "print(array3.ndim)\n",
262 | "3"
263 | ]
264 | },
265 | {
266 | "cell_type": "code",
267 | "execution_count": 31,
268 | "id": "f004d379",
269 | "metadata": {},
270 | "outputs": [
271 | {
272 | "data": {
273 | "text/plain": [
274 | "array([[[[1, 2, 3, 5]]]])"
275 | ]
276 | },
277 | "execution_count": 31,
278 | "metadata": {},
279 | "output_type": "execute_result"
280 | }
281 | ],
282 | "source": [
283 | "array5=np.array([1,2,3,5],ndmin=4)\n",
284 | "array5"
285 | ]
286 | },
287 | {
288 | "cell_type": "code",
289 | "execution_count": 33,
290 | "id": "015b69b0",
291 | "metadata": {},
292 | "outputs": [
293 | {
294 | "data": {
295 | "text/plain": [
296 | "(3,)"
297 | ]
298 | },
299 | "execution_count": 33,
300 | "metadata": {},
301 | "output_type": "execute_result"
302 | }
303 | ],
304 | "source": [
305 | "array1.shape"
306 | ]
307 | },
308 | {
309 | "cell_type": "code",
310 | "execution_count": 35,
311 | "id": "34e01ca5",
312 | "metadata": {},
313 | "outputs": [
314 | {
315 | "data": {
316 | "text/plain": [
317 | "(2, 3)"
318 | ]
319 | },
320 | "execution_count": 35,
321 | "metadata": {},
322 | "output_type": "execute_result"
323 | }
324 | ],
325 | "source": [
326 | "arr2.shape"
327 | ]
328 | },
329 | {
330 | "cell_type": "code",
331 | "execution_count": 39,
332 | "id": "720e18c6",
333 | "metadata": {},
334 | "outputs": [
335 | {
336 | "data": {
337 | "text/plain": [
338 | "(2, 3, 3)"
339 | ]
340 | },
341 | "execution_count": 39,
342 | "metadata": {},
343 | "output_type": "execute_result"
344 | }
345 | ],
346 | "source": [
347 | "array3.shape"
348 | ]
349 | },
350 | {
351 | "cell_type": "code",
352 | "execution_count": 40,
353 | "id": "219ed834",
354 | "metadata": {},
355 | "outputs": [
356 | {
357 | "data": {
358 | "text/plain": [
359 | "(1, 1, 1, 4)"
360 | ]
361 | },
362 | "execution_count": 40,
363 | "metadata": {},
364 | "output_type": "execute_result"
365 | }
366 | ],
367 | "source": [
368 | "array5.shape"
369 | ]
370 | },
371 | {
372 | "cell_type": "code",
373 | "execution_count": 45,
374 | "id": "d43b496e",
375 | "metadata": {},
376 | "outputs": [
377 | {
378 | "name": "stdout",
379 | "output_type": "stream",
380 | "text": [
381 | "1.0\n",
382 | "2.0\n",
383 | "3.3\n",
384 | "4.0\n",
385 | "5.0\n",
386 | "6.4\n"
387 | ]
388 | }
389 | ],
390 | "source": [
391 | "for x in range(0, 2):\n",
392 | " for y in range(0, 3):\n",
393 | " print(arr2[x][y])"
394 | ]
395 | },
396 | {
397 | "cell_type": "code",
398 | "execution_count": 46,
399 | "id": "a9ebe058",
400 | "metadata": {},
401 | "outputs": [
402 | {
403 | "data": {
404 | "text/plain": [
405 | "dtype('int32')"
406 | ]
407 | },
408 | "execution_count": 46,
409 | "metadata": {},
410 | "output_type": "execute_result"
411 | }
412 | ],
413 | "source": [
414 | "array1.dtype"
415 | ]
416 | },
417 | {
418 | "cell_type": "code",
419 | "execution_count": 47,
420 | "id": "9a6dfde9",
421 | "metadata": {},
422 | "outputs": [
423 | {
424 | "data": {
425 | "text/plain": [
426 | "dtype('float64')"
427 | ]
428 | },
429 | "execution_count": 47,
430 | "metadata": {},
431 | "output_type": "execute_result"
432 | }
433 | ],
434 | "source": [
435 | "arr2.dtype"
436 | ]
437 | },
438 | {
439 | "cell_type": "code",
440 | "execution_count": 49,
441 | "id": "eb078713",
442 | "metadata": {},
443 | "outputs": [
444 | {
445 | "data": {
446 | "text/plain": [
447 | "dtype('int32')"
448 | ]
449 | },
450 | "execution_count": 49,
451 | "metadata": {},
452 | "output_type": "execute_result"
453 | }
454 | ],
455 | "source": [
456 | "array3.dtype"
457 | ]
458 | },
459 | {
460 | "cell_type": "code",
461 | "execution_count": 55,
462 | "id": "4591808d",
463 | "metadata": {},
464 | "outputs": [
465 | {
466 | "data": {
467 | "text/plain": [
468 | "dtype('S1')"
469 | ]
470 | },
471 | "execution_count": 55,
472 | "metadata": {},
473 | "output_type": "execute_result"
474 | }
475 | ],
476 | "source": [
477 | "array5.dtype"
478 | ]
479 | },
480 | {
481 | "cell_type": "code",
482 | "execution_count": 54,
483 | "id": "d3a0bd0e",
484 | "metadata": {},
485 | "outputs": [
486 | {
487 | "data": {
488 | "text/plain": [
489 | "array([b'1', b'2', b'3', b'4', b'5'], dtype='|S1')"
490 | ]
491 | },
492 | "execution_count": 54,
493 | "metadata": {},
494 | "output_type": "execute_result"
495 | }
496 | ],
497 | "source": [
498 | "array5=np.array([1,2,3,4,5],dtype='S')\n",
499 | "array5"
500 | ]
501 | },
502 | {
503 | "cell_type": "code",
504 | "execution_count": 56,
505 | "id": "a344d27f",
506 | "metadata": {},
507 | "outputs": [
508 | {
509 | "data": {
510 | "text/plain": [
511 | "array([[1, 2, 3],\n",
512 | " [4, 5, 6]], dtype=int32)"
513 | ]
514 | },
515 | "execution_count": 56,
516 | "metadata": {},
517 | "output_type": "execute_result"
518 | }
519 | ],
520 | "source": [
521 | "arr2conv=arr2.astype('i')\n",
522 | "arr2conv"
523 | ]
524 | },
525 | {
526 | "cell_type": "code",
527 | "execution_count": 57,
528 | "id": "3c9ae405",
529 | "metadata": {},
530 | "outputs": [
531 | {
532 | "data": {
533 | "text/plain": [
534 | "array([[1., 2., 3.],\n",
535 | " [4., 5., 6.]], dtype=float32)"
536 | ]
537 | },
538 | "execution_count": 57,
539 | "metadata": {},
540 | "output_type": "execute_result"
541 | }
542 | ],
543 | "source": [
544 | "arr2float=arr2conv.astype('f')\n",
545 | "arr2float"
546 | ]
547 | },
548 | {
549 | "cell_type": "code",
550 | "execution_count": 58,
551 | "id": "5aa558b6",
552 | "metadata": {},
553 | "outputs": [
554 | {
555 | "data": {
556 | "text/plain": [
557 | "array([[1, 1],\n",
558 | " [1, 1]])"
559 | ]
560 | },
561 | "execution_count": 58,
562 | "metadata": {},
563 | "output_type": "execute_result"
564 | }
565 | ],
566 | "source": [
567 | "numone=np.ones((2,2),dtype=int)\n",
568 | "numone"
569 | ]
570 | },
571 | {
572 | "cell_type": "code",
573 | "execution_count": 59,
574 | "id": "d757dc09",
575 | "metadata": {},
576 | "outputs": [
577 | {
578 | "data": {
579 | "text/plain": [
580 | "array([1., 1., 1.])"
581 | ]
582 | },
583 | "execution_count": 59,
584 | "metadata": {},
585 | "output_type": "execute_result"
586 | }
587 | ],
588 | "source": [
589 | "num=np.ones(3)\n",
590 | "num"
591 | ]
592 | },
593 | {
594 | "cell_type": "code",
595 | "execution_count": 64,
596 | "id": "cda04f31",
597 | "metadata": {},
598 | "outputs": [
599 | {
600 | "data": {
601 | "text/plain": [
602 | "array([[[1., 1., 1.],\n",
603 | " [1., 1., 1.]],\n",
604 | "\n",
605 | " [[1., 1., 1.],\n",
606 | " [1., 1., 1.]]])"
607 | ]
608 | },
609 | "execution_count": 64,
610 | "metadata": {},
611 | "output_type": "execute_result"
612 | }
613 | ],
614 | "source": [
615 | "num=np.ones((2,2,3))\n",
616 | "num"
617 | ]
618 | },
619 | {
620 | "cell_type": "code",
621 | "execution_count": 66,
622 | "id": "77675c95",
623 | "metadata": {},
624 | "outputs": [
625 | {
626 | "data": {
627 | "text/plain": [
628 | "array([[0, 0],\n",
629 | " [0, 0],\n",
630 | " [0, 0]])"
631 | ]
632 | },
633 | "execution_count": 66,
634 | "metadata": {},
635 | "output_type": "execute_result"
636 | }
637 | ],
638 | "source": [
639 | "numszero=np.zeros((3,2),dtype=int)\n",
640 | "numszero"
641 | ]
642 | },
643 | {
644 | "cell_type": "code",
645 | "execution_count": 67,
646 | "id": "790e4ae8",
647 | "metadata": {},
648 | "outputs": [
649 | {
650 | "data": {
651 | "text/plain": [
652 | "array([0, 3, 6, 9])"
653 | ]
654 | },
655 | "execution_count": 67,
656 | "metadata": {},
657 | "output_type": "execute_result"
658 | }
659 | ],
660 | "source": [
661 | "range_array=np.arange(0,10,3)\n",
662 | "range_array"
663 | ]
664 | },
665 | {
666 | "cell_type": "code",
667 | "execution_count": 70,
668 | "id": "28f20acd",
669 | "metadata": {},
670 | "outputs": [
671 | {
672 | "data": {
673 | "text/plain": [
674 | "array([0, 0, 0, 0, 0])"
675 | ]
676 | },
677 | "execution_count": 70,
678 | "metadata": {},
679 | "output_type": "execute_result"
680 | }
681 | ],
682 | "source": [
683 | "a=np.random.randint(low=1,size=5)\n",
684 | "a"
685 | ]
686 | },
687 | {
688 | "cell_type": "code",
689 | "execution_count": 71,
690 | "id": "26686419",
691 | "metadata": {},
692 | "outputs": [
693 | {
694 | "data": {
695 | "text/plain": [
696 | "array([[3, 1, 1],\n",
697 | " [3, 1, 2]])"
698 | ]
699 | },
700 | "execution_count": 71,
701 | "metadata": {},
702 | "output_type": "execute_result"
703 | }
704 | ],
705 | "source": [
706 | "b=np.random.randint(low=1,high=6,size=(2,3))\n",
707 | "b"
708 | ]
709 | },
710 | {
711 | "cell_type": "code",
712 | "execution_count": 74,
713 | "id": "b84b808d",
714 | "metadata": {},
715 | "outputs": [
716 | {
717 | "data": {
718 | "text/plain": [
719 | "array([b'1', b'2', b'3', b'1', b'2', b'3', b'4', b'5'], dtype='|S11')"
720 | ]
721 | },
722 | "execution_count": 74,
723 | "metadata": {},
724 | "output_type": "execute_result"
725 | }
726 | ],
727 | "source": [
728 | "np.concatenate([array1,array5])"
729 | ]
730 | },
731 | {
732 | "cell_type": "code",
733 | "execution_count": 78,
734 | "id": "3d576c44",
735 | "metadata": {},
736 | "outputs": [
737 | {
738 | "data": {
739 | "text/plain": [
740 | "array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 7, 21, 10, 20, 45, 11, 47, 91,\n",
741 | " 51])"
742 | ]
743 | },
744 | "execution_count": 78,
745 | "metadata": {},
746 | "output_type": "execute_result"
747 | }
748 | ],
749 | "source": [
750 | "flatarr=array3.flatten()\n",
751 | "flatarr"
752 | ]
753 | },
754 | {
755 | "cell_type": "code",
756 | "execution_count": 80,
757 | "id": "5a7b0918",
758 | "metadata": {},
759 | "outputs": [
760 | {
761 | "data": {
762 | "text/plain": [
763 | "array([[1, 2],\n",
764 | " [3, 4]])"
765 | ]
766 | },
767 | "execution_count": 80,
768 | "metadata": {},
769 | "output_type": "execute_result"
770 | }
771 | ],
772 | "source": [
773 | "np.reshape(flatarr[:4],(2,2))"
774 | ]
775 | },
776 | {
777 | "cell_type": "code",
778 | "execution_count": 82,
779 | "id": "e733d482",
780 | "metadata": {},
781 | "outputs": [
782 | {
783 | "data": {
784 | "text/plain": [
785 | "array([[1., 0.],\n",
786 | " [0., 1.]])"
787 | ]
788 | },
789 | "execution_count": 82,
790 | "metadata": {},
791 | "output_type": "execute_result"
792 | }
793 | ],
794 | "source": [
795 | "np.eye(2)"
796 | ]
797 | },
798 | {
799 | "cell_type": "code",
800 | "execution_count": 84,
801 | "id": "b0e12cec",
802 | "metadata": {},
803 | "outputs": [
804 | {
805 | "data": {
806 | "text/plain": [
807 | "array([[1., 0., 0.],\n",
808 | " [0., 1., 0.],\n",
809 | " [0., 0., 1.]])"
810 | ]
811 | },
812 | "execution_count": 84,
813 | "metadata": {},
814 | "output_type": "execute_result"
815 | }
816 | ],
817 | "source": [
818 | "np.eye(3)"
819 | ]
820 | },
821 | {
822 | "cell_type": "code",
823 | "execution_count": 86,
824 | "id": "c3615387",
825 | "metadata": {},
826 | "outputs": [
827 | {
828 | "data": {
829 | "text/plain": [
830 | "array([[1, 0, 0, 0],\n",
831 | " [0, 1, 0, 0],\n",
832 | " [0, 0, 1, 0],\n",
833 | " [0, 0, 0, 1]])"
834 | ]
835 | },
836 | "execution_count": 86,
837 | "metadata": {},
838 | "output_type": "execute_result"
839 | }
840 | ],
841 | "source": [
842 | "np.eye(4,dtype=int)"
843 | ]
844 | },
845 | {
846 | "cell_type": "code",
847 | "execution_count": 88,
848 | "id": "b5823987",
849 | "metadata": {},
850 | "outputs": [
851 | {
852 | "data": {
853 | "text/html": [
854 | "
\n",
855 | "\n",
868 | "
\n",
869 | " \n",
870 | " \n",
871 | " | \n",
872 | " 0 | \n",
873 | " 1 | \n",
874 | "
\n",
875 | " \n",
876 | " \n",
877 | " \n",
878 | " | 0 | \n",
879 | " 1 | \n",
880 | " 2 | \n",
881 | "
\n",
882 | " \n",
883 | " | 1 | \n",
884 | " 3 | \n",
885 | " 4 | \n",
886 | "
\n",
887 | " \n",
888 | "
\n",
889 | "
"
890 | ],
891 | "text/plain": [
892 | " 0 1\n",
893 | "0 1 2\n",
894 | "1 3 4"
895 | ]
896 | },
897 | "execution_count": 88,
898 | "metadata": {},
899 | "output_type": "execute_result"
900 | }
901 | ],
902 | "source": [
903 | "import pandas as pd\n",
904 | "df=pd.DataFrame(array2)\n",
905 | "df"
906 | ]
907 | },
908 | {
909 | "cell_type": "code",
910 | "execution_count": 1,
911 | "id": "e24bbccd",
912 | "metadata": {},
913 | "outputs": [],
914 | "source": [
915 | "import pandas as pd"
916 | ]
917 | },
918 | {
919 | "cell_type": "code",
920 | "execution_count": 2,
921 | "id": "54265fca",
922 | "metadata": {},
923 | "outputs": [
924 | {
925 | "data": {
926 | "text/plain": [
927 | "'1.5.3'"
928 | ]
929 | },
930 | "execution_count": 2,
931 | "metadata": {},
932 | "output_type": "execute_result"
933 | }
934 | ],
935 | "source": [
936 | "pd.__version__"
937 | ]
938 | },
939 | {
940 | "cell_type": "code",
941 | "execution_count": 3,
942 | "id": "961aa7f0",
943 | "metadata": {},
944 | "outputs": [
945 | {
946 | "data": {
947 | "text/plain": [
948 | "0 BMW\n",
949 | "1 TOYOTA\n",
950 | "2 HONDA\n",
951 | "dtype: object"
952 | ]
953 | },
954 | "execution_count": 3,
955 | "metadata": {},
956 | "output_type": "execute_result"
957 | }
958 | ],
959 | "source": [
960 | "cars=pd.Series([\"BMW\",\"TOYOTA\",\"HONDA\"])\n",
961 | "cars"
962 | ]
963 | },
964 | {
965 | "cell_type": "code",
966 | "execution_count": 4,
967 | "id": "f328336e",
968 | "metadata": {},
969 | "outputs": [
970 | {
971 | "data": {
972 | "text/plain": [
973 | "first BMW\n",
974 | "second TOYOTA\n",
975 | "third HONDA\n",
976 | "dtype: object"
977 | ]
978 | },
979 | "execution_count": 4,
980 | "metadata": {},
981 | "output_type": "execute_result"
982 | }
983 | ],
984 | "source": [
985 | "sindex=pd.Series([\"BMW\",\"TOYOTA\",\"HONDA\"],\n",
986 | " index=[\"first\",\"second\",\"third\"])\n",
987 | "sindex"
988 | ]
989 | },
990 | {
991 | "cell_type": "code",
992 | "execution_count": 5,
993 | "id": "5522e096",
994 | "metadata": {},
995 | "outputs": [
996 | {
997 | "data": {
998 | "text/plain": [
999 | "'TOYOTA'"
1000 | ]
1001 | },
1002 | "execution_count": 5,
1003 | "metadata": {},
1004 | "output_type": "execute_result"
1005 | }
1006 | ],
1007 | "source": [
1008 | "sindex[\"second\"]"
1009 | ]
1010 | },
1011 | {
1012 | "cell_type": "code",
1013 | "execution_count": 6,
1014 | "id": "8fe1c64a",
1015 | "metadata": {},
1016 | "outputs": [
1017 | {
1018 | "data": {
1019 | "text/plain": [
1020 | "0 Red\n",
1021 | "1 Blue\n",
1022 | "2 White\n",
1023 | "dtype: object"
1024 | ]
1025 | },
1026 | "execution_count": 6,
1027 | "metadata": {},
1028 | "output_type": "execute_result"
1029 | }
1030 | ],
1031 | "source": [
1032 | "colors=pd.Series([\"Red\",\"Blue\",\"White\"])\n",
1033 | "colors"
1034 | ]
1035 | },
1036 | {
1037 | "cell_type": "code",
1038 | "execution_count": 7,
1039 | "id": "7247da0d",
1040 | "metadata": {},
1041 | "outputs": [
1042 | {
1043 | "data": {
1044 | "text/html": [
1045 | "\n",
1046 | "\n",
1059 | "
\n",
1060 | " \n",
1061 | " \n",
1062 | " | \n",
1063 | " car make | \n",
1064 | " color | \n",
1065 | "
\n",
1066 | " \n",
1067 | " \n",
1068 | " \n",
1069 | " | 0 | \n",
1070 | " BMW | \n",
1071 | " Red | \n",
1072 | "
\n",
1073 | " \n",
1074 | " | 1 | \n",
1075 | " TOYOTA | \n",
1076 | " Blue | \n",
1077 | "
\n",
1078 | " \n",
1079 | " | 2 | \n",
1080 | " HONDA | \n",
1081 | " White | \n",
1082 | "
\n",
1083 | " \n",
1084 | "
\n",
1085 | "
"
1086 | ],
1087 | "text/plain": [
1088 | " car make color\n",
1089 | "0 BMW Red\n",
1090 | "1 TOYOTA Blue\n",
1091 | "2 HONDA White"
1092 | ]
1093 | },
1094 | "execution_count": 7,
1095 | "metadata": {},
1096 | "output_type": "execute_result"
1097 | }
1098 | ],
1099 | "source": [
1100 | "car_data=pd.DataFrame({\"car make\":cars,\n",
1101 | " \"color\":colors})\n",
1102 | "car_data"
1103 | ]
1104 | },
1105 | {
1106 | "cell_type": "code",
1107 | "execution_count": 8,
1108 | "id": "68bf9452",
1109 | "metadata": {},
1110 | "outputs": [
1111 | {
1112 | "data": {
1113 | "text/html": [
1114 | "\n",
1115 | "\n",
1128 | "
\n",
1129 | " \n",
1130 | " \n",
1131 | " | \n",
1132 | " Make | \n",
1133 | " Colour | \n",
1134 | " Odometer (KM) | \n",
1135 | " Doors | \n",
1136 | " Price | \n",
1137 | "
\n",
1138 | " \n",
1139 | " \n",
1140 | " \n",
1141 | " | 0 | \n",
1142 | " Toyota | \n",
1143 | " White | \n",
1144 | " 150043 | \n",
1145 | " 4 | \n",
1146 | " $4,000.00 | \n",
1147 | "
\n",
1148 | " \n",
1149 | " | 1 | \n",
1150 | " Honda | \n",
1151 | " Red | \n",
1152 | " 87899 | \n",
1153 | " 4 | \n",
1154 | " $5,000.00 | \n",
1155 | "
\n",
1156 | " \n",
1157 | " | 2 | \n",
1158 | " Toyota | \n",
1159 | " Blue | \n",
1160 | " 32549 | \n",
1161 | " 3 | \n",
1162 | " $7,000.00 | \n",
1163 | "
\n",
1164 | " \n",
1165 | " | 3 | \n",
1166 | " BMW | \n",
1167 | " Black | \n",
1168 | " 11179 | \n",
1169 | " 5 | \n",
1170 | " $22,000.00 | \n",
1171 | "
\n",
1172 | " \n",
1173 | " | 4 | \n",
1174 | " Nissan | \n",
1175 | " White | \n",
1176 | " 213095 | \n",
1177 | " 4 | \n",
1178 | " $3,500.00 | \n",
1179 | "
\n",
1180 | " \n",
1181 | " | 5 | \n",
1182 | " Toyota | \n",
1183 | " Green | \n",
1184 | " 99213 | \n",
1185 | " 4 | \n",
1186 | " $4,500.00 | \n",
1187 | "
\n",
1188 | " \n",
1189 | " | 6 | \n",
1190 | " Honda | \n",
1191 | " Blue | \n",
1192 | " 45698 | \n",
1193 | " 4 | \n",
1194 | " $7,500.00 | \n",
1195 | "
\n",
1196 | " \n",
1197 | " | 7 | \n",
1198 | " Honda | \n",
1199 | " Blue | \n",
1200 | " 54738 | \n",
1201 | " 4 | \n",
1202 | " $7,000.00 | \n",
1203 | "
\n",
1204 | " \n",
1205 | " | 8 | \n",
1206 | " Toyota | \n",
1207 | " White | \n",
1208 | " 60000 | \n",
1209 | " 4 | \n",
1210 | " $6,250.00 | \n",
1211 | "
\n",
1212 | " \n",
1213 | " | 9 | \n",
1214 | " Nissan | \n",
1215 | " White | \n",
1216 | " 31600 | \n",
1217 | " 4 | \n",
1218 | " $9,700.00 | \n",
1219 | "
\n",
1220 | " \n",
1221 | "
\n",
1222 | "
"
1223 | ],
1224 | "text/plain": [
1225 | " Make Colour Odometer (KM) Doors Price\n",
1226 | "0 Toyota White 150043 4 $4,000.00\n",
1227 | "1 Honda Red 87899 4 $5,000.00\n",
1228 | "2 Toyota Blue 32549 3 $7,000.00\n",
1229 | "3 BMW Black 11179 5 $22,000.00\n",
1230 | "4 Nissan White 213095 4 $3,500.00\n",
1231 | "5 Toyota Green 99213 4 $4,500.00\n",
1232 | "6 Honda Blue 45698 4 $7,500.00\n",
1233 | "7 Honda Blue 54738 4 $7,000.00\n",
1234 | "8 Toyota White 60000 4 $6,250.00\n",
1235 | "9 Nissan White 31600 4 $9,700.00"
1236 | ]
1237 | },
1238 | "execution_count": 8,
1239 | "metadata": {},
1240 | "output_type": "execute_result"
1241 | }
1242 | ],
1243 | "source": [
1244 | "car_sales=pd.read_csv(\"car-sales.csv\")\n",
1245 | "car_sales"
1246 | ]
1247 | },
1248 | {
1249 | "cell_type": "code",
1250 | "execution_count": 9,
1251 | "id": "50054e0d",
1252 | "metadata": {},
1253 | "outputs": [
1254 | {
1255 | "data": {
1256 | "text/html": [
1257 | "\n",
1258 | "\n",
1271 | "
\n",
1272 | " \n",
1273 | " \n",
1274 | " | \n",
1275 | " Make | \n",
1276 | " Colour | \n",
1277 | " Odometer (KM) | \n",
1278 | " Doors | \n",
1279 | " Price | \n",
1280 | "
\n",
1281 | " \n",
1282 | " \n",
1283 | " \n",
1284 | " | 0 | \n",
1285 | " Toyota | \n",
1286 | " White | \n",
1287 | " 150043 | \n",
1288 | " 4 | \n",
1289 | " $4,000.00 | \n",
1290 | "
\n",
1291 | " \n",
1292 | " | 1 | \n",
1293 | " Honda | \n",
1294 | " Red | \n",
1295 | " 87899 | \n",
1296 | " 4 | \n",
1297 | " $5,000.00 | \n",
1298 | "
\n",
1299 | " \n",
1300 | " | 2 | \n",
1301 | " Toyota | \n",
1302 | " Blue | \n",
1303 | " 32549 | \n",
1304 | " 3 | \n",
1305 | " $7,000.00 | \n",
1306 | "
\n",
1307 | " \n",
1308 | " | 3 | \n",
1309 | " BMW | \n",
1310 | " Black | \n",
1311 | " 11179 | \n",
1312 | " 5 | \n",
1313 | " $22,000.00 | \n",
1314 | "
\n",
1315 | " \n",
1316 | " | 4 | \n",
1317 | " Nissan | \n",
1318 | " White | \n",
1319 | " 213095 | \n",
1320 | " 4 | \n",
1321 | " $3,500.00 | \n",
1322 | "
\n",
1323 | " \n",
1324 | " | 5 | \n",
1325 | " Toyota | \n",
1326 | " Green | \n",
1327 | " 99213 | \n",
1328 | " 4 | \n",
1329 | " $4,500.00 | \n",
1330 | "
\n",
1331 | " \n",
1332 | " | 6 | \n",
1333 | " Honda | \n",
1334 | " Blue | \n",
1335 | " 45698 | \n",
1336 | " 4 | \n",
1337 | " $7,500.00 | \n",
1338 | "
\n",
1339 | " \n",
1340 | " | 7 | \n",
1341 | " Honda | \n",
1342 | " Blue | \n",
1343 | " 54738 | \n",
1344 | " 4 | \n",
1345 | " $7,000.00 | \n",
1346 | "
\n",
1347 | " \n",
1348 | " | 8 | \n",
1349 | " Toyota | \n",
1350 | " White | \n",
1351 | " 60000 | \n",
1352 | " 4 | \n",
1353 | " $6,250.00 | \n",
1354 | "
\n",
1355 | " \n",
1356 | " | 9 | \n",
1357 | " Nissan | \n",
1358 | " White | \n",
1359 | " 31600 | \n",
1360 | " 4 | \n",
1361 | " $9,700.00 | \n",
1362 | "
\n",
1363 | " \n",
1364 | "
\n",
1365 | "
"
1366 | ],
1367 | "text/plain": [
1368 | " Make Colour Odometer (KM) Doors Price\n",
1369 | "0 Toyota White 150043 4 $4,000.00\n",
1370 | "1 Honda Red 87899 4 $5,000.00\n",
1371 | "2 Toyota Blue 32549 3 $7,000.00\n",
1372 | "3 BMW Black 11179 5 $22,000.00\n",
1373 | "4 Nissan White 213095 4 $3,500.00\n",
1374 | "5 Toyota Green 99213 4 $4,500.00\n",
1375 | "6 Honda Blue 45698 4 $7,500.00\n",
1376 | "7 Honda Blue 54738 4 $7,000.00\n",
1377 | "8 Toyota White 60000 4 $6,250.00\n",
1378 | "9 Nissan White 31600 4 $9,700.00"
1379 | ]
1380 | },
1381 | "execution_count": 9,
1382 | "metadata": {},
1383 | "output_type": "execute_result"
1384 | }
1385 | ],
1386 | "source": [
1387 | "export_cars=pd.read_csv(\"export_cars.csv\")\n",
1388 | "export_cars"
1389 | ]
1390 | },
1391 | {
1392 | "cell_type": "code",
1393 | "execution_count": 10,
1394 | "id": "37e6d990",
1395 | "metadata": {},
1396 | "outputs": [
1397 | {
1398 | "data": {
1399 | "text/html": [
1400 | "\n",
1401 | "\n",
1414 | "
\n",
1415 | " \n",
1416 | " \n",
1417 | " | \n",
1418 | " Odometer (KM) | \n",
1419 | " Doors | \n",
1420 | "
\n",
1421 | " \n",
1422 | " \n",
1423 | " \n",
1424 | " | count | \n",
1425 | " 10.000000 | \n",
1426 | " 10.000000 | \n",
1427 | "
\n",
1428 | " \n",
1429 | " | mean | \n",
1430 | " 78601.400000 | \n",
1431 | " 4.000000 | \n",
1432 | "
\n",
1433 | " \n",
1434 | " | std | \n",
1435 | " 61983.471735 | \n",
1436 | " 0.471405 | \n",
1437 | "
\n",
1438 | " \n",
1439 | " | min | \n",
1440 | " 11179.000000 | \n",
1441 | " 3.000000 | \n",
1442 | "
\n",
1443 | " \n",
1444 | " | 25% | \n",
1445 | " 35836.250000 | \n",
1446 | " 4.000000 | \n",
1447 | "
\n",
1448 | " \n",
1449 | " | 50% | \n",
1450 | " 57369.000000 | \n",
1451 | " 4.000000 | \n",
1452 | "
\n",
1453 | " \n",
1454 | " | 75% | \n",
1455 | " 96384.500000 | \n",
1456 | " 4.000000 | \n",
1457 | "
\n",
1458 | " \n",
1459 | " | max | \n",
1460 | " 213095.000000 | \n",
1461 | " 5.000000 | \n",
1462 | "
\n",
1463 | " \n",
1464 | "
\n",
1465 | "
"
1466 | ],
1467 | "text/plain": [
1468 | " Odometer (KM) Doors\n",
1469 | "count 10.000000 10.000000\n",
1470 | "mean 78601.400000 4.000000\n",
1471 | "std 61983.471735 0.471405\n",
1472 | "min 11179.000000 3.000000\n",
1473 | "25% 35836.250000 4.000000\n",
1474 | "50% 57369.000000 4.000000\n",
1475 | "75% 96384.500000 4.000000\n",
1476 | "max 213095.000000 5.000000"
1477 | ]
1478 | },
1479 | "execution_count": 10,
1480 | "metadata": {},
1481 | "output_type": "execute_result"
1482 | }
1483 | ],
1484 | "source": [
1485 | "export_cars.describe()"
1486 | ]
1487 | },
1488 | {
1489 | "cell_type": "code",
1490 | "execution_count": 12,
1491 | "id": "910850ef",
1492 | "metadata": {},
1493 | "outputs": [
1494 | {
1495 | "data": {
1496 | "text/plain": [
1497 | "Make object\n",
1498 | "Colour object\n",
1499 | "Odometer (KM) int64\n",
1500 | "Doors int64\n",
1501 | "Price object\n",
1502 | "dtype: object"
1503 | ]
1504 | },
1505 | "execution_count": 12,
1506 | "metadata": {},
1507 | "output_type": "execute_result"
1508 | }
1509 | ],
1510 | "source": [
1511 | "export_cars.dtypes"
1512 | ]
1513 | },
1514 | {
1515 | "cell_type": "code",
1516 | "execution_count": 14,
1517 | "id": "21cba821",
1518 | "metadata": {},
1519 | "outputs": [
1520 | {
1521 | "data": {
1522 | "text/plain": [
1523 | "(10, 5)"
1524 | ]
1525 | },
1526 | "execution_count": 14,
1527 | "metadata": {},
1528 | "output_type": "execute_result"
1529 | }
1530 | ],
1531 | "source": [
1532 | "export_cars.shape"
1533 | ]
1534 | },
1535 | {
1536 | "cell_type": "code",
1537 | "execution_count": 15,
1538 | "id": "98368512",
1539 | "metadata": {},
1540 | "outputs": [
1541 | {
1542 | "name": "stdout",
1543 | "output_type": "stream",
1544 | "text": [
1545 | "\n",
1546 | "RangeIndex: 10 entries, 0 to 9\n",
1547 | "Data columns (total 5 columns):\n",
1548 | " # Column Non-Null Count Dtype \n",
1549 | "--- ------ -------------- ----- \n",
1550 | " 0 Make 10 non-null object\n",
1551 | " 1 Colour 10 non-null object\n",
1552 | " 2 Odometer (KM) 10 non-null int64 \n",
1553 | " 3 Doors 10 non-null int64 \n",
1554 | " 4 Price 10 non-null object\n",
1555 | "dtypes: int64(2), object(3)\n",
1556 | "memory usage: 532.0+ bytes\n"
1557 | ]
1558 | }
1559 | ],
1560 | "source": [
1561 | "export_cars.info()"
1562 | ]
1563 | },
1564 | {
1565 | "cell_type": "code",
1566 | "execution_count": 16,
1567 | "id": "d3a9fc81",
1568 | "metadata": {},
1569 | "outputs": [
1570 | {
1571 | "data": {
1572 | "text/plain": [
1573 | "Index(['Make', 'Colour', 'Odometer (KM)', 'Doors', 'Price'], dtype='object')"
1574 | ]
1575 | },
1576 | "execution_count": 16,
1577 | "metadata": {},
1578 | "output_type": "execute_result"
1579 | }
1580 | ],
1581 | "source": [
1582 | "export_cars.columns"
1583 | ]
1584 | },
1585 | {
1586 | "cell_type": "code",
1587 | "execution_count": 17,
1588 | "id": "92cd5466",
1589 | "metadata": {},
1590 | "outputs": [
1591 | {
1592 | "data": {
1593 | "text/plain": [
1594 | "RangeIndex(start=0, stop=10, step=1)"
1595 | ]
1596 | },
1597 | "execution_count": 17,
1598 | "metadata": {},
1599 | "output_type": "execute_result"
1600 | }
1601 | ],
1602 | "source": [
1603 | "export_cars.index"
1604 | ]
1605 | },
1606 | {
1607 | "cell_type": "code",
1608 | "execution_count": 18,
1609 | "id": "b68d7976",
1610 | "metadata": {},
1611 | "outputs": [
1612 | {
1613 | "data": {
1614 | "text/plain": [
1615 | ""
1626 | ]
1627 | },
1628 | "execution_count": 18,
1629 | "metadata": {},
1630 | "output_type": "execute_result"
1631 | }
1632 | ],
1633 | "source": [
1634 | "export_cars.describe"
1635 | ]
1636 | },
1637 | {
1638 | "cell_type": "code",
1639 | "execution_count": 20,
1640 | "id": "639a50de",
1641 | "metadata": {},
1642 | "outputs": [
1643 | {
1644 | "data": {
1645 | "text/plain": [
1646 | "Odometer (KM) 78601.4\n",
1647 | "Doors 4.0\n",
1648 | "dtype: float64"
1649 | ]
1650 | },
1651 | "execution_count": 20,
1652 | "metadata": {},
1653 | "output_type": "execute_result"
1654 | }
1655 | ],
1656 | "source": [
1657 | "car_sales[[\"Odometer (KM)\",\"Doors\"]].mean()"
1658 | ]
1659 | },
1660 | {
1661 | "cell_type": "code",
1662 | "execution_count": 21,
1663 | "id": "4d284ac2",
1664 | "metadata": {},
1665 | "outputs": [
1666 | {
1667 | "data": {
1668 | "text/plain": [
1669 | "Make ToyotaHondaToyotaBMWNissanToyotaHondaHondaToyo...\n",
1670 | "Colour WhiteRedBlueBlackWhiteGreenBlueBlueWhiteWhite\n",
1671 | "Odometer (KM) 786014\n",
1672 | "Doors 40\n",
1673 | "Price $4,000.00$5,000.00$7,000.00$22,000.00$3,500.00...\n",
1674 | "dtype: object"
1675 | ]
1676 | },
1677 | "execution_count": 21,
1678 | "metadata": {},
1679 | "output_type": "execute_result"
1680 | }
1681 | ],
1682 | "source": [
1683 | "car_sales.sum()"
1684 | ]
1685 | },
1686 | {
1687 | "cell_type": "code",
1688 | "execution_count": 22,
1689 | "id": "666aefab",
1690 | "metadata": {},
1691 | "outputs": [
1692 | {
1693 | "data": {
1694 | "text/plain": [
1695 | "40"
1696 | ]
1697 | },
1698 | "execution_count": 22,
1699 | "metadata": {},
1700 | "output_type": "execute_result"
1701 | }
1702 | ],
1703 | "source": [
1704 | "car_sales[\"Doors\"].sum()"
1705 | ]
1706 | },
1707 | {
1708 | "cell_type": "code",
1709 | "execution_count": 23,
1710 | "id": "7fcf4d0f",
1711 | "metadata": {},
1712 | "outputs": [
1713 | {
1714 | "data": {
1715 | "text/plain": [
1716 | "10"
1717 | ]
1718 | },
1719 | "execution_count": 23,
1720 | "metadata": {},
1721 | "output_type": "execute_result"
1722 | }
1723 | ],
1724 | "source": [
1725 | "len(car_sales)"
1726 | ]
1727 | },
1728 | {
1729 | "cell_type": "code",
1730 | "execution_count": 24,
1731 | "id": "3baa4297",
1732 | "metadata": {},
1733 | "outputs": [
1734 | {
1735 | "data": {
1736 | "text/html": [
1737 | "\n",
1738 | "\n",
1751 | "
\n",
1752 | " \n",
1753 | " \n",
1754 | " | \n",
1755 | " Make | \n",
1756 | " Colour | \n",
1757 | " Odometer (KM) | \n",
1758 | " Doors | \n",
1759 | " Price | \n",
1760 | "
\n",
1761 | " \n",
1762 | " \n",
1763 | " \n",
1764 | " | 0 | \n",
1765 | " Toyota | \n",
1766 | " White | \n",
1767 | " 150043 | \n",
1768 | " 4 | \n",
1769 | " $4,000.00 | \n",
1770 | "
\n",
1771 | " \n",
1772 | " | 1 | \n",
1773 | " Honda | \n",
1774 | " Red | \n",
1775 | " 87899 | \n",
1776 | " 4 | \n",
1777 | " $5,000.00 | \n",
1778 | "
\n",
1779 | " \n",
1780 | " | 2 | \n",
1781 | " Toyota | \n",
1782 | " Blue | \n",
1783 | " 32549 | \n",
1784 | " 3 | \n",
1785 | " $7,000.00 | \n",
1786 | "
\n",
1787 | " \n",
1788 | " | 3 | \n",
1789 | " BMW | \n",
1790 | " Black | \n",
1791 | " 11179 | \n",
1792 | " 5 | \n",
1793 | " $22,000.00 | \n",
1794 | "
\n",
1795 | " \n",
1796 | " | 4 | \n",
1797 | " Nissan | \n",
1798 | " White | \n",
1799 | " 213095 | \n",
1800 | " 4 | \n",
1801 | " $3,500.00 | \n",
1802 | "
\n",
1803 | " \n",
1804 | "
\n",
1805 | "
"
1806 | ],
1807 | "text/plain": [
1808 | " Make Colour Odometer (KM) Doors Price\n",
1809 | "0 Toyota White 150043 4 $4,000.00\n",
1810 | "1 Honda Red 87899 4 $5,000.00\n",
1811 | "2 Toyota Blue 32549 3 $7,000.00\n",
1812 | "3 BMW Black 11179 5 $22,000.00\n",
1813 | "4 Nissan White 213095 4 $3,500.00"
1814 | ]
1815 | },
1816 | "execution_count": 24,
1817 | "metadata": {},
1818 | "output_type": "execute_result"
1819 | }
1820 | ],
1821 | "source": [
1822 | "car_sales.head()"
1823 | ]
1824 | },
1825 | {
1826 | "cell_type": "code",
1827 | "execution_count": 27,
1828 | "id": "1c6e1a98",
1829 | "metadata": {},
1830 | "outputs": [
1831 | {
1832 | "data": {
1833 | "text/html": [
1834 | "\n",
1835 | "\n",
1848 | "
\n",
1849 | " \n",
1850 | " \n",
1851 | " | \n",
1852 | " Make | \n",
1853 | " Colour | \n",
1854 | " Odometer (KM) | \n",
1855 | " Doors | \n",
1856 | " Price | \n",
1857 | "
\n",
1858 | " \n",
1859 | " \n",
1860 | " \n",
1861 | " | 8 | \n",
1862 | " Toyota | \n",
1863 | " White | \n",
1864 | " 60000 | \n",
1865 | " 4 | \n",
1866 | " $6,250.00 | \n",
1867 | "
\n",
1868 | " \n",
1869 | " | 9 | \n",
1870 | " Nissan | \n",
1871 | " White | \n",
1872 | " 31600 | \n",
1873 | " 4 | \n",
1874 | " $9,700.00 | \n",
1875 | "
\n",
1876 | " \n",
1877 | "
\n",
1878 | "
"
1879 | ],
1880 | "text/plain": [
1881 | " Make Colour Odometer (KM) Doors Price\n",
1882 | "8 Toyota White 60000 4 $6,250.00\n",
1883 | "9 Nissan White 31600 4 $9,700.00"
1884 | ]
1885 | },
1886 | "execution_count": 27,
1887 | "metadata": {},
1888 | "output_type": "execute_result"
1889 | }
1890 | ],
1891 | "source": [
1892 | "car_sales.tail(2)"
1893 | ]
1894 | },
1895 | {
1896 | "cell_type": "code",
1897 | "execution_count": 29,
1898 | "id": "22bb3986",
1899 | "metadata": {},
1900 | "outputs": [
1901 | {
1902 | "data": {
1903 | "text/plain": [
1904 | "Make Toyota\n",
1905 | "Colour Blue\n",
1906 | "Odometer (KM) 32549\n",
1907 | "Doors 3\n",
1908 | "Price $7,000.00\n",
1909 | "Name: 2, dtype: object"
1910 | ]
1911 | },
1912 | "execution_count": 29,
1913 | "metadata": {},
1914 | "output_type": "execute_result"
1915 | }
1916 | ],
1917 | "source": [
1918 | "car_sales.loc[9]"
1919 | ]
1920 | },
1921 | {
1922 | "cell_type": "code",
1923 | "execution_count": 30,
1924 | "id": "74811be6",
1925 | "metadata": {},
1926 | "outputs": [
1927 | {
1928 | "data": {
1929 | "text/plain": [
1930 | "Make Toyota\n",
1931 | "Colour Blue\n",
1932 | "Odometer (KM) 32549\n",
1933 | "Doors 3\n",
1934 | "Price $7,000.00\n",
1935 | "Name: 2, dtype: object"
1936 | ]
1937 | },
1938 | "execution_count": 30,
1939 | "metadata": {},
1940 | "output_type": "execute_result"
1941 | }
1942 | ],
1943 | "source": [
1944 | "car_sales.iloc[2]"
1945 | ]
1946 | },
1947 | {
1948 | "cell_type": "code",
1949 | "execution_count": 33,
1950 | "id": "436faa43",
1951 | "metadata": {},
1952 | "outputs": [
1953 | {
1954 | "data": {
1955 | "text/plain": [
1956 | "0 BMW\n",
1957 | "1 HONDA\n",
1958 | "3 AUDI\n",
1959 | "5 TOYOTA\n",
1960 | "dtype: object"
1961 | ]
1962 | },
1963 | "execution_count": 33,
1964 | "metadata": {},
1965 | "output_type": "execute_result"
1966 | }
1967 | ],
1968 | "source": [
1969 | "cars=pd.Series([\"BMW\",\"HONDA\",\"AUDI\",\"TOYOTA\"],index=[0,1,3,5])\n",
1970 | "cars"
1971 | ]
1972 | },
1973 | {
1974 | "cell_type": "code",
1975 | "execution_count": 34,
1976 | "id": "4992d065",
1977 | "metadata": {},
1978 | "outputs": [
1979 | {
1980 | "ename": "KeyError",
1981 | "evalue": "2",
1982 | "output_type": "error",
1983 | "traceback": [
1984 | "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
1985 | "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
1986 | "File \u001b[1;32mC:\\ProgramData\\anaconda3\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3802\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 3801\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 3802\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine\u001b[38;5;241m.\u001b[39mget_loc(casted_key)\n\u001b[0;32m 3803\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n",
1987 | "File \u001b[1;32mC:\\ProgramData\\anaconda3\\Lib\\site-packages\\pandas\\_libs\\index.pyx:138\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
1988 | "File \u001b[1;32mC:\\ProgramData\\anaconda3\\Lib\\site-packages\\pandas\\_libs\\index.pyx:165\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
1989 | "File \u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi:2263\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.Int64HashTable.get_item\u001b[1;34m()\u001b[0m\n",
1990 | "File \u001b[1;32mpandas\\_libs\\hashtable_class_helper.pxi:2273\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.Int64HashTable.get_item\u001b[1;34m()\u001b[0m\n",
1991 | "\u001b[1;31mKeyError\u001b[0m: 2",
1992 | "\nThe above exception was the direct cause of the following exception:\n",
1993 | "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)",
1994 | "Cell \u001b[1;32mIn[34], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m cars\u001b[38;5;241m.\u001b[39mloc[\u001b[38;5;241m2\u001b[39m]\n",
1995 | "File \u001b[1;32mC:\\ProgramData\\anaconda3\\Lib\\site-packages\\pandas\\core\\indexing.py:1073\u001b[0m, in \u001b[0;36m_LocationIndexer.__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m 1070\u001b[0m axis \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39maxis \u001b[38;5;129;01mor\u001b[39;00m \u001b[38;5;241m0\u001b[39m\n\u001b[0;32m 1072\u001b[0m maybe_callable \u001b[38;5;241m=\u001b[39m com\u001b[38;5;241m.\u001b[39mapply_if_callable(key, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj)\n\u001b[1;32m-> 1073\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_axis(maybe_callable, axis\u001b[38;5;241m=\u001b[39maxis)\n",
1996 | "File \u001b[1;32mC:\\ProgramData\\anaconda3\\Lib\\site-packages\\pandas\\core\\indexing.py:1312\u001b[0m, in \u001b[0;36m_LocIndexer._getitem_axis\u001b[1;34m(self, key, axis)\u001b[0m\n\u001b[0;32m 1310\u001b[0m \u001b[38;5;66;03m# fall thru to straight lookup\u001b[39;00m\n\u001b[0;32m 1311\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_validate_key(key, axis)\n\u001b[1;32m-> 1312\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_label(key, axis\u001b[38;5;241m=\u001b[39maxis)\n",
1997 | "File \u001b[1;32mC:\\ProgramData\\anaconda3\\Lib\\site-packages\\pandas\\core\\indexing.py:1260\u001b[0m, in \u001b[0;36m_LocIndexer._get_label\u001b[1;34m(self, label, axis)\u001b[0m\n\u001b[0;32m 1258\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_label\u001b[39m(\u001b[38;5;28mself\u001b[39m, label, axis: \u001b[38;5;28mint\u001b[39m):\n\u001b[0;32m 1259\u001b[0m \u001b[38;5;66;03m# GH#5567 this will fail if the label is not present in the axis.\u001b[39;00m\n\u001b[1;32m-> 1260\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mobj\u001b[38;5;241m.\u001b[39mxs(label, axis\u001b[38;5;241m=\u001b[39maxis)\n",
1998 | "File \u001b[1;32mC:\\ProgramData\\anaconda3\\Lib\\site-packages\\pandas\\core\\generic.py:4056\u001b[0m, in \u001b[0;36mNDFrame.xs\u001b[1;34m(self, key, axis, level, drop_level)\u001b[0m\n\u001b[0;32m 4054\u001b[0m new_index \u001b[38;5;241m=\u001b[39m index[loc]\n\u001b[0;32m 4055\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m-> 4056\u001b[0m loc \u001b[38;5;241m=\u001b[39m index\u001b[38;5;241m.\u001b[39mget_loc(key)\n\u001b[0;32m 4058\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(loc, np\u001b[38;5;241m.\u001b[39mndarray):\n\u001b[0;32m 4059\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m loc\u001b[38;5;241m.\u001b[39mdtype \u001b[38;5;241m==\u001b[39m np\u001b[38;5;241m.\u001b[39mbool_:\n",
1999 | "File \u001b[1;32mC:\\ProgramData\\anaconda3\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3804\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key, method, tolerance)\u001b[0m\n\u001b[0;32m 3802\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine\u001b[38;5;241m.\u001b[39mget_loc(casted_key)\n\u001b[0;32m 3803\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[1;32m-> 3804\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[0;32m 3805\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[0;32m 3806\u001b[0m \u001b[38;5;66;03m# If we have a listlike key, _check_indexing_error will raise\u001b[39;00m\n\u001b[0;32m 3807\u001b[0m \u001b[38;5;66;03m# InvalidIndexError. Otherwise we fall through and re-raise\u001b[39;00m\n\u001b[0;32m 3808\u001b[0m \u001b[38;5;66;03m# the TypeError.\u001b[39;00m\n\u001b[0;32m 3809\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_indexing_error(key)\n",
2000 | "\u001b[1;31mKeyError\u001b[0m: 2"
2001 | ]
2002 | }
2003 | ],
2004 | "source": [
2005 | "cars.loc[2]"
2006 | ]
2007 | },
2008 | {
2009 | "cell_type": "code",
2010 | "execution_count": 35,
2011 | "id": "08e3a447",
2012 | "metadata": {},
2013 | "outputs": [],
2014 | "source": [
2015 | "import matplotlib.pyplot as plt"
2016 | ]
2017 | },
2018 | {
2019 | "cell_type": "code",
2020 | "execution_count": 36,
2021 | "id": "9d8780d0",
2022 | "metadata": {},
2023 | "outputs": [
2024 | {
2025 | "data": {
2026 | "text/plain": [
2027 | ""
2028 | ]
2029 | },
2030 | "execution_count": 36,
2031 | "metadata": {},
2032 | "output_type": "execute_result"
2033 | },
2034 | {
2035 | "data": {
2036 | "image/png": "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Hq5bb71Vu3fvrnY/brdbLpfLawEAAI2XTwNQSkqKdu3apaSkpFpvm5+fr7Vr12rq1Kle7b169dLSpUv1wQcfKDk5WcHBwRo8eLAOHDhQ5b6SkpLkdDo9S0RERK37AwAAAofNGGN8ceDc3FzFxMRo/fr1uu666yRJN910k66//nrNmzfvktsnJSXplVde0ZEjRxQUFFRlXXl5ufr166e4uDgtWLCg0hq32y232+157HK5FBERoeLiYjkcjtoNDAAA+ITL5ZLT6azR+7fPLoLeuXOnCgsL1b9/f09bWVmZMjIytHDhQrndbjVt2rTSbY0xevvttzVx4sRqw48kNWnSRDfccEO1M0B2u112u71uAwEAAAHHZwFo2LBhys7O9mq7//771atXLz311FNVhh9J2rx5s7755htNmTLlkscxxigrK0t9+vT52X0GAACNg88CUOvWrdW7d2+vtpYtW6pdu3ae9sTEROXl5Wn58uVedUuWLNGAAQMqbC9Jc+bM0cCBA9WjRw+5XC4tWLBAWVlZWrRoUcMNBgAABBS/+B6gquTn5ysnJ8errbi4WKmpqZo/f36l2xQVFWn69OkqKCiQ0+lU3759lZGRoRtvvPFydBkAAAQAn10E7c9qcxEVAADwD7V5//b59wABAABcbgQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOX4TgJKSkmSz2fTYY49VWZOeni6bzVZh+frrr73qUlNTFRkZKbvdrsjISKWlpTVw7wEAQCDxiwC0fft2vfnmm4qOjq5R/f79+5Wfn+9ZevTo4VmXmZmphIQETZw4UXv27NHEiRM1fvx4ffbZZw3VfQAAEGB8HoBOnTqlCRMm6K233lKbNm1qtM1VV12l0NBQz9K0aVPPunnz5mn48OFKTExUr169lJiYqGHDhmnevHkNNAIAABBofB6AZs6cqTFjxig+Pr7G2/Tt21cdO3bUsGHDtGnTJq91mZmZGjFihFfbyJEjtXXr1ir353a75XK5vBYAANB4NfPlwVNSUrRr1y5t3769RvUdO3bUm2++qf79+8vtdut//ud/NGzYMKWnpysuLk6SVFBQoJCQEK/tQkJCVFBQUOV+k5KSNGfOnLoPBAAABBSfBaDc3FzNmjVL69evV3BwcI226dmzp3r27Ol5HBsbq9zcXL388sueACRJNpvNaztjTIW2CyUmJuqJJ57wPHa5XIqIiKjpUAAAQIDx2UdgO3fuVGFhofr3769mzZqpWbNm2rx5sxYsWKBmzZqprKysRvsZOHCgDhw44HkcGhpaYbansLCwwqzQhex2uxwOh9cCAAAaL58FoGHDhik7O1tZWVmeJSYmRhMmTFBWVpbXhc3V2b17tzp27Oh5HBsbqw0bNnjVrF+/XoMGDarX/gMAgMDls4/AWrdurd69e3u1tWzZUu3atfO0JyYmKi8vT8uXL5f00x1eXbp0UVRUlEpLS7VixQqlpqYqNTXVs49Zs2YpLi5OL774osaNG6fVq1dr48aN2rJly+UbHAAA8Gs+vQj6UvLz85WTk+N5XFpaqt/97nfKy8tTixYtFBUVpTVr1uiWW27x1AwaNEgpKSmaPXu2nnnmGXXr1k0rV67UgAEDfDEEAADgh2zGGOPrTvgbl8slp9Op4uJirgcCACBA1Ob92+ffAwQAAHC5EYAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDlEIAAAIDl+E0ASkpKks1m02OPPVZlzapVqzR8+HB16NBBDodDsbGx+uijj7xqli5dKpvNVmE5c+ZMA48AAAAECr8IQNu3b9ebb76p6OjoausyMjI0fPhwffjhh9q5c6eGDh2qsWPHavfu3V51DodD+fn5XktwcHBDDgEAAASQZr7uwKlTpzRhwgS99dZb+tOf/lRt7bx587we//nPf9bq1av1f//3f+rbt6+n3WazKTQ0tCG6CwAAGgGfzwDNnDlTY8aMUXx8fK23LS8vV0lJidq2bevVfurUKXXu3Fnh4eG69dZbK8wQXcztdsvlcnktAACg8fJpAEpJSdGuXbuUlJRUp+1feeUVnT59WuPHj/e09erVS0uXLtUHH3yg5ORkBQcHa/DgwTpw4ECV+0lKSpLT6fQsERERdeoPAAAIDDZjjPHFgXNzcxUTE6P169fruuuukyTddNNNuv766yt81FWZ5ORkTZ06VatXr6529qi8vFz9+vVTXFycFixYUGmN2+2W2+32PHa5XIqIiFBxcbEcDkftBgYAAHzC5XLJ6XTW6P3bZ9cA7dy5U4WFherfv7+nraysTBkZGVq4cKHcbreaNm1a6bYrV67UlClT9N57713yo7MmTZrohhtuqHYGyG63y263120gAAAg4PgsAA0bNkzZ2dlebffff7969eqlp556qsrwk5ycrAceeEDJyckaM2bMJY9jjFFWVpb69OlTL/0GAACBz2cBqHXr1urdu7dXW8uWLdWuXTtPe2JiovLy8rR8+XJJP4Wf++67T/Pnz9fAgQNVUFAgSWrRooWcTqckac6cORo4cKB69Oghl8ulBQsWKCsrS4sWLbqMowMAAP7M53eBVSc/P185OTmex4sXL9a5c+c0c+ZMdezY0bPMmjXLU1NUVKTp06fr2muv1YgRI5SXl6eMjAzdeOONvhgCAADwQz67CNqf1eYiKgAA4B9q8/7t1zNAAAAADYEABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALIcABAAALKdOAWjZsmVas2aN5/F//ud/6sorr9SgQYP03Xff1VvnAAAAGkKdAtCf//xntWjRQpKUmZmphQsX6i9/+Yvat2+vxx9/vF47CAAAUN+a1WWj3Nxcde/eXZL0/vvv69e//rWmT5+uwYMH66abbqrP/gEAANS7Os0AtWrVSidOnJAkrV+/XvHx8ZKk4OBg/fjjj/XXOwAAgAZQpxmg4cOHa+rUqerbt6/+9a9/acyYMZKkvXv3qkuXLvXZPwAAgHpXpxmgRYsWadCgQTp27JhSU1PVrl07SdLOnTt177331msHAQAA6pvNGGNqs8G5c+f0wgsv6IEHHlBERERD9cunXC6XnE6niouL5XA4fN0dAABQA7V5/671DFCzZs300ksvqaysrM4dBAAA8KU6fQQWHx+v9PT0eu4KAADA5VGni6BHjx6txMREffnll+rfv79atmzptf62226rl84BAAA0hFpfAyRJTZpUPXFks9kC/uMxrgECACDw1Ob9u04zQOXl5XXqGAAAgD/wmx9DTUpKks1m02OPPVZt3ebNm9W/f38FBwfrmmuu0RtvvFGhJjU1VZGRkbLb7YqMjFRaWloD9doaDh47pU37C3Xo+OlGcfza7s/X4/eVyzFuq/5tGxvOI2rLH54zdZoBkn4KIi+//LL27dsnm82ma6+9Vv/xH/+hX/3qV7Xe1/bt2/Xmm28qOjq62rpDhw7plltu0bRp07RixQp9+umneuihh9ShQwfdddddkn76bbKEhAQ9//zzuuOOO5SWlqbx48dry5YtGjBgQJ3GalVFP5Tq0eQsZRw45mmL69FBr97bV84rmgfc8Wu7P1+P31cux7it+rdtbDiPqC1/es7UaQZoxYoVio+P1xVXXKFHH31UDz/8sFq0aKFhw4bp73//e632derUKU2YMEFvvfWW2rRpU23tG2+8oU6dOmnevHm69tprNXXqVD3wwAN6+eWXPTXz5s3T8OHDlZiYqF69eikxMVHDhg3TvHnz6jJUS3s0OUuffnPcq+3Tb47rkeTdAXn82u7P1+P3lcsxbqv+bRsbziNqy5+eM3UKQC+88IL+8pe/aOXKlXr00Uc1a9YsrVy5UnPnztXzzz9fq33NnDlTY8aM8fyeWHUyMzM1YsQIr7aRI0dqx44dOnv2bLU1W7durXK/brdbLpfLa7G6g8dOKePAMZVddI18mTHKOHCswact6/v4td2fr8fvK5dj3Fb92zY2nEfUlr89Z+oUgA4ePKixY8dWaL/tttt06NChGu8nJSVFu3btUlJSUo3qCwoKFBIS4tUWEhKic+fO6fjx49XWFBQUVLnfpKQkOZ1Oz9JYv+G6Nr77/odq1x8+0bBP1Po+fm335+vx+8rlGLdV/7aNDecRteVvz5k6BaCIiAh9/PHHFdo//vjjGoeH3NxczZo1SytWrFBwcHCNj22z2bwen7+L/8L2ymoubrtQYmKiiouLPUtubm6N+9NYdW57RbXru7RrWe16fzt+bffn6/H7yuUYt1X/to0N5xG15W/PmTpdBP3kk0/q0UcfVVZWlgYNGiSbzaYtW7Zo6dKlmj9/fo32sXPnThUWFqp///6etrKyMmVkZGjhwoVyu91q2rSp1zahoaEVZnIKCwvVrFkzzw+yVlVz8azQhex2u+x2e436bRXXdGiluB4d9Ok3x72mK5vabBrcvb26tm/YJ2p9H7+2+/P1+H3lcozbqn/bxobziNryt+dMnWaAHnzwQaWkpCg7O1uPPfaYZs2apS+//FIrV67Ub3/72xrtY9iwYcrOzlZWVpZniYmJ0YQJE5SVlVUh/EhSbGysNmzY4NW2fv16xcTEqHnz5tXWDBo0qC5DtbRX7+2rwd3be7UN7t5er97bNyCPX9v9+Xr8vnI5xm3Vv21jw3lEbfnTc6ZO3wTdUG666SZdf/31nju2EhMTlZeXp+XLl0v66Tb43r1767e//a2mTZumzMxMzZgxQ8nJyZ7b4Ldu3aq4uDi98MILGjdunFavXq3Zs2fX6jZ4vgna26Hjp3X4xGl1adfSJ/9XV9/Hr+3+fD1+X7kc47bq37ax4TyithrqOVOb9++fFYB27tzp+R6gyMhI9e378xLcxQFo8uTJOnz4sNcPr27evFmPP/649u7dq7CwMD311FOaMWOG137+8Y9/aPbs2Tp48KC6deumF154QXfeeWeN+0EAAgAg8DR4ACosLNQ999yj9PR0XXnllTLGqLi4WEOHDlVKSoo6dOhQ5877AwIQAACBpzbv33W6BuiRRx6Ry+XS3r179f333+vkyZP68ssv5XK59Oijj9ap0wAAAJdLnWaAnE6nNm7cqBtuuMGr/fPPP9eIESNUVFRUX/3zCWaAAAAIPA0+A1ReXu656+pCzZs355fiAQCA36tTALr55ps1a9YsHTlyxNOWl5enxx9/XMOGDau3zgEAADSEOgWghQsXqqSkRF26dFG3bt3UvXt3de3aVSUlJXr11Vfru48AAAD1qk7fBB0REaFdu3Zp48aN2rdvn4wxioyMrNEPmgIAAPharQNQeXm5li5dqlWrVunw4cOy2Wzq2rWr53b46n5zCwAAwB/U6iMwY4xuu+02TZ06VXl5eerTp4+ioqL03XffafLkybrjjjsaqp8AAAD1plYzQEuXLlVGRoY+/vhjDR061GvdJ598ottvv13Lly/XfffdV6+dBAAAqE+1mgFKTk7W008/XSH8SD/dGfb73/9e7777br11DgAAoCHUKgB98cUXGjVqVJXrR48erT179vzsTgEAADSkWgWg77//XiEhIVWuDwkJ0cmTJ392pwAAABpSrQJQWVmZmjWr+rKhpk2b6ty5cz+7UwAAAA2pVhdBG2M0efJk2e32Ste73e566RQAAEBDqlUAmjRp0iVruAMMAAD4u1oFoHfeeaeh+gEAAHDZ1Om3wAAAAAIZAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFgOAQgAAFiOTwPQ66+/rujoaDkcDjkcDsXGxmrt2rVV1k+ePFk2m63CEhUV5alZunRppTVnzpy5HEMCAAABoJkvDx4eHq65c+eqe/fukqRly5Zp3Lhx2r17t1eoOW/+/PmaO3eu5/G5c+d03XXX6e677/aqczgc2r9/v1dbcHBwA4wAAAAEIp8GoLFjx3o9fuGFF/T6669r27ZtlQYgp9Mpp9Ppefz+++/r5MmTuv/++73qbDabQkNDG6bTAAAg4PnNNUBlZWVKSUnR6dOnFRsbW6NtlixZovj4eHXu3Nmr/dSpU+rcubPCw8N16623avfu3dXux+12y+VyeS0AAKDx8nkAys7OVqtWrWS32zVjxgylpaUpMjLyktvl5+dr7dq1mjp1qld7r169tHTpUn3wwQdKTk5WcHCwBg8erAMHDlS5r6SkJM/sktPpVERExM8eFwAA8F82Y4zxZQdKS0uVk5OjoqIipaam6m9/+5s2b958yRCUlJSkV155RUeOHFFQUFCVdeXl5erXr5/i4uK0YMGCSmvcbrfcbrfnscvlUkREhIqLi+VwOOo2MAAAcFm5XC45nc4avX/79BogSQoKCvJcBB0TE6Pt27dr/vz5Wrx4cZXbGGP09ttva+LEidWGH0lq0qSJbrjhhmpngOx2u+x2e90GAAAAAo7PPwK7mDHGazamMps3b9Y333yjKVOm1Gh/WVlZ6tixY311EQAABDifzgA9/fTTGj16tCIiIlRSUqKUlBSlp6dr3bp1kqTExETl5eVp+fLlXtstWbJEAwYMUO/evSvsc86cORo4cKB69Oghl8ulBQsWKCsrS4sWLbosYwIAAP7PpwHo6NGjmjhxovLz8+V0OhUdHa1169Zp+PDhkn660DknJ8drm+LiYqWmpmr+/PmV7rOoqEjTp09XQUGBnE6n+vbtq4yMDN14440NPh4AABAYfH4RtD+qzUVUAADAP9Tm/dvvrgECAABoaAQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOQQgAABgOT4NQK+//rqio6PlcDjkcDgUGxurtWvXVlmfnp4um81WYfn666+96lJTUxUZGSm73a7IyEilpaU19FAAAEAA8WkACg8P19y5c7Vjxw7t2LFDN998s8aNG6e9e/dWu93+/fuVn5/vWXr06OFZl5mZqYSEBE2cOFF79uzRxIkTNX78eH322WcNPRwAABAgbMYY4+tOXKht27Z66aWXNGXKlArr0tPTNXToUJ08eVJXXnllpdsnJCTI5XJ5zSSNGjVKbdq0UXJyco364HK55HQ6VVxcLIfDUadxAACAy6s2799+cw1QWVmZUlJSdPr0acXGxlZb27dvX3Xs2FHDhg3Tpk2bvNZlZmZqxIgRXm0jR47U1q1bq9yf2+2Wy+XyWgAAQOPl8wCUnZ2tVq1ayW63a8aMGUpLS1NkZGSltR07dtSbb76p1NRUrVq1Sj179tSwYcOUkZHhqSkoKFBISIjXdiEhISooKKiyD0lJSXI6nZ4lIiKifgYHAAD8UjNfd6Bnz57KyspSUVGRUlNTNWnSJG3evLnSENSzZ0/17NnT8zg2Nla5ubl6+eWXFRcX52m32Wxe2xljKrRdKDExUU888YTnscvlIgQBANCI+TwABQUFqXv37pKkmJgYbd++XfPnz9fixYtrtP3AgQO1YsUKz+PQ0NAKsz2FhYUVZoUuZLfbZbfb69B7AAAQiHz+EdjFjDFyu901rt+9e7c6duzoeRwbG6sNGzZ41axfv16DBg2qtz4CAIDA5tMZoKefflqjR49WRESESkpKlJKSovT0dK1bt07STx9N5eXlafny5ZKkefPmqUuXLoqKilJpaalWrFih1NRUpaamevY5a9YsxcXF6cUXX9S4ceO0evVqbdy4UVu2bPHJGAEAgP/x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v369hgwZok6dOmn06NHauHGj8vLy9Ic//MFTW1hYqLFjx6pFixbq2rVrpW/QOTk5GjdunFq1aiWHw6Hx48fr6NGjnvXnZ2refvttderUSa1atdKDDz6osrIy/eUvf1FoaKiuuuoqvfDCC177LS4u1vTp03XVVVfJ4XDo5ptv1p49eyRJS5cu1Zw5c7Rnzx7ZbDbZbDYtXbr0kttd3J9rrrlGdrtdlf2MYnl5ud577z3ddtttlf4djTF65JFHNH/+fK1fv1633HKL1/p+/fqpU6dOWrVqladt1apVioiIUN++fSvs77bbblNycnKlxwJQPQIQgGp9//33+uijj/TQQw+pRYsWXutCQ0M1YcIErVy50hMIJk+erMOHD+uTTz7RP/7xD7322msqLCz0bGOM0e23367vv/9emzdv1oYNG/Ttt98qISHBa9/ffvut1q5dq3Xr1ik5OVlvv/22xowZo3//+9/avHmzXnzxRc2ePVvbtm3z7HfMmDEqKCjQhx9+qJ07d6pfv34aNmyYvv/+eyUkJOjJJ59UVFSU8vPzlZ+fr4SEhEtud94333yj//3f/1VqaqqysrIq/Vt98cUXKioqUkxMTIV1586d08SJE/Xee+9p8+bN+uUvf1npPu6//3698847nsdvv/22HnjggUprb7zxRn3++edyu92VrgdQDd/9ED2AQLBt2zYjyaSlpVW6/q9//auRZI4ePWr2799vJJlt27Z51u/bt89IMv/93/9tjDFm/fr1pmnTpiYnJ8dTs3fvXiPJfP7558YYY5599llzxRVXGJfL5akZOXKk6dKliykrK/O09ezZ0yQlJRljjPn444+Nw+EwZ86c8epft27dzOLFiz37ve6667zW13S75s2bm8LCwmr/VmlpaaZp06amvLzcq33IkCEmKCjIBAUFmX379lW67aRJk8y4cePMsWPHjN1uN4cOHTKHDx82wcHB5tixY2bcuHFm0qRJXtvs2bPHSDKHDx+utl8AKmrmy/AFIPCZ/3/mx2azad++fWrWrJnXDEivXr105ZVXeh7v27dPERERioiI8LRFRkbqyiuv1L59+3TDDTdI+unOsQuvowkJCVHTpk3VpEkTr7bzs0s7d+7UqVOn1K5dO6/+/fjjj/r222+r7H9Nt+vcubM6dOhQ7d/ixx9/lN1ul81mq7Dul7/8pbKysjR79mylpKSoWbPK//Pbvn17jRkzRsuWLfPMTrVv377S2vMzcj/88EO1/QJQEQEIQLW6d+8um82mr776SrfffnuF9V9//bXatGmj9u3be4WhqhhjKl1/cXvz5s291ttstkrbysvLJf10/U3Hjh2Vnp5eYd8XBrCL1XS7li1bVrmP89q3b68ffvhBpaWlCgoK8lrXp08fvfLKK4qPj9f48eO1cuXKCuM574EHHtDDDz8sSVq0aFGVxzv/Ed2lghmAirgGCEC12rVrp+HDh+u1117zujtJkgoKCvTuu+8qISFBNptN1157rc6dO6cdO3Z4avbv36+ioiLP48jISOXk5Cg3N9fT9tVXX6m4uFjXXnttnfvZr18/FRQUqFmzZurevbvXcn4GJSgoSGVlZbXerqbO32L/1VdfVbn+k08+0ZYtW3T33XdXeTfZqFGjVFpaqtLSUo0cObLK43355ZcKDw+vdT8BEIAA1MDChQvldrs1cuRIZWRkKDc3V+vWrdPw4cN19dVXe+7G6tmzp0aNGqVp06bps88+086dOzV16lSvi6fj4+MVHR2tCRMmaNeuXfr888913333aciQIZVePFxT8fHxio2N1e23366PPvpIhw8f1tatWzV79mxPIOvSpYsOHTqkrKwsHT9+XG63u0bb1VSHDh3Ur18/bdmypcqa6Ohobdq0SZmZmfr1r3+t0tLSCjVNmzbVvn37tG/fPjVt2rTKff3zn//UiBEjatVHAD8hAAG4pB49emjHjh3q1q2bEhIS1K1bN02fPl1Dhw5VZmam2rZt66l95513FBERoSFDhujOO+/03F5+ns1m0/vvv682bdooLi5O8fHxuuaaa7Ry5cqf1UebzaYPP/xQcXFxeuCBB/SLX/xC99xzjw4fPqyQkBBJ0l133aVRo0Zp6NCh6tChg5KTk2u0XW1Mnz79kt/NExUVpU2bNunzzz/XXXfdVWkIcjgccjgcVe7jzJkzSktL07Rp02rdRwCSzZhKvswCAFAnZ86cUc+ePZWSkqLY2NgGO86iRYu0evVqrV+/vsGOATRmzAABQD0KDg7W8uXLdfz48QY9TvPmzfXqq6826DGAxowZIAAAYDnMAAEAAMshAAEAAMshAAEAAMshAAEAAMshAAEAAMshAAEAAMshAAEAAMshAAEAAMshAAEAAMv5/wDheuL5lL00BQAAAABJRU5ErkJggg==",
2037 | "text/plain": [
2038 | ""
2039 | ]
2040 | },
2041 | "metadata": {},
2042 | "output_type": "display_data"
2043 | }
2044 | ],
2045 | "source": [
2046 | "car_sales.plot(kind=\"scatter\",x=\"Odometer (KM)\",y=\"Doors\")"
2047 | ]
2048 | },
2049 | {
2050 | "cell_type": "code",
2051 | "execution_count": null,
2052 | "id": "ea7a288d",
2053 | "metadata": {},
2054 | "outputs": [],
2055 | "source": []
2056 | }
2057 | ],
2058 | "metadata": {
2059 | "kernelspec": {
2060 | "display_name": "Python 3 (ipykernel)",
2061 | "language": "python",
2062 | "name": "python3"
2063 | },
2064 | "language_info": {
2065 | "codemirror_mode": {
2066 | "name": "ipython",
2067 | "version": 3
2068 | },
2069 | "file_extension": ".py",
2070 | "mimetype": "text/x-python",
2071 | "name": "python",
2072 | "nbconvert_exporter": "python",
2073 | "pygments_lexer": "ipython3",
2074 | "version": "3.11.4"
2075 | }
2076 | },
2077 | "nbformat": 4,
2078 | "nbformat_minor": 5
2079 | }
2080 |
--------------------------------------------------------------------------------