├── 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 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | "
01
012
134
\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 | " \n", 1064 | " \n", 1065 | " \n", 1066 | " \n", 1067 | " \n", 1068 | " \n", 1069 | " \n", 1070 | " \n", 1071 | " \n", 1072 | " \n", 1073 | " \n", 1074 | " \n", 1075 | " \n", 1076 | " \n", 1077 | " \n", 1078 | " \n", 1079 | " \n", 1080 | " \n", 1081 | " \n", 1082 | " \n", 1083 | " \n", 1084 | "
car makecolor
0BMWRed
1TOYOTABlue
2HONDAWhite
\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 | " \n", 1133 | " \n", 1134 | " \n", 1135 | " \n", 1136 | " \n", 1137 | " \n", 1138 | " \n", 1139 | " \n", 1140 | " \n", 1141 | " \n", 1142 | " \n", 1143 | " \n", 1144 | " \n", 1145 | " \n", 1146 | " \n", 1147 | " \n", 1148 | " \n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | " \n", 1159 | " \n", 1160 | " \n", 1161 | " \n", 1162 | " \n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | " \n", 1177 | " \n", 1178 | " \n", 1179 | " \n", 1180 | " \n", 1181 | " \n", 1182 | " \n", 1183 | " \n", 1184 | " \n", 1185 | " \n", 1186 | " \n", 1187 | " \n", 1188 | " \n", 1189 | " \n", 1190 | " \n", 1191 | " \n", 1192 | " \n", 1193 | " \n", 1194 | " \n", 1195 | " \n", 1196 | " \n", 1197 | " \n", 1198 | " \n", 1199 | " \n", 1200 | " \n", 1201 | " \n", 1202 | " \n", 1203 | " \n", 1204 | " \n", 1205 | " \n", 1206 | " \n", 1207 | " \n", 1208 | " \n", 1209 | " \n", 1210 | " \n", 1211 | " \n", 1212 | " \n", 1213 | " \n", 1214 | " \n", 1215 | " \n", 1216 | " \n", 1217 | " \n", 1218 | " \n", 1219 | " \n", 1220 | " \n", 1221 | "
MakeColourOdometer (KM)DoorsPrice
0ToyotaWhite1500434$4,000.00
1HondaRed878994$5,000.00
2ToyotaBlue325493$7,000.00
3BMWBlack111795$22,000.00
4NissanWhite2130954$3,500.00
5ToyotaGreen992134$4,500.00
6HondaBlue456984$7,500.00
7HondaBlue547384$7,000.00
8ToyotaWhite600004$6,250.00
9NissanWhite316004$9,700.00
\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 | " \n", 1276 | " \n", 1277 | " \n", 1278 | " \n", 1279 | " \n", 1280 | " \n", 1281 | " \n", 1282 | " \n", 1283 | " \n", 1284 | " \n", 1285 | " \n", 1286 | " \n", 1287 | " \n", 1288 | " \n", 1289 | " \n", 1290 | " \n", 1291 | " \n", 1292 | " \n", 1293 | " \n", 1294 | " \n", 1295 | " \n", 1296 | " \n", 1297 | " \n", 1298 | " \n", 1299 | " \n", 1300 | " \n", 1301 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | " \n", 1336 | " \n", 1337 | " \n", 1338 | " \n", 1339 | " \n", 1340 | " \n", 1341 | " \n", 1342 | " \n", 1343 | " \n", 1344 | " \n", 1345 | " \n", 1346 | " \n", 1347 | " \n", 1348 | " \n", 1349 | " \n", 1350 | " \n", 1351 | " \n", 1352 | " \n", 1353 | " \n", 1354 | " \n", 1355 | " \n", 1356 | " \n", 1357 | " \n", 1358 | " \n", 1359 | " \n", 1360 | " \n", 1361 | " \n", 1362 | " \n", 1363 | " \n", 1364 | "
MakeColourOdometer (KM)DoorsPrice
0ToyotaWhite1500434$4,000.00
1HondaRed878994$5,000.00
2ToyotaBlue325493$7,000.00
3BMWBlack111795$22,000.00
4NissanWhite2130954$3,500.00
5ToyotaGreen992134$4,500.00
6HondaBlue456984$7,500.00
7HondaBlue547384$7,000.00
8ToyotaWhite600004$6,250.00
9NissanWhite316004$9,700.00
\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 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | " \n", 1438 | " \n", 1439 | " \n", 1440 | " \n", 1441 | " \n", 1442 | " \n", 1443 | " \n", 1444 | " \n", 1445 | " \n", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \n", 1462 | " \n", 1463 | " \n", 1464 | "
Odometer (KM)Doors
count10.00000010.000000
mean78601.4000004.000000
std61983.4717350.471405
min11179.0000003.000000
25%35836.2500004.000000
50%57369.0000004.000000
75%96384.5000004.000000
max213095.0000005.000000
\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 | " \n", 1756 | " \n", 1757 | " \n", 1758 | " \n", 1759 | " \n", 1760 | " \n", 1761 | " \n", 1762 | " \n", 1763 | " \n", 1764 | " \n", 1765 | " \n", 1766 | " \n", 1767 | " \n", 1768 | " \n", 1769 | " \n", 1770 | " \n", 1771 | " \n", 1772 | " \n", 1773 | " \n", 1774 | " \n", 1775 | " \n", 1776 | " \n", 1777 | " \n", 1778 | " \n", 1779 | " \n", 1780 | " \n", 1781 | " \n", 1782 | " \n", 1783 | " \n", 1784 | " \n", 1785 | " \n", 1786 | " \n", 1787 | " \n", 1788 | " \n", 1789 | " \n", 1790 | " \n", 1791 | " \n", 1792 | " \n", 1793 | " \n", 1794 | " \n", 1795 | " \n", 1796 | " \n", 1797 | " \n", 1798 | " \n", 1799 | " \n", 1800 | " \n", 1801 | " \n", 1802 | " \n", 1803 | " \n", 1804 | "
MakeColourOdometer (KM)DoorsPrice
0ToyotaWhite1500434$4,000.00
1HondaRed878994$5,000.00
2ToyotaBlue325493$7,000.00
3BMWBlack111795$22,000.00
4NissanWhite2130954$3,500.00
\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 | " \n", 1853 | " \n", 1854 | " \n", 1855 | " \n", 1856 | " \n", 1857 | " \n", 1858 | " \n", 1859 | " \n", 1860 | " \n", 1861 | " \n", 1862 | " \n", 1863 | " \n", 1864 | " \n", 1865 | " \n", 1866 | " \n", 1867 | " \n", 1868 | " \n", 1869 | " \n", 1870 | " \n", 1871 | " \n", 1872 | " \n", 1873 | " \n", 1874 | " \n", 1875 | " \n", 1876 | " \n", 1877 | "
MakeColourOdometer (KM)DoorsPrice
8ToyotaWhite600004$6,250.00
9NissanWhite316004$9,700.00
\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 | --------------------------------------------------------------------------------