├── Cleaning Data with Python.ipynb ├── Cleaning_Data_with_SQL_Part1.sql ├── Exploring Data with Python (EDA).ipynb ├── Exploring_Data_SQL_Part1.sql ├── LEGO Data Analysis - Answered.ipynb ├── LEGO Data Analysis - Rebrickable.ipynb ├── LEGO_Data_Analysis.sql ├── RFM_Segmentation_Sales_Analysis_Main.sql ├── Visualizing_Data_with_Tableau.sql └── cohort_rentention_analysis.sql /Cleaning Data with Python.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "f78f26ee", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "#importing libraries\n", 11 | "import pandas as pd\n", 12 | "import numpy as np" 13 | ] 14 | }, 15 | { 16 | "cell_type": "code", 17 | "execution_count": 2, 18 | "id": "0ed3cdb1", 19 | "metadata": {}, 20 | "outputs": [], 21 | "source": [ 22 | "#Getting Data\n", 23 | "data = pd.read_excel(\"SBA Table of Size Standards_Effective Aug 19, 2019.xlsx\", sheet_name = 'table_of_size_standards-all')" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 3, 29 | "id": "28101559", 30 | "metadata": {}, 31 | "outputs": [ 32 | { 33 | "data": { 34 | "text/html": [ 35 | "
\n", 36 | "\n", 49 | "\n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | "
NAICS CodesNAICS Industry DescriptionSize Standards \\nin millions of dollarsSize standards in number of employeesFootnotes
0NaNSector 11 – Agriculture, Forestry, Fishing and...NaNNaNNaN
1Subsector 111 – Crop ProductionNaNNaNNaNNaN
2111110Soybean Farming1NaNNaN
3111120Oilseed (except Soybean) Farming1NaNNaN
4111130Dry Pea and Bean Farming1NaNNaN
..................
1144813930Labor Unions and Similar Labor Organizations8NaNNaN
1145813940Political Organizations8NaNNaN
1146813990Other Similar Organizations (except Business, ...8NaNNaN
1147NaNSector 92 – Public AdministrationNaNNaNSee footnote 19
1148NaN(Small business size standards are not establi...NaNNaNNaN
\n", 151 | "

1149 rows × 5 columns

\n", 152 | "
" 153 | ], 154 | "text/plain": [ 155 | " NAICS Codes \\\n", 156 | "0 NaN \n", 157 | "1 Subsector 111 – Crop Production \n", 158 | "2 111110 \n", 159 | "3 111120 \n", 160 | "4 111130 \n", 161 | "... ... \n", 162 | "1144 813930 \n", 163 | "1145 813940 \n", 164 | "1146 813990 \n", 165 | "1147 NaN \n", 166 | "1148 NaN \n", 167 | "\n", 168 | " NAICS Industry Description \\\n", 169 | "0 Sector 11 – Agriculture, Forestry, Fishing and... \n", 170 | "1 NaN \n", 171 | "2 Soybean Farming \n", 172 | "3 Oilseed (except Soybean) Farming \n", 173 | "4 Dry Pea and Bean Farming \n", 174 | "... ... \n", 175 | "1144 Labor Unions and Similar Labor Organizations \n", 176 | "1145 Political Organizations \n", 177 | "1146 Other Similar Organizations (except Business, ... \n", 178 | "1147 Sector 92 – Public Administration \n", 179 | "1148 (Small business size standards are not establi... \n", 180 | "\n", 181 | " Size Standards \\nin millions of dollars \\\n", 182 | "0 NaN \n", 183 | "1 NaN \n", 184 | "2 1 \n", 185 | "3 1 \n", 186 | "4 1 \n", 187 | "... ... \n", 188 | "1144 8 \n", 189 | "1145 8 \n", 190 | "1146 8 \n", 191 | "1147 NaN \n", 192 | "1148 NaN \n", 193 | "\n", 194 | " Size standards in number of employees Footnotes \n", 195 | "0 NaN NaN \n", 196 | "1 NaN NaN \n", 197 | "2 NaN NaN \n", 198 | "3 NaN NaN \n", 199 | "4 NaN NaN \n", 200 | "... ... ... \n", 201 | "1144 NaN NaN \n", 202 | "1145 NaN NaN \n", 203 | "1146 NaN NaN \n", 204 | "1147 NaN See footnote 19 \n", 205 | "1148 NaN NaN \n", 206 | "\n", 207 | "[1149 rows x 5 columns]" 208 | ] 209 | }, 210 | "execution_count": 3, 211 | "metadata": {}, 212 | "output_type": "execute_result" 213 | } 214 | ], 215 | "source": [ 216 | "data" 217 | ] 218 | }, 219 | { 220 | "cell_type": "code", 221 | "execution_count": 4, 222 | "id": "9b5e1e9d", 223 | "metadata": {}, 224 | "outputs": [ 225 | { 226 | "data": { 227 | "text/html": [ 228 | "
\n", 229 | "\n", 242 | "\n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | "
NAICS CodesNAICS Industry DescriptionSize Standards \\nin millions of dollarsSize standards in number of employeesFootnotes
0NaNSector 11 – Agriculture, Forestry, Fishing and...NaNNaNNaN
1Subsector 111 – Crop ProductionNaNNaNNaNNaN
2111110Soybean Farming1NaNNaN
3111120Oilseed (except Soybean) Farming1NaNNaN
4111130Dry Pea and Bean Farming1NaNNaN
\n", 296 | "
" 297 | ], 298 | "text/plain": [ 299 | " NAICS Codes \\\n", 300 | "0 NaN \n", 301 | "1 Subsector 111 – Crop Production \n", 302 | "2 111110 \n", 303 | "3 111120 \n", 304 | "4 111130 \n", 305 | "\n", 306 | " NAICS Industry Description \\\n", 307 | "0 Sector 11 – Agriculture, Forestry, Fishing and... \n", 308 | "1 NaN \n", 309 | "2 Soybean Farming \n", 310 | "3 Oilseed (except Soybean) Farming \n", 311 | "4 Dry Pea and Bean Farming \n", 312 | "\n", 313 | " Size Standards \\nin millions of dollars \\\n", 314 | "0 NaN \n", 315 | "1 NaN \n", 316 | "2 1 \n", 317 | "3 1 \n", 318 | "4 1 \n", 319 | "\n", 320 | " Size standards in number of employees Footnotes \n", 321 | "0 NaN NaN \n", 322 | "1 NaN NaN \n", 323 | "2 NaN NaN \n", 324 | "3 NaN NaN \n", 325 | "4 NaN NaN " 326 | ] 327 | }, 328 | "execution_count": 4, 329 | "metadata": {}, 330 | "output_type": "execute_result" 331 | } 332 | ], 333 | "source": [ 334 | "data.head()" 335 | ] 336 | }, 337 | { 338 | "cell_type": "code", 339 | "execution_count": 5, 340 | "id": "d4cd6801", 341 | "metadata": {}, 342 | "outputs": [ 343 | { 344 | "data": { 345 | "text/html": [ 346 | "
\n", 347 | "\n", 360 | "\n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | "
NAICS CodesNAICS Industry DescriptionSize Standards \\nin millions of dollarsSize standards in number of employeesFootnotes
1144813930Labor Unions and Similar Labor Organizations8NaNNaN
1145813940Political Organizations8NaNNaN
1146813990Other Similar Organizations (except Business, ...8NaNNaN
1147NaNSector 92 – Public AdministrationNaNNaNSee footnote 19
1148NaN(Small business size standards are not establi...NaNNaNNaN
\n", 414 | "
" 415 | ], 416 | "text/plain": [ 417 | " NAICS Codes NAICS Industry Description \\\n", 418 | "1144 813930 Labor Unions and Similar Labor Organizations \n", 419 | "1145 813940 Political Organizations \n", 420 | "1146 813990 Other Similar Organizations (except Business, ... \n", 421 | "1147 NaN Sector 92 – Public Administration \n", 422 | "1148 NaN (Small business size standards are not establi... \n", 423 | "\n", 424 | " Size Standards \\nin millions of dollars \\\n", 425 | "1144 8 \n", 426 | "1145 8 \n", 427 | "1146 8 \n", 428 | "1147 NaN \n", 429 | "1148 NaN \n", 430 | "\n", 431 | " Size standards in number of employees Footnotes \n", 432 | "1144 NaN NaN \n", 433 | "1145 NaN NaN \n", 434 | "1146 NaN NaN \n", 435 | "1147 NaN See footnote 19 \n", 436 | "1148 NaN NaN " 437 | ] 438 | }, 439 | "execution_count": 5, 440 | "metadata": {}, 441 | "output_type": "execute_result" 442 | } 443 | ], 444 | "source": [ 445 | "data.tail()" 446 | ] 447 | }, 448 | { 449 | "cell_type": "code", 450 | "execution_count": 6, 451 | "id": "347079e1", 452 | "metadata": {}, 453 | "outputs": [ 454 | { 455 | "name": "stdout", 456 | "output_type": "stream", 457 | "text": [ 458 | "\n", 459 | "RangeIndex: 1149 entries, 0 to 1148\n", 460 | "Data columns (total 5 columns):\n", 461 | " # Column Non-Null Count Dtype \n", 462 | "--- ------ -------------- ----- \n", 463 | " 0 NAICS Codes 1126 non-null object \n", 464 | " 1 NAICS Industry Description 1060 non-null object \n", 465 | " 2 Size Standards \n", 466 | "in millions of dollars 532 non-null object \n", 467 | " 3 Size standards in number of employees 505 non-null float64\n", 468 | " 4 Footnotes 39 non-null object \n", 469 | "dtypes: float64(1), object(4)\n", 470 | "memory usage: 45.0+ KB\n" 471 | ] 472 | } 473 | ], 474 | "source": [ 475 | "data.info()" 476 | ] 477 | }, 478 | { 479 | "cell_type": "code", 480 | "execution_count": 7, 481 | "id": "1bae2125", 482 | "metadata": {}, 483 | "outputs": [ 484 | { 485 | "data": { 486 | "text/plain": [ 487 | "NAICS Codes 23\n", 488 | "NAICS Industry Description 89\n", 489 | "Size Standards \\nin millions of dollars 617\n", 490 | "Size standards in number of employees 644\n", 491 | "Footnotes 1110\n", 492 | "dtype: int64" 493 | ] 494 | }, 495 | "execution_count": 7, 496 | "metadata": {}, 497 | "output_type": "execute_result" 498 | } 499 | ], 500 | "source": [ 501 | "#checking for null\n", 502 | "data.isnull().sum()" 503 | ] 504 | }, 505 | { 506 | "cell_type": "code", 507 | "execution_count": 9, 508 | "id": "559ad113", 509 | "metadata": {}, 510 | "outputs": [], 511 | "source": [ 512 | "#selecting only the relevant records\n", 513 | "data = data [data['NAICS Codes'].isnull()]" 514 | ] 515 | }, 516 | { 517 | "cell_type": "code", 518 | "execution_count": 10, 519 | "id": "946bd789", 520 | "metadata": {}, 521 | "outputs": [ 522 | { 523 | "name": "stdout", 524 | "output_type": "stream", 525 | "text": [ 526 | "\n", 527 | "Int64Index: 23 entries, 0 to 1148\n", 528 | "Data columns (total 5 columns):\n", 529 | " # Column Non-Null Count Dtype \n", 530 | "--- ------ -------------- ----- \n", 531 | " 0 NAICS Codes 0 non-null object \n", 532 | " 1 NAICS Industry Description 23 non-null object \n", 533 | " 2 Size Standards \n", 534 | "in millions of dollars 0 non-null object \n", 535 | " 3 Size standards in number of employees 0 non-null float64\n", 536 | " 4 Footnotes 1 non-null object \n", 537 | "dtypes: float64(1), object(4)\n", 538 | "memory usage: 1.1+ KB\n" 539 | ] 540 | } 541 | ], 542 | "source": [ 543 | "data.info()" 544 | ] 545 | }, 546 | { 547 | "cell_type": "code", 548 | "execution_count": 11, 549 | "id": "c30a02d7", 550 | "metadata": {}, 551 | "outputs": [ 552 | { 553 | "data": { 554 | "text/html": [ 555 | "
\n", 556 | "\n", 569 | "\n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | "
NAICS CodesNAICS Industry DescriptionSize Standards \\nin millions of dollarsSize standards in number of employeesFootnotes
0NaNSector 11 – Agriculture, Forestry, Fishing and...NaNNaNNaN
71NaNSector 21 – Mining, Quarrying, and Oil and Gas...NaNNaNNaN
103NaNSector 22 – UtilitiesNaNNaNNaN
119NaNSector 23 – ConstructionNaNNaNNaN
156NaNSector 31 – 33 – ManufacturingNaNNaNNaN
\n", 623 | "
" 624 | ], 625 | "text/plain": [ 626 | " NAICS Codes NAICS Industry Description \\\n", 627 | "0 NaN Sector 11 – Agriculture, Forestry, Fishing and... \n", 628 | "71 NaN Sector 21 – Mining, Quarrying, and Oil and Gas... \n", 629 | "103 NaN Sector 22 – Utilities \n", 630 | "119 NaN Sector 23 – Construction \n", 631 | "156 NaN Sector 31 – 33 – Manufacturing \n", 632 | "\n", 633 | " Size Standards \\nin millions of dollars \\\n", 634 | "0 NaN \n", 635 | "71 NaN \n", 636 | "103 NaN \n", 637 | "119 NaN \n", 638 | "156 NaN \n", 639 | "\n", 640 | " Size standards in number of employees Footnotes \n", 641 | "0 NaN NaN \n", 642 | "71 NaN NaN \n", 643 | "103 NaN NaN \n", 644 | "119 NaN NaN \n", 645 | "156 NaN NaN " 646 | ] 647 | }, 648 | "execution_count": 11, 649 | "metadata": {}, 650 | "output_type": "execute_result" 651 | } 652 | ], 653 | "source": [ 654 | "data.head()" 655 | ] 656 | }, 657 | { 658 | "cell_type": "code", 659 | "execution_count": 12, 660 | "id": "5e56fe75", 661 | "metadata": {}, 662 | "outputs": [ 663 | { 664 | "name": "stderr", 665 | "output_type": "stream", 666 | "text": [ 667 | "C:\\Users\\AFRIMP~1\\AppData\\Local\\Temp/ipykernel_37288/359482711.py:1: SettingWithCopyWarning: \n", 668 | "A value is trying to be set on a copy of a slice from a DataFrame.\n", 669 | "Try using .loc[row_indexer,col_indexer] = value instead\n", 670 | "\n", 671 | "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", 672 | " data['LookupCodes'] = data['NAICS Industry Description'].str.slice(start = 7, stop = 9)\n" 673 | ] 674 | } 675 | ], 676 | "source": [ 677 | "data['LookupCodes'] = data['NAICS Industry Description'].str.slice(start = 7, stop = 9)" 678 | ] 679 | }, 680 | { 681 | "cell_type": "code", 682 | "execution_count": 13, 683 | "id": "91bb5074", 684 | "metadata": {}, 685 | "outputs": [ 686 | { 687 | "data": { 688 | "text/html": [ 689 | "
\n", 690 | "\n", 703 | "\n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | "
NAICS CodesNAICS Industry DescriptionSize Standards \\nin millions of dollarsSize standards in number of employeesFootnotesLookupCodes
0NaNSector 11 – Agriculture, Forestry, Fishing and...NaNNaNNaN11
71NaNSector 21 – Mining, Quarrying, and Oil and Gas...NaNNaNNaN21
103NaNSector 22 – UtilitiesNaNNaNNaN22
119NaNSector 23 – ConstructionNaNNaNNaN23
156NaNSector 31 – 33 – ManufacturingNaNNaNNaN31
\n", 763 | "
" 764 | ], 765 | "text/plain": [ 766 | " NAICS Codes NAICS Industry Description \\\n", 767 | "0 NaN Sector 11 – Agriculture, Forestry, Fishing and... \n", 768 | "71 NaN Sector 21 – Mining, Quarrying, and Oil and Gas... \n", 769 | "103 NaN Sector 22 – Utilities \n", 770 | "119 NaN Sector 23 – Construction \n", 771 | "156 NaN Sector 31 – 33 – Manufacturing \n", 772 | "\n", 773 | " Size Standards \\nin millions of dollars \\\n", 774 | "0 NaN \n", 775 | "71 NaN \n", 776 | "103 NaN \n", 777 | "119 NaN \n", 778 | "156 NaN \n", 779 | "\n", 780 | " Size standards in number of employees Footnotes LookupCodes \n", 781 | "0 NaN NaN 11 \n", 782 | "71 NaN NaN 21 \n", 783 | "103 NaN NaN 22 \n", 784 | "119 NaN NaN 23 \n", 785 | "156 NaN NaN 31 " 786 | ] 787 | }, 788 | "execution_count": 13, 789 | "metadata": {}, 790 | "output_type": "execute_result" 791 | } 792 | ], 793 | "source": [ 794 | "data.head()" 795 | ] 796 | }, 797 | { 798 | "cell_type": "code", 799 | "execution_count": 14, 800 | "id": "bf7c114c", 801 | "metadata": {}, 802 | "outputs": [ 803 | { 804 | "data": { 805 | "text/plain": [ 806 | "0 54\n", 807 | "71 57\n", 808 | "103 21\n", 809 | "119 24\n", 810 | "156 30\n", 811 | "538 27\n", 812 | "539 537\n", 813 | "614 29\n", 814 | "615 537\n", 815 | "694 47\n", 816 | "764 23\n", 817 | "802 33\n", 818 | "847 46\n", 819 | "875 59\n", 820 | "932 51\n", 821 | "936 81\n", 822 | "984 32\n", 823 | "1004 45\n", 824 | "1048 46\n", 825 | "1077 43\n", 826 | "1095 26\n", 827 | "1147 33\n", 828 | "1148 284\n", 829 | "Name: NAICS Industry Description, dtype: int64" 830 | ] 831 | }, 832 | "execution_count": 14, 833 | "metadata": {}, 834 | "output_type": "execute_result" 835 | } 836 | ], 837 | "source": [ 838 | "data['NAICS Industry Description'].str.len()" 839 | ] 840 | }, 841 | { 842 | "cell_type": "code", 843 | "execution_count": 17, 844 | "id": "c663ca5f", 845 | "metadata": {}, 846 | "outputs": [ 847 | { 848 | "name": "stderr", 849 | "output_type": "stream", 850 | "text": [ 851 | "C:\\Users\\AFRIMP~1\\AppData\\Local\\Temp/ipykernel_37288/4027759782.py:1: SettingWithCopyWarning: \n", 852 | "A value is trying to be set on a copy of a slice from a DataFrame.\n", 853 | "Try using .loc[row_indexer,col_indexer] = value instead\n", 854 | "\n", 855 | "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", 856 | " data['Sector'] = data['NAICS Industry Description'].str.slice(start = 12, stop = 538)\n" 857 | ] 858 | } 859 | ], 860 | "source": [ 861 | "data['Sector'] = data['NAICS Industry Description'].str.slice(start = 12, stop = 538)" 862 | ] 863 | }, 864 | { 865 | "cell_type": "code", 866 | "execution_count": 18, 867 | "id": "5906f4be", 868 | "metadata": {}, 869 | "outputs": [ 870 | { 871 | "data": { 872 | "text/html": [ 873 | "
\n", 874 | "\n", 887 | "\n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | " \n", 897 | " \n", 898 | " \n", 899 | " \n", 900 | " \n", 901 | " \n", 902 | " \n", 903 | " \n", 904 | " \n", 905 | " \n", 906 | " \n", 907 | " \n", 908 | " \n", 909 | " \n", 910 | " \n", 911 | " \n", 912 | " \n", 913 | " \n", 914 | " \n", 915 | " \n", 916 | " \n", 917 | " \n", 918 | " \n", 919 | " \n", 920 | " \n", 921 | " \n", 922 | " \n", 923 | " \n", 924 | " \n", 925 | " \n", 926 | " \n", 927 | " \n", 928 | " \n", 929 | " \n", 930 | " \n", 931 | " \n", 932 | " \n", 933 | " \n", 934 | " \n", 935 | " \n", 936 | " \n", 937 | " \n", 938 | " \n", 939 | " \n", 940 | " \n", 941 | " \n", 942 | " \n", 943 | " \n", 944 | " \n", 945 | " \n", 946 | " \n", 947 | " \n", 948 | " \n", 949 | " \n", 950 | " \n", 951 | " \n", 952 | "
NAICS CodesNAICS Industry DescriptionSize Standards \\nin millions of dollarsSize standards in number of employeesFootnotesLookupCodesSector
0NaNSector 11 – Agriculture, Forestry, Fishing and...NaNNaNNaN11Agriculture, Forestry, Fishing and Hunting
71NaNSector 21 – Mining, Quarrying, and Oil and Gas...NaNNaNNaN21Mining, Quarrying, and Oil and Gas Extraction
103NaNSector 22 – UtilitiesNaNNaNNaN22Utilities
119NaNSector 23 – ConstructionNaNNaNNaN23Construction
156NaNSector 31 – 33 – ManufacturingNaNNaNNaN3133 – Manufacturing
\n", 953 | "
" 954 | ], 955 | "text/plain": [ 956 | " NAICS Codes NAICS Industry Description \\\n", 957 | "0 NaN Sector 11 – Agriculture, Forestry, Fishing and... \n", 958 | "71 NaN Sector 21 – Mining, Quarrying, and Oil and Gas... \n", 959 | "103 NaN Sector 22 – Utilities \n", 960 | "119 NaN Sector 23 – Construction \n", 961 | "156 NaN Sector 31 – 33 – Manufacturing \n", 962 | "\n", 963 | " Size Standards \\nin millions of dollars \\\n", 964 | "0 NaN \n", 965 | "71 NaN \n", 966 | "103 NaN \n", 967 | "119 NaN \n", 968 | "156 NaN \n", 969 | "\n", 970 | " Size standards in number of employees Footnotes LookupCodes \\\n", 971 | "0 NaN NaN 11 \n", 972 | "71 NaN NaN 21 \n", 973 | "103 NaN NaN 22 \n", 974 | "119 NaN NaN 23 \n", 975 | "156 NaN NaN 31 \n", 976 | "\n", 977 | " Sector \n", 978 | "0 Agriculture, Forestry, Fishing and Hunting \n", 979 | "71 Mining, Quarrying, and Oil and Gas Extraction \n", 980 | "103 Utilities \n", 981 | "119 Construction \n", 982 | "156 33 – Manufacturing " 983 | ] 984 | }, 985 | "execution_count": 18, 986 | "metadata": {}, 987 | "output_type": "execute_result" 988 | } 989 | ], 990 | "source": [ 991 | "data.head()" 992 | ] 993 | }, 994 | { 995 | "cell_type": "code", 996 | "execution_count": 22, 997 | "id": "920b9475", 998 | "metadata": {}, 999 | "outputs": [], 1000 | "source": [ 1001 | "data = data [['NAICS Industry Description', 'LookupCodes', 'Sector']]" 1002 | ] 1003 | }, 1004 | { 1005 | "cell_type": "code", 1006 | "execution_count": 23, 1007 | "id": "477b52c6", 1008 | "metadata": {}, 1009 | "outputs": [ 1010 | { 1011 | "name": "stdout", 1012 | "output_type": "stream", 1013 | "text": [ 1014 | "\n", 1015 | "Int64Index: 23 entries, 0 to 1148\n", 1016 | "Data columns (total 3 columns):\n", 1017 | " # Column Non-Null Count Dtype \n", 1018 | "--- ------ -------------- ----- \n", 1019 | " 0 NAICS Industry Description 23 non-null object\n", 1020 | " 1 LookupCodes 23 non-null object\n", 1021 | " 2 Sector 23 non-null object\n", 1022 | "dtypes: object(3)\n", 1023 | "memory usage: 736.0+ bytes\n" 1024 | ] 1025 | } 1026 | ], 1027 | "source": [ 1028 | "data.info()" 1029 | ] 1030 | }, 1031 | { 1032 | "cell_type": "code", 1033 | "execution_count": 25, 1034 | "id": "42e8a010", 1035 | "metadata": {}, 1036 | "outputs": [ 1037 | { 1038 | "data": { 1039 | "text/html": [ 1040 | "
\n", 1041 | "\n", 1054 | "\n", 1055 | " \n", 1056 | " \n", 1057 | " \n", 1058 | " \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 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | " \n", 1104 | " \n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | " \n", 1111 | " \n", 1112 | " \n", 1113 | " \n", 1114 | " \n", 1115 | " \n", 1116 | " \n", 1117 | " \n", 1118 | " \n", 1119 | " \n", 1120 | " \n", 1121 | " \n", 1122 | " \n", 1123 | " \n", 1124 | " \n", 1125 | " \n", 1126 | " \n", 1127 | " \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 | "
NAICS Industry DescriptionLookupCodesSector
0Sector 11 – Agriculture, Forestry, Fishing and...11Agriculture, Forestry, Fishing and Hunting
71Sector 21 – Mining, Quarrying, and Oil and Gas...21Mining, Quarrying, and Oil and Gas Extraction
103Sector 22 – Utilities22Utilities
119Sector 23 – Construction23Construction
156Sector 31 – 33 – Manufacturing3133 – Manufacturing
538Sector 42 – Wholesale Trade42Wholesale Trade
539(These NAICS codes shall not be used to classi...NAcodes shall not be used to classify Governmen...
614Sector 44 - 45 – Retail Trade4445 – Retail Trade
615(These NAICS codes shall not be used to classi...NAcodes shall not be used to classify Governmen...
694Sector 48 - 49 – Transportation and Warehousing4849 – Transportation and Warehousing
764Sector 51 – Information51Information
802Sector 52 – Finance and Insurance52Finance and Insurance
847Sector 53 – Real Estate and Rental and Leasing53Real Estate and Rental and Leasing
875Sector 54 – Professional, Scientific and Techn...54Professional, Scientific and Technical Services
932Sector 55 – Management of Companies and Enterp...55Management of Companies and Enterprises
936Sector 56 – Administrative and Support, Waste ...56Administrative and Support, Waste Management a...
984Sector 61 – Educational Services61Educational Services
1004Sector 62 – Health Care and Social Assistance62Health Care and Social Assistance
1048Sector 71 – Arts, Entertainment and Recreation71Arts, Entertainment and Recreation
1077Sector 72 – Accommodation and Food Services72Accommodation and Food Services
1095Sector 81 – Other Services81Other Services
1147Sector 92 – Public Administration92Public Administration
1148(Small business size standards are not establi...buess size standards are not established for thi...
\n", 1204 | "
" 1205 | ], 1206 | "text/plain": [ 1207 | " NAICS Industry Description LookupCodes \\\n", 1208 | "0 Sector 11 – Agriculture, Forestry, Fishing and... 11 \n", 1209 | "71 Sector 21 – Mining, Quarrying, and Oil and Gas... 21 \n", 1210 | "103 Sector 22 – Utilities 22 \n", 1211 | "119 Sector 23 – Construction 23 \n", 1212 | "156 Sector 31 – 33 – Manufacturing 31 \n", 1213 | "538 Sector 42 – Wholesale Trade 42 \n", 1214 | "539 (These NAICS codes shall not be used to classi... NA \n", 1215 | "614 Sector 44 - 45 – Retail Trade 44 \n", 1216 | "615 (These NAICS codes shall not be used to classi... NA \n", 1217 | "694 Sector 48 - 49 – Transportation and Warehousing 48 \n", 1218 | "764 Sector 51 – Information 51 \n", 1219 | "802 Sector 52 – Finance and Insurance 52 \n", 1220 | "847 Sector 53 – Real Estate and Rental and Leasing 53 \n", 1221 | "875 Sector 54 – Professional, Scientific and Techn... 54 \n", 1222 | "932 Sector 55 – Management of Companies and Enterp... 55 \n", 1223 | "936 Sector 56 – Administrative and Support, Waste ... 56 \n", 1224 | "984 Sector 61 – Educational Services 61 \n", 1225 | "1004 Sector 62 – Health Care and Social Assistance 62 \n", 1226 | "1048 Sector 71 – Arts, Entertainment and Recreation 71 \n", 1227 | "1077 Sector 72 – Accommodation and Food Services 72 \n", 1228 | "1095 Sector 81 – Other Services 81 \n", 1229 | "1147 Sector 92 – Public Administration 92 \n", 1230 | "1148 (Small business size standards are not establi... bu \n", 1231 | "\n", 1232 | " Sector \n", 1233 | "0 Agriculture, Forestry, Fishing and Hunting \n", 1234 | "71 Mining, Quarrying, and Oil and Gas Extraction \n", 1235 | "103 Utilities \n", 1236 | "119 Construction \n", 1237 | "156 33 – Manufacturing \n", 1238 | "538 Wholesale Trade \n", 1239 | "539 codes shall not be used to classify Governmen... \n", 1240 | "614 45 – Retail Trade \n", 1241 | "615 codes shall not be used to classify Governmen... \n", 1242 | "694 49 – Transportation and Warehousing \n", 1243 | "764 Information \n", 1244 | "802 Finance and Insurance \n", 1245 | "847 Real Estate and Rental and Leasing \n", 1246 | "875 Professional, Scientific and Technical Services \n", 1247 | "932 Management of Companies and Enterprises \n", 1248 | "936 Administrative and Support, Waste Management a... \n", 1249 | "984 Educational Services \n", 1250 | "1004 Health Care and Social Assistance \n", 1251 | "1048 Arts, Entertainment and Recreation \n", 1252 | "1077 Accommodation and Food Services \n", 1253 | "1095 Other Services \n", 1254 | "1147 Public Administration \n", 1255 | "1148 ess size standards are not established for thi... " 1256 | ] 1257 | }, 1258 | "execution_count": 25, 1259 | "metadata": {}, 1260 | "output_type": "execute_result" 1261 | } 1262 | ], 1263 | "source": [ 1264 | "data" 1265 | ] 1266 | }, 1267 | { 1268 | "cell_type": "code", 1269 | "execution_count": 27, 1270 | "id": "ffb3d068", 1271 | "metadata": {}, 1272 | "outputs": [], 1273 | "source": [ 1274 | "data = data[data['LookupCodes'].str.isnumeric()]" 1275 | ] 1276 | }, 1277 | { 1278 | "cell_type": "code", 1279 | "execution_count": 28, 1280 | "id": "ac50fdd3", 1281 | "metadata": {}, 1282 | "outputs": [ 1283 | { 1284 | "name": "stderr", 1285 | "output_type": "stream", 1286 | "text": [ 1287 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexing.py:1732: SettingWithCopyWarning: \n", 1288 | "A value is trying to be set on a copy of a slice from a DataFrame\n", 1289 | "\n", 1290 | "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", 1291 | " self._setitem_single_block(indexer, value, name)\n", 1292 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexing.py:723: SettingWithCopyWarning: \n", 1293 | "A value is trying to be set on a copy of a slice from a DataFrame\n", 1294 | "\n", 1295 | "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", 1296 | " iloc._setitem_with_indexer(indexer, value, self.name)\n" 1297 | ] 1298 | } 1299 | ], 1300 | "source": [ 1301 | "# replacing some values in sector\n", 1302 | "data.loc[ data['Sector'] == '33 – Manufacturing', 'Sector'] = 'Manufacturing'" 1303 | ] 1304 | }, 1305 | { 1306 | "cell_type": "code", 1307 | "execution_count": 29, 1308 | "id": "6e94eeba", 1309 | "metadata": {}, 1310 | "outputs": [ 1311 | { 1312 | "data": { 1313 | "text/html": [ 1314 | "
\n", 1315 | "\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 | " \n", 1365 | " \n", 1366 | " \n", 1367 | " \n", 1368 | " \n", 1369 | " \n", 1370 | " \n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \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 | "
NAICS Industry DescriptionLookupCodesSector
0Sector 11 – Agriculture, Forestry, Fishing and...11Agriculture, Forestry, Fishing and Hunting
71Sector 21 – Mining, Quarrying, and Oil and Gas...21Mining, Quarrying, and Oil and Gas Extraction
103Sector 22 – Utilities22Utilities
119Sector 23 – Construction23Construction
156Sector 31 – 33 – Manufacturing31Manufacturing
538Sector 42 – Wholesale Trade42Wholesale Trade
614Sector 44 - 45 – Retail Trade4445 – Retail Trade
694Sector 48 - 49 – Transportation and Warehousing4849 – Transportation and Warehousing
764Sector 51 – Information51Information
802Sector 52 – Finance and Insurance52Finance and Insurance
847Sector 53 – Real Estate and Rental and Leasing53Real Estate and Rental and Leasing
875Sector 54 – Professional, Scientific and Techn...54Professional, Scientific and Technical Services
932Sector 55 – Management of Companies and Enterp...55Management of Companies and Enterprises
936Sector 56 – Administrative and Support, Waste ...56Administrative and Support, Waste Management a...
984Sector 61 – Educational Services61Educational Services
1004Sector 62 – Health Care and Social Assistance62Health Care and Social Assistance
1048Sector 71 – Arts, Entertainment and Recreation71Arts, Entertainment and Recreation
1077Sector 72 – Accommodation and Food Services72Accommodation and Food Services
1095Sector 81 – Other Services81Other Services
1147Sector 92 – Public Administration92Public Administration
\n", 1460 | "
" 1461 | ], 1462 | "text/plain": [ 1463 | " NAICS Industry Description LookupCodes \\\n", 1464 | "0 Sector 11 – Agriculture, Forestry, Fishing and... 11 \n", 1465 | "71 Sector 21 – Mining, Quarrying, and Oil and Gas... 21 \n", 1466 | "103 Sector 22 – Utilities 22 \n", 1467 | "119 Sector 23 – Construction 23 \n", 1468 | "156 Sector 31 – 33 – Manufacturing 31 \n", 1469 | "538 Sector 42 – Wholesale Trade 42 \n", 1470 | "614 Sector 44 - 45 – Retail Trade 44 \n", 1471 | "694 Sector 48 - 49 – Transportation and Warehousing 48 \n", 1472 | "764 Sector 51 – Information 51 \n", 1473 | "802 Sector 52 – Finance and Insurance 52 \n", 1474 | "847 Sector 53 – Real Estate and Rental and Leasing 53 \n", 1475 | "875 Sector 54 – Professional, Scientific and Techn... 54 \n", 1476 | "932 Sector 55 – Management of Companies and Enterp... 55 \n", 1477 | "936 Sector 56 – Administrative and Support, Waste ... 56 \n", 1478 | "984 Sector 61 – Educational Services 61 \n", 1479 | "1004 Sector 62 – Health Care and Social Assistance 62 \n", 1480 | "1048 Sector 71 – Arts, Entertainment and Recreation 71 \n", 1481 | "1077 Sector 72 – Accommodation and Food Services 72 \n", 1482 | "1095 Sector 81 – Other Services 81 \n", 1483 | "1147 Sector 92 – Public Administration 92 \n", 1484 | "\n", 1485 | " Sector \n", 1486 | "0 Agriculture, Forestry, Fishing and Hunting \n", 1487 | "71 Mining, Quarrying, and Oil and Gas Extraction \n", 1488 | "103 Utilities \n", 1489 | "119 Construction \n", 1490 | "156 Manufacturing \n", 1491 | "538 Wholesale Trade \n", 1492 | "614 45 – Retail Trade \n", 1493 | "694 49 – Transportation and Warehousing \n", 1494 | "764 Information \n", 1495 | "802 Finance and Insurance \n", 1496 | "847 Real Estate and Rental and Leasing \n", 1497 | "875 Professional, Scientific and Technical Services \n", 1498 | "932 Management of Companies and Enterprises \n", 1499 | "936 Administrative and Support, Waste Management a... \n", 1500 | "984 Educational Services \n", 1501 | "1004 Health Care and Social Assistance \n", 1502 | "1048 Arts, Entertainment and Recreation \n", 1503 | "1077 Accommodation and Food Services \n", 1504 | "1095 Other Services \n", 1505 | "1147 Public Administration " 1506 | ] 1507 | }, 1508 | "execution_count": 29, 1509 | "metadata": {}, 1510 | "output_type": "execute_result" 1511 | } 1512 | ], 1513 | "source": [ 1514 | "data" 1515 | ] 1516 | }, 1517 | { 1518 | "cell_type": "code", 1519 | "execution_count": 30, 1520 | "id": "a2b7c1fc", 1521 | "metadata": {}, 1522 | "outputs": [ 1523 | { 1524 | "name": "stderr", 1525 | "output_type": "stream", 1526 | "text": [ 1527 | "C:\\Users\\AFRIMP~1\\AppData\\Local\\Temp/ipykernel_37288/1237734635.py:1: SettingWithCopyWarning: \n", 1528 | "A value is trying to be set on a copy of a slice from a DataFrame.\n", 1529 | "Try using .loc[row_indexer,col_indexer] = value instead\n", 1530 | "\n", 1531 | "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", 1532 | " data['Sector'] = np.where(data['Sector'] == '45 – Retail Trade', 'Retail Trade', data['Sector'])\n", 1533 | "C:\\Users\\AFRIMP~1\\AppData\\Local\\Temp/ipykernel_37288/1237734635.py:2: SettingWithCopyWarning: \n", 1534 | "A value is trying to be set on a copy of a slice from a DataFrame.\n", 1535 | "Try using .loc[row_indexer,col_indexer] = value instead\n", 1536 | "\n", 1537 | "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", 1538 | " data['Sector'] = np.where(data['Sector'] == '49 – Transportation and Warehousing', 'Transportation and Warehousing', data['Sector'])\n" 1539 | ] 1540 | } 1541 | ], 1542 | "source": [ 1543 | " data['Sector'] = np.where(data['Sector'] == '45 – Retail Trade', 'Retail Trade', data['Sector'])\n", 1544 | "data['Sector'] = np.where(data['Sector'] == '49 – Transportation and Warehousing', 'Transportation and Warehousing', data['Sector'])" 1545 | ] 1546 | }, 1547 | { 1548 | "cell_type": "code", 1549 | "execution_count": 31, 1550 | "id": "1b5c30ad", 1551 | "metadata": {}, 1552 | "outputs": [ 1553 | { 1554 | "data": { 1555 | "text/html": [ 1556 | "
\n", 1557 | "\n", 1570 | "\n", 1571 | " \n", 1572 | " \n", 1573 | " \n", 1574 | " \n", 1575 | " \n", 1576 | " \n", 1577 | " \n", 1578 | " \n", 1579 | " \n", 1580 | " \n", 1581 | " \n", 1582 | " \n", 1583 | " \n", 1584 | " \n", 1585 | " \n", 1586 | " \n", 1587 | " \n", 1588 | " \n", 1589 | " \n", 1590 | " \n", 1591 | " \n", 1592 | " \n", 1593 | " \n", 1594 | " \n", 1595 | " \n", 1596 | " \n", 1597 | " \n", 1598 | " \n", 1599 | " \n", 1600 | " \n", 1601 | " \n", 1602 | " \n", 1603 | " \n", 1604 | " \n", 1605 | " \n", 1606 | " \n", 1607 | " \n", 1608 | " \n", 1609 | " \n", 1610 | " \n", 1611 | " \n", 1612 | " \n", 1613 | " \n", 1614 | " \n", 1615 | " \n", 1616 | " \n", 1617 | " \n", 1618 | " \n", 1619 | " \n", 1620 | " \n", 1621 | " \n", 1622 | " \n", 1623 | " \n", 1624 | " \n", 1625 | " \n", 1626 | " \n", 1627 | " \n", 1628 | " \n", 1629 | " \n", 1630 | " \n", 1631 | " \n", 1632 | " \n", 1633 | " \n", 1634 | " \n", 1635 | " \n", 1636 | " \n", 1637 | " \n", 1638 | " \n", 1639 | " \n", 1640 | " \n", 1641 | " \n", 1642 | " \n", 1643 | " \n", 1644 | " \n", 1645 | " \n", 1646 | " \n", 1647 | " \n", 1648 | " \n", 1649 | " \n", 1650 | " \n", 1651 | " \n", 1652 | " \n", 1653 | " \n", 1654 | " \n", 1655 | " \n", 1656 | " \n", 1657 | " \n", 1658 | " \n", 1659 | " \n", 1660 | " \n", 1661 | " \n", 1662 | " \n", 1663 | " \n", 1664 | " \n", 1665 | " \n", 1666 | " \n", 1667 | " \n", 1668 | " \n", 1669 | " \n", 1670 | " \n", 1671 | " \n", 1672 | " \n", 1673 | " \n", 1674 | " \n", 1675 | " \n", 1676 | " \n", 1677 | " \n", 1678 | " \n", 1679 | " \n", 1680 | " \n", 1681 | " \n", 1682 | " \n", 1683 | " \n", 1684 | " \n", 1685 | " \n", 1686 | " \n", 1687 | " \n", 1688 | " \n", 1689 | " \n", 1690 | " \n", 1691 | " \n", 1692 | " \n", 1693 | " \n", 1694 | " \n", 1695 | " \n", 1696 | " \n", 1697 | " \n", 1698 | " \n", 1699 | " \n", 1700 | " \n", 1701 | "
NAICS Industry DescriptionLookupCodesSector
0Sector 11 – Agriculture, Forestry, Fishing and...11Agriculture, Forestry, Fishing and Hunting
71Sector 21 – Mining, Quarrying, and Oil and Gas...21Mining, Quarrying, and Oil and Gas Extraction
103Sector 22 – Utilities22Utilities
119Sector 23 – Construction23Construction
156Sector 31 – 33 – Manufacturing31Manufacturing
538Sector 42 – Wholesale Trade42Wholesale Trade
614Sector 44 - 45 – Retail Trade44Retail Trade
694Sector 48 - 49 – Transportation and Warehousing48Transportation and Warehousing
764Sector 51 – Information51Information
802Sector 52 – Finance and Insurance52Finance and Insurance
847Sector 53 – Real Estate and Rental and Leasing53Real Estate and Rental and Leasing
875Sector 54 – Professional, Scientific and Techn...54Professional, Scientific and Technical Services
932Sector 55 – Management of Companies and Enterp...55Management of Companies and Enterprises
936Sector 56 – Administrative and Support, Waste ...56Administrative and Support, Waste Management a...
984Sector 61 – Educational Services61Educational Services
1004Sector 62 – Health Care and Social Assistance62Health Care and Social Assistance
1048Sector 71 – Arts, Entertainment and Recreation71Arts, Entertainment and Recreation
1077Sector 72 – Accommodation and Food Services72Accommodation and Food Services
1095Sector 81 – Other Services81Other Services
1147Sector 92 – Public Administration92Public Administration
\n", 1702 | "
" 1703 | ], 1704 | "text/plain": [ 1705 | " NAICS Industry Description LookupCodes \\\n", 1706 | "0 Sector 11 – Agriculture, Forestry, Fishing and... 11 \n", 1707 | "71 Sector 21 – Mining, Quarrying, and Oil and Gas... 21 \n", 1708 | "103 Sector 22 – Utilities 22 \n", 1709 | "119 Sector 23 – Construction 23 \n", 1710 | "156 Sector 31 – 33 – Manufacturing 31 \n", 1711 | "538 Sector 42 – Wholesale Trade 42 \n", 1712 | "614 Sector 44 - 45 – Retail Trade 44 \n", 1713 | "694 Sector 48 - 49 – Transportation and Warehousing 48 \n", 1714 | "764 Sector 51 – Information 51 \n", 1715 | "802 Sector 52 – Finance and Insurance 52 \n", 1716 | "847 Sector 53 – Real Estate and Rental and Leasing 53 \n", 1717 | "875 Sector 54 – Professional, Scientific and Techn... 54 \n", 1718 | "932 Sector 55 – Management of Companies and Enterp... 55 \n", 1719 | "936 Sector 56 – Administrative and Support, Waste ... 56 \n", 1720 | "984 Sector 61 – Educational Services 61 \n", 1721 | "1004 Sector 62 – Health Care and Social Assistance 62 \n", 1722 | "1048 Sector 71 – Arts, Entertainment and Recreation 71 \n", 1723 | "1077 Sector 72 – Accommodation and Food Services 72 \n", 1724 | "1095 Sector 81 – Other Services 81 \n", 1725 | "1147 Sector 92 – Public Administration 92 \n", 1726 | "\n", 1727 | " Sector \n", 1728 | "0 Agriculture, Forestry, Fishing and Hunting \n", 1729 | "71 Mining, Quarrying, and Oil and Gas Extraction \n", 1730 | "103 Utilities \n", 1731 | "119 Construction \n", 1732 | "156 Manufacturing \n", 1733 | "538 Wholesale Trade \n", 1734 | "614 Retail Trade \n", 1735 | "694 Transportation and Warehousing \n", 1736 | "764 Information \n", 1737 | "802 Finance and Insurance \n", 1738 | "847 Real Estate and Rental and Leasing \n", 1739 | "875 Professional, Scientific and Technical Services \n", 1740 | "932 Management of Companies and Enterprises \n", 1741 | "936 Administrative and Support, Waste Management a... \n", 1742 | "984 Educational Services \n", 1743 | "1004 Health Care and Social Assistance \n", 1744 | "1048 Arts, Entertainment and Recreation \n", 1745 | "1077 Accommodation and Food Services \n", 1746 | "1095 Other Services \n", 1747 | "1147 Public Administration " 1748 | ] 1749 | }, 1750 | "execution_count": 31, 1751 | "metadata": {}, 1752 | "output_type": "execute_result" 1753 | } 1754 | ], 1755 | "source": [ 1756 | "data" 1757 | ] 1758 | }, 1759 | { 1760 | "cell_type": "code", 1761 | "execution_count": 32, 1762 | "id": "d1bff76f", 1763 | "metadata": {}, 1764 | "outputs": [ 1765 | { 1766 | "name": "stderr", 1767 | "output_type": "stream", 1768 | "text": [ 1769 | "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\pandas\\core\\indexing.py:723: SettingWithCopyWarning: \n", 1770 | "A value is trying to be set on a copy of a slice from a DataFrame\n", 1771 | "\n", 1772 | "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", 1773 | " iloc._setitem_with_indexer(indexer, value, self.name)\n" 1774 | ] 1775 | } 1776 | ], 1777 | "source": [ 1778 | "data.loc [len(data.index)] = ['Sector 31 – 33 – Manufacturing', 32, 'Manufacturing']\n", 1779 | "data.loc [len(data.index)] = ['Sector 31 – 33 – Manufacturing', 33, 'Manufacturing']\n", 1780 | "\n", 1781 | "df2 = {'NAICS Industry Description': 'Sector 44 - 45 – Retail Trade', 'LookupCodes': 45, 'Sector': 'Retail Trade'}\n", 1782 | "data = data.append(df2, ignore_index = True)" 1783 | ] 1784 | }, 1785 | { 1786 | "cell_type": "code", 1787 | "execution_count": 33, 1788 | "id": "b9ffb995", 1789 | "metadata": {}, 1790 | "outputs": [], 1791 | "source": [ 1792 | "data.loc [len(data.index)] = ['Sector 48 - 49 – Transportation and Warehousing', 49, 'Transportation and Warehousing']" 1793 | ] 1794 | }, 1795 | { 1796 | "cell_type": "code", 1797 | "execution_count": 34, 1798 | "id": "5463d597", 1799 | "metadata": {}, 1800 | "outputs": [ 1801 | { 1802 | "data": { 1803 | "text/html": [ 1804 | "
\n", 1805 | "\n", 1818 | "\n", 1819 | " \n", 1820 | " \n", 1821 | " \n", 1822 | " \n", 1823 | " \n", 1824 | " \n", 1825 | " \n", 1826 | " \n", 1827 | " \n", 1828 | " \n", 1829 | " \n", 1830 | " \n", 1831 | " \n", 1832 | " \n", 1833 | " \n", 1834 | " \n", 1835 | " \n", 1836 | " \n", 1837 | " \n", 1838 | " \n", 1839 | " \n", 1840 | " \n", 1841 | " \n", 1842 | " \n", 1843 | " \n", 1844 | " \n", 1845 | " \n", 1846 | " \n", 1847 | " \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 | " \n", 1878 | " \n", 1879 | " \n", 1880 | " \n", 1881 | " \n", 1882 | " \n", 1883 | " \n", 1884 | " \n", 1885 | " \n", 1886 | " \n", 1887 | " \n", 1888 | " \n", 1889 | " \n", 1890 | " \n", 1891 | " \n", 1892 | " \n", 1893 | " \n", 1894 | " \n", 1895 | " \n", 1896 | " \n", 1897 | " \n", 1898 | " \n", 1899 | " \n", 1900 | " \n", 1901 | " \n", 1902 | " \n", 1903 | " \n", 1904 | " \n", 1905 | " \n", 1906 | " \n", 1907 | " \n", 1908 | " \n", 1909 | " \n", 1910 | " \n", 1911 | " \n", 1912 | " \n", 1913 | " \n", 1914 | " \n", 1915 | " \n", 1916 | " \n", 1917 | " \n", 1918 | " \n", 1919 | " \n", 1920 | " \n", 1921 | " \n", 1922 | " \n", 1923 | " \n", 1924 | " \n", 1925 | " \n", 1926 | " \n", 1927 | " \n", 1928 | " \n", 1929 | " \n", 1930 | " \n", 1931 | " \n", 1932 | " \n", 1933 | " \n", 1934 | " \n", 1935 | " \n", 1936 | " \n", 1937 | " \n", 1938 | " \n", 1939 | " \n", 1940 | " \n", 1941 | " \n", 1942 | " \n", 1943 | " \n", 1944 | " \n", 1945 | " \n", 1946 | " \n", 1947 | " \n", 1948 | " \n", 1949 | " \n", 1950 | " \n", 1951 | " \n", 1952 | " \n", 1953 | " \n", 1954 | " \n", 1955 | " \n", 1956 | " \n", 1957 | " \n", 1958 | " \n", 1959 | " \n", 1960 | " \n", 1961 | " \n", 1962 | " \n", 1963 | " \n", 1964 | " \n", 1965 | " \n", 1966 | " \n", 1967 | " \n", 1968 | " \n", 1969 | " \n", 1970 | " \n", 1971 | " \n", 1972 | " \n", 1973 | "
NAICS Industry DescriptionLookupCodesSector
0Sector 11 – Agriculture, Forestry, Fishing and...11Agriculture, Forestry, Fishing and Hunting
1Sector 21 – Mining, Quarrying, and Oil and Gas...21Mining, Quarrying, and Oil and Gas Extraction
2Sector 22 – Utilities22Utilities
3Sector 23 – Construction23Construction
4Sector 31 – 33 – Manufacturing31Manufacturing
5Sector 42 – Wholesale Trade42Wholesale Trade
6Sector 44 - 45 – Retail Trade44Retail Trade
7Sector 48 - 49 – Transportation and Warehousing48Transportation and Warehousing
8Sector 51 – Information51Information
9Sector 52 – Finance and Insurance52Finance and Insurance
10Sector 53 – Real Estate and Rental and Leasing53Real Estate and Rental and Leasing
11Sector 54 – Professional, Scientific and Techn...54Professional, Scientific and Technical Services
12Sector 55 – Management of Companies and Enterp...55Management of Companies and Enterprises
13Sector 56 – Administrative and Support, Waste ...56Administrative and Support, Waste Management a...
14Sector 61 – Educational Services61Educational Services
15Sector 62 – Health Care and Social Assistance62Health Care and Social Assistance
16Sector 71 – Arts, Entertainment and Recreation71Arts, Entertainment and Recreation
17Sector 72 – Accommodation and Food Services72Accommodation and Food Services
18Sector 81 – Other Services81Other Services
19Sector 92 – Public Administration92Public Administration
20Sector 31 – 33 – Manufacturing32Manufacturing
21Sector 31 – 33 – Manufacturing33Manufacturing
22Sector 44 - 45 – Retail Trade45Retail Trade
23Sector 48 - 49 – Transportation and Warehousing49Transportation and Warehousing
\n", 1974 | "
" 1975 | ], 1976 | "text/plain": [ 1977 | " NAICS Industry Description LookupCodes \\\n", 1978 | "0 Sector 11 – Agriculture, Forestry, Fishing and... 11 \n", 1979 | "1 Sector 21 – Mining, Quarrying, and Oil and Gas... 21 \n", 1980 | "2 Sector 22 – Utilities 22 \n", 1981 | "3 Sector 23 – Construction 23 \n", 1982 | "4 Sector 31 – 33 – Manufacturing 31 \n", 1983 | "5 Sector 42 – Wholesale Trade 42 \n", 1984 | "6 Sector 44 - 45 – Retail Trade 44 \n", 1985 | "7 Sector 48 - 49 – Transportation and Warehousing 48 \n", 1986 | "8 Sector 51 – Information 51 \n", 1987 | "9 Sector 52 – Finance and Insurance 52 \n", 1988 | "10 Sector 53 – Real Estate and Rental and Leasing 53 \n", 1989 | "11 Sector 54 – Professional, Scientific and Techn... 54 \n", 1990 | "12 Sector 55 – Management of Companies and Enterp... 55 \n", 1991 | "13 Sector 56 – Administrative and Support, Waste ... 56 \n", 1992 | "14 Sector 61 – Educational Services 61 \n", 1993 | "15 Sector 62 – Health Care and Social Assistance 62 \n", 1994 | "16 Sector 71 – Arts, Entertainment and Recreation 71 \n", 1995 | "17 Sector 72 – Accommodation and Food Services 72 \n", 1996 | "18 Sector 81 – Other Services 81 \n", 1997 | "19 Sector 92 – Public Administration 92 \n", 1998 | "20 Sector 31 – 33 – Manufacturing 32 \n", 1999 | "21 Sector 31 – 33 – Manufacturing 33 \n", 2000 | "22 Sector 44 - 45 – Retail Trade 45 \n", 2001 | "23 Sector 48 - 49 – Transportation and Warehousing 49 \n", 2002 | "\n", 2003 | " Sector \n", 2004 | "0 Agriculture, Forestry, Fishing and Hunting \n", 2005 | "1 Mining, Quarrying, and Oil and Gas Extraction \n", 2006 | "2 Utilities \n", 2007 | "3 Construction \n", 2008 | "4 Manufacturing \n", 2009 | "5 Wholesale Trade \n", 2010 | "6 Retail Trade \n", 2011 | "7 Transportation and Warehousing \n", 2012 | "8 Information \n", 2013 | "9 Finance and Insurance \n", 2014 | "10 Real Estate and Rental and Leasing \n", 2015 | "11 Professional, Scientific and Technical Services \n", 2016 | "12 Management of Companies and Enterprises \n", 2017 | "13 Administrative and Support, Waste Management a... \n", 2018 | "14 Educational Services \n", 2019 | "15 Health Care and Social Assistance \n", 2020 | "16 Arts, Entertainment and Recreation \n", 2021 | "17 Accommodation and Food Services \n", 2022 | "18 Other Services \n", 2023 | "19 Public Administration \n", 2024 | "20 Manufacturing \n", 2025 | "21 Manufacturing \n", 2026 | "22 Retail Trade \n", 2027 | "23 Transportation and Warehousing " 2028 | ] 2029 | }, 2030 | "execution_count": 34, 2031 | "metadata": {}, 2032 | "output_type": "execute_result" 2033 | } 2034 | ], 2035 | "source": [ 2036 | "data" 2037 | ] 2038 | }, 2039 | { 2040 | "cell_type": "code", 2041 | "execution_count": 35, 2042 | "id": "ccac0cbd", 2043 | "metadata": {}, 2044 | "outputs": [], 2045 | "source": [ 2046 | "data.to_csv('clean_data.csv', encoding = 'utf-8')" 2047 | ] 2048 | }, 2049 | { 2050 | "cell_type": "code", 2051 | "execution_count": 36, 2052 | "id": "ce6a2a38", 2053 | "metadata": {}, 2054 | "outputs": [], 2055 | "source": [ 2056 | "data.to_csv('clean_data_without_index.csv', encoding = 'utf-8', index = False)" 2057 | ] 2058 | }, 2059 | { 2060 | "cell_type": "code", 2061 | "execution_count": null, 2062 | "id": "074a3885", 2063 | "metadata": {}, 2064 | "outputs": [], 2065 | "source": [] 2066 | } 2067 | ], 2068 | "metadata": { 2069 | "kernelspec": { 2070 | "display_name": "Python 3 (ipykernel)", 2071 | "language": "python", 2072 | "name": "python3" 2073 | }, 2074 | "language_info": { 2075 | "codemirror_mode": { 2076 | "name": "ipython", 2077 | "version": 3 2078 | }, 2079 | "file_extension": ".py", 2080 | "mimetype": "text/x-python", 2081 | "name": "python", 2082 | "nbconvert_exporter": "python", 2083 | "pygments_lexer": "ipython3", 2084 | "version": "3.9.7" 2085 | } 2086 | }, 2087 | "nbformat": 4, 2088 | "nbformat_minor": 5 2089 | } 2090 | -------------------------------------------------------------------------------- /Cleaning_Data_with_SQL_Part1.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AllThingsDataWithAngelina/Data-Analyst-Projects/a585ff08df89dbe2fa05c0f9cc3850067a6f319a/Cleaning_Data_with_SQL_Part1.sql -------------------------------------------------------------------------------- /Exploring_Data_SQL_Part1.sql: -------------------------------------------------------------------------------- 1 | --1--- 2 | ---Summary of All PPP Approved Lending 3 | --Note, there is also servicing Lender 4 | Select count(LoanNumber) as Loans_Approved, sum(InitialApprovalAmount) Total_Net_Dollars, AVG(InitialApprovalAmount) Average_Loan_Size, 5 | (select count(distinct (OriginatingLender))from [dbo].[sba_public_data])Total_Originating_Lender_Count 6 | from [dbo].[sba_public_data] 7 | order by 3 desc 8 | 9 | ---Summary of 2021 PPP Approved Lending 10 | Select count(LoanNumber) as Loans_Approved, sum(InitialApprovalAmount) Total_Net_Dollars, AVG(InitialApprovalAmount) Average_Loan_Size, 11 | (select count(distinct (OriginatingLender))from [dbo].[sba_public_data] where year(DateApproved) = 2021)Total_Originating_Lender_Count 12 | from [dbo].[sba_public_data] 13 | where year(DateApproved) = 2021 14 | order by 3 desc 15 | 16 | ---Summary of 2020 PPP Approved Lending 17 | Select count(LoanNumber) as Loans_Approved, sum(InitialApprovalAmount) Total_Net_Dollars, AVG(InitialApprovalAmount) Average_Loan_Size, 18 | (select count(distinct (OriginatingLender))from [dbo].[sba_public_data] where year(DateApproved) = 2020)Total_Originating_Lender_Count 19 | from [dbo].[sba_public_data] 20 | where year(DateApproved) = 2020 21 | order by 3 desc 22 | 23 | 24 | ---2--- 25 | ---Summary of 2021 PPP Approved Loans per Originating Lender, loan count, total amount and average 26 | --Top 15 Originating Lenders for 2021 PPP Loans 27 | --Data is ordered by Net_Dollars 28 | Select top 15 OriginatingLender, count(LoanNumber) as Loans_Approved, sum(InitialApprovalAmount) Net_Dollars, AVG(InitialApprovalAmount) Average_Loan_Size 29 | from [dbo].[sba_public_data] 30 | where year(DateApproved) = 2021 31 | group by OriginatingLender 32 | order by 3 desc 33 | 34 | Select top 15 OriginatingLender, count(LoanNumber) as Loans_Approved, sum(InitialApprovalAmount) Net_Dollars, AVG(InitialApprovalAmount) Average_Loan_Size 35 | from [dbo].[sba_public_data] 36 | where year(DateApproved) = 2020 37 | group by OriginatingLender 38 | order by 3 desc 39 | 40 | 41 | ---3---- 42 | ---Top 20 Industries that received the PPP Loans in 2021 43 | -- I need to add the NAICS codes to the GitHub Repo, extracted from SQL 44 | with cte as ( 45 | 46 | select ncd.Sector, count(LoanNumber) as Loans_Approved, sum(CurrentApprovalAmount) Net_Dollars 47 | from [dbo].[sba_public_data] main 48 | inner join [dbo].[sba_naics_sector_codes_description] ncd 49 | on left(cast(main.NAICSCode as varchar), 2) = ncd.LookupCode 50 | where year(DateApproved) = 2021 51 | group by ncd.Sector 52 | --order by 3 desc 53 | 54 | ) 55 | SELECT 56 | sector,Loans_Approved, 57 | SUM(Net_Dollars) OVER(PARTITION BY sector) AS Net_Dollars, 58 | --SUM(Net_Dollars) OVER() AS Total, 59 | CAST(1. * Net_Dollars / SUM(Net_Dollars) OVER() AS DECIMAL(5,2)) * 100 AS "Percent by Amount" 60 | FROM cte 61 | order by 3 desc 62 | --where year(DateApproved) = 2021 63 | 64 | ---4--- 65 | --States and Territories 66 | select BorrowerState as state, count(LoanNumber) as Loan_Count, sum(CurrentApprovalAmount) Net_Dollars 67 | from [dbo].[sba_public_data] main 68 | --where cast(DateApproved as date) < '2021-06-01' 69 | group by BorrowerState 70 | order by 1 71 | 72 | 73 | ---5---- 74 | ---Demographics for PPP 75 | select race, count(LoanNumber) as Loan_Count, sum(CurrentApprovalAmount) Net_Dollars 76 | from [dbo].[sba_public_data] 77 | group by race 78 | order by 3 79 | 80 | select gender, count(LoanNumber) as Loan_Count, sum(CurrentApprovalAmount) Net_Dollars 81 | from [dbo].[sba_public_data] 82 | group by gender 83 | order by 3 84 | 85 | select Ethnicity, count(LoanNumber) as Loan_Count, sum(CurrentApprovalAmount) Net_Dollars 86 | from [dbo].[sba_public_data] 87 | group by Ethnicity 88 | order by 3 89 | 90 | select Veteran, count(LoanNumber) as Loan_Count, sum(CurrentApprovalAmount) Net_Dollars 91 | from [dbo].[sba_public_data] 92 | group by Veteran 93 | order by 3 94 | 95 | ---6--- 96 | ---How much of the PPP Loans of 2021 have been fully forgiven 97 | select count(LoanNumber) as Count_of_Payments, sum(ForgivenessAmount) Forgiveness_amount_paid 98 | from sba_public_data 99 | where year(DateApproved) = 2020 and ForgivenessAmount <> 0 100 | 101 | ---Summary of 2021 PPP Approved Lending 102 | Select count(LoanNumber) as Loans_Approved, sum(InitialApprovalAmount) Total_Net_Dollars, sum(ForgivenessAmount) Forgiveness_amount_paid, 103 | (select count(distinct (OriginatingLender))from [dbo].[sba_public_data] where year(DateApproved) = 2021)Total_Originating_Lender_Count 104 | from [dbo].[sba_public_data] 105 | where year(DateApproved) = 2020 106 | order by 3 desc 107 | 108 | 109 | --7--- 110 | --In which month was the highest amount given out by the SBA to borrowers 111 | select Year(DateApproved) Year_Approved, Month(DateApproved)Month_Approved, ProcessingMethod, sum(CurrentApprovalAmount) Net_Dollars 112 | from sba_public_data 113 | group by Year(DateApproved), Month(DateApproved), ProcessingMethod 114 | order by 4 desc -------------------------------------------------------------------------------- /LEGO Data Analysis - Rebrickable.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "3adc098c", 6 | "metadata": {}, 7 | "source": [ 8 | "# LEGO Data Analysis - Rebrickable" 9 | ] 10 | }, 11 | { 12 | "cell_type": "markdown", 13 | "id": "da2515b3", 14 | "metadata": {}, 15 | "source": [ 16 | "The dataset is from https://rebrickable.com/downloads/. \n", 17 | "\n", 18 | "From the Rebrickable website - \"The LEGO Parts/Sets/Colors and Inventories of every official LEGO set in the Rebrickable database is available for download as csv files here. These files are automatically updated daily. If you need more details, you can use the API which provides real-time data, but has rate limits that prevent bulk downloading of data.\"\n", 19 | "\n", 20 | "Rebrickable provides this database to be used for any purpose." 21 | ] 22 | }, 23 | { 24 | "cell_type": "markdown", 25 | "id": "6264928c", 26 | "metadata": {}, 27 | "source": [ 28 | "## LEGO Data Model" 29 | ] 30 | }, 31 | { 32 | "attachments": { 33 | "downloads_schema_v3.png": { 34 | "image/png": "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" 35 | } 36 | }, 37 | "cell_type": "markdown", 38 | "id": "32ec6d94", 39 | "metadata": {}, 40 | "source": [ 41 | "![downloads_schema_v3.png](attachment:downloads_schema_v3.png)" 42 | ] 43 | }, 44 | { 45 | "cell_type": "markdown", 46 | "id": "65c8d7a4", 47 | "metadata": {}, 48 | "source": [ 49 | "#### Importing Libraries" 50 | ] 51 | }, 52 | { 53 | "cell_type": "code", 54 | "execution_count": null, 55 | "id": "3ee02051", 56 | "metadata": {}, 57 | "outputs": [], 58 | "source": [ 59 | "import pandas as pd\n", 60 | "import numpy as np" 61 | ] 62 | }, 63 | { 64 | "cell_type": "markdown", 65 | "id": "24ae49a0", 66 | "metadata": {}, 67 | "source": [ 68 | "#### Getting Data" 69 | ] 70 | }, 71 | { 72 | "cell_type": "code", 73 | "execution_count": null, 74 | "id": "f2dac057", 75 | "metadata": {}, 76 | "outputs": [], 77 | "source": [] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": null, 82 | "id": "e8576500", 83 | "metadata": {}, 84 | "outputs": [], 85 | "source": [] 86 | }, 87 | { 88 | "cell_type": "markdown", 89 | "id": "cc69c8a5", 90 | "metadata": {}, 91 | "source": [ 92 | "#### Display Top 10 Rows of the sets dataset" 93 | ] 94 | }, 95 | { 96 | "cell_type": "code", 97 | "execution_count": null, 98 | "id": "7e95329e", 99 | "metadata": {}, 100 | "outputs": [], 101 | "source": [] 102 | }, 103 | { 104 | "cell_type": "markdown", 105 | "id": "b9914c48", 106 | "metadata": {}, 107 | "source": [ 108 | "#### Display Last 10 Rows of the sets dataset" 109 | ] 110 | }, 111 | { 112 | "cell_type": "code", 113 | "execution_count": null, 114 | "id": "460a7729", 115 | "metadata": {}, 116 | "outputs": [], 117 | "source": [] 118 | }, 119 | { 120 | "cell_type": "markdown", 121 | "id": "117a51fc", 122 | "metadata": {}, 123 | "source": [ 124 | "#### Check Datatype of Each Column" 125 | ] 126 | }, 127 | { 128 | "cell_type": "code", 129 | "execution_count": null, 130 | "id": "af47af0c", 131 | "metadata": {}, 132 | "outputs": [], 133 | "source": [] 134 | }, 135 | { 136 | "cell_type": "markdown", 137 | "id": "4b087e21", 138 | "metadata": {}, 139 | "source": [ 140 | "#### Check NULL Values in Sets" 141 | ] 142 | }, 143 | { 144 | "cell_type": "code", 145 | "execution_count": null, 146 | "id": "ffe7a416", 147 | "metadata": {}, 148 | "outputs": [], 149 | "source": [] 150 | }, 151 | { 152 | "cell_type": "markdown", 153 | "id": "50274329", 154 | "metadata": {}, 155 | "source": [ 156 | "#### How many Rows and Columns are there in our dataset" 157 | ] 158 | }, 159 | { 160 | "cell_type": "code", 161 | "execution_count": null, 162 | "id": "e5f3672a", 163 | "metadata": {}, 164 | "outputs": [], 165 | "source": [] 166 | }, 167 | { 168 | "cell_type": "code", 169 | "execution_count": null, 170 | "id": "6b4a53e1", 171 | "metadata": {}, 172 | "outputs": [], 173 | "source": [] 174 | }, 175 | { 176 | "cell_type": "code", 177 | "execution_count": null, 178 | "id": "7e0e5dbd", 179 | "metadata": {}, 180 | "outputs": [], 181 | "source": [] 182 | }, 183 | { 184 | "cell_type": "code", 185 | "execution_count": null, 186 | "id": "b9cd9c5a", 187 | "metadata": {}, 188 | "outputs": [], 189 | "source": [] 190 | }, 191 | { 192 | "cell_type": "markdown", 193 | "id": "88d8debe", 194 | "metadata": {}, 195 | "source": [ 196 | "## MERGE DATA\n", 197 | "#### Joining the two datasets to answer questions" 198 | ] 199 | }, 200 | { 201 | "cell_type": "code", 202 | "execution_count": null, 203 | "id": "84152152", 204 | "metadata": {}, 205 | "outputs": [], 206 | "source": [] 207 | }, 208 | { 209 | "cell_type": "code", 210 | "execution_count": null, 211 | "id": "9eac02ea", 212 | "metadata": {}, 213 | "outputs": [], 214 | "source": [] 215 | }, 216 | { 217 | "cell_type": "code", 218 | "execution_count": null, 219 | "id": "c3880b41", 220 | "metadata": {}, 221 | "outputs": [], 222 | "source": [] 223 | }, 224 | { 225 | "cell_type": "markdown", 226 | "id": "3cdbc54f", 227 | "metadata": {}, 228 | "source": [ 229 | "### Now Let's Answer some Questions" 230 | ] 231 | }, 232 | { 233 | "cell_type": "markdown", 234 | "id": "22a11bfc", 235 | "metadata": {}, 236 | "source": [ 237 | "#### 1.) What is the total number of parts per theme" 238 | ] 239 | }, 240 | { 241 | "cell_type": "code", 242 | "execution_count": null, 243 | "id": "d6c42dd7", 244 | "metadata": {}, 245 | "outputs": [], 246 | "source": [] 247 | }, 248 | { 249 | "cell_type": "markdown", 250 | "id": "9bbe2fbe", 251 | "metadata": {}, 252 | "source": [ 253 | "#### 2.) What is the total number of parts per year" 254 | ] 255 | }, 256 | { 257 | "cell_type": "code", 258 | "execution_count": null, 259 | "id": "47817343", 260 | "metadata": {}, 261 | "outputs": [], 262 | "source": [] 263 | }, 264 | { 265 | "cell_type": "markdown", 266 | "id": "25dc250c", 267 | "metadata": {}, 268 | "source": [ 269 | "#### 3.) How many sets where created in each Century in the dataset" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": null, 275 | "id": "38e33e6a", 276 | "metadata": {}, 277 | "outputs": [], 278 | "source": [] 279 | }, 280 | { 281 | "cell_type": "markdown", 282 | "id": "8f55095f", 283 | "metadata": {}, 284 | "source": [ 285 | "#### 4.) What percentage of sets ever released in the 21st Century were Trains Themed " 286 | ] 287 | }, 288 | { 289 | "cell_type": "code", 290 | "execution_count": null, 291 | "id": "f007901b", 292 | "metadata": {}, 293 | "outputs": [], 294 | "source": [] 295 | }, 296 | { 297 | "cell_type": "markdown", 298 | "id": "9f452beb", 299 | "metadata": {}, 300 | "source": [ 301 | "#### 5.) What percentage of sets ever released in the 21st Century were Disney Themed" 302 | ] 303 | }, 304 | { 305 | "cell_type": "code", 306 | "execution_count": null, 307 | "id": "2eaea3c7", 308 | "metadata": {}, 309 | "outputs": [], 310 | "source": [] 311 | }, 312 | { 313 | "cell_type": "markdown", 314 | "id": "f4de3747", 315 | "metadata": {}, 316 | "source": [ 317 | "#### 6.) What is the popular theme by year in terms of sets released in the 21st Century" 318 | ] 319 | }, 320 | { 321 | "cell_type": "code", 322 | "execution_count": null, 323 | "id": "4046508a", 324 | "metadata": {}, 325 | "outputs": [], 326 | "source": [] 327 | }, 328 | { 329 | "cell_type": "markdown", 330 | "id": "5e73daea", 331 | "metadata": {}, 332 | "source": [ 333 | "#### 7.) What is the most produced color of lego ever in terms of quantity of parts?" 334 | ] 335 | }, 336 | { 337 | "cell_type": "code", 338 | "execution_count": null, 339 | "id": "014d7b45", 340 | "metadata": {}, 341 | "outputs": [], 342 | "source": [] 343 | }, 344 | { 345 | "cell_type": "markdown", 346 | "id": "410d43d3", 347 | "metadata": {}, 348 | "source": [ 349 | "#### Note - Join two datasets to answer question" 350 | ] 351 | }, 352 | { 353 | "cell_type": "code", 354 | "execution_count": null, 355 | "id": "1dce0367", 356 | "metadata": {}, 357 | "outputs": [], 358 | "source": [] 359 | } 360 | ], 361 | "metadata": { 362 | "kernelspec": { 363 | "display_name": "Python 3 (ipykernel)", 364 | "language": "python", 365 | "name": "python3" 366 | }, 367 | "language_info": { 368 | "codemirror_mode": { 369 | "name": "ipython", 370 | "version": 3 371 | }, 372 | "file_extension": ".py", 373 | "mimetype": "text/x-python", 374 | "name": "python", 375 | "nbconvert_exporter": "python", 376 | "pygments_lexer": "ipython3", 377 | "version": "3.9.7" 378 | } 379 | }, 380 | "nbformat": 4, 381 | "nbformat_minor": 5 382 | } 383 | -------------------------------------------------------------------------------- /LEGO_Data_Analysis.sql: -------------------------------------------------------------------------------- 1 | ---CREATE VIEW---- 2 | Create view [dbo].[analytics_main] as 3 | 4 | select s.set_num, s.name as set_name, s.year, s.theme_id, cast(s.num_parts as numeric) num_parts, t.name as theme_name, t.parent_id, p.name as parent_theme_name, 5 | case 6 | when s.year between 1901 and 2000 then '20th_Century' 7 | when s.year between 2001 and 2100 then '21st_Century' 8 | end 9 | as Century 10 | from dbo.sets s 11 | left join [dbo].[themes] t 12 | on s.theme_id = t.id 13 | left join [dbo].[themes] p 14 | on t.parent_id = p.id 15 | GO 16 | 17 | 18 | 19 | 20 | ---1--- 21 | ---What is the total number of parts per theme 22 | --select * from dbo.analytics_main 23 | 24 | 25 | select theme_name, sum(num_parts) as total_num_parts 26 | from dbo.analytics_main 27 | --where parent_theme_name is not null 28 | group by theme_name 29 | order by 2 desc 30 | 31 | 32 | ---2--- 33 | ---What is the total number of parts per year 34 | select year, sum(num_parts) as total_num_parts 35 | from dbo.analytics_main 36 | where parent_theme_name is not null 37 | group by year 38 | order by 2 desc 39 | 40 | 41 | ---3--- 42 | --- How many sets where created in each Century in the dataset 43 | select Century, count(set_num) as total_set_num 44 | from dbo.analytics_main 45 | ---where parent_theme_name is not null 46 | group by Century 47 | 48 | 49 | 50 | ---4--- 51 | --- What percentage of sets ever released in the 21st Century were Trains Themed 52 | ;with cte as 53 | ( 54 | select Century, theme_name, count(set_num) total_set_num 55 | from analytics_main 56 | where Century = '21st_Century' 57 | group by Century, theme_name 58 | ) 59 | select sum(total_set_num), sum(percentage) 60 | from( 61 | select Century, theme_name, total_set_num, sum(total_set_num) OVER() as total, cast(1.00 * total_set_num / sum(total_set_num) OVER() as decimal(5,4))*100 Percentage 62 | from cte 63 | --order by 3 desc 64 | )m 65 | where theme_name like '%Star wars%' 66 | 67 | 68 | 69 | --- 5 --- 70 | --- What was the popular theme by year in terms of sets released in the 21st Century 71 | select year, theme_name, total_set_num 72 | from ( 73 | select year, theme_name, count(set_num) total_set_num, ROW_NUMBER() OVER (partition by year order by count(set_num) desc) rn 74 | from analytics_main 75 | where Century = '21st_Century' 76 | --and parent_theme_name is not null 77 | group by year, theme_name 78 | )m 79 | where rn = 1 80 | order by year desc 81 | 82 | 83 | 84 | ---6--- 85 | ---What is the most produced color of lego ever in terms of quantity of parts? 86 | 87 | select color_name, sum(quantity) as quantity_of_parts 88 | from 89 | ( 90 | select 91 | inv.color_id, inv.inventory_id, inv.part_num, cast(inv.quantity as numeric) quantity, inv.is_spare, c.name as color_name, c.rgb, p.name as part_name, p.part_material, pc.name as category_name 92 | from inventory_parts inv 93 | inner join colors c 94 | on inv.color_id = c.id 95 | inner join parts p 96 | on inv.part_num = p.part_num 97 | inner join part_categories pc 98 | on part_cat_id = pc.id 99 | )main 100 | 101 | group by color_name 102 | order by 2 desc -------------------------------------------------------------------------------- /RFM_Segmentation_Sales_Analysis_Main.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AllThingsDataWithAngelina/Data-Analyst-Projects/a585ff08df89dbe2fa05c0f9cc3850067a6f319a/RFM_Segmentation_Sales_Analysis_Main.sql -------------------------------------------------------------------------------- /Visualizing_Data_with_Tableau.sql: -------------------------------------------------------------------------------- 1 | create view ppp_main as 2 | 3 | SELECT 4 | d.Sector, 5 | year(DateApproved) year_approved, 6 | month(DateApproved) month_Approved, 7 | OriginatingLender, 8 | BorrowerState, 9 | Race, 10 | Gender, 11 | Ethnicity, 12 | 13 | count(LoanNumber) Number_of_Approved, 14 | 15 | sum(CurrentApprovalAmount) Current_Approved_Amount, 16 | avg (CurrentApprovalAmount) Current_Average_loan_size, 17 | sum(ForgivenessAmount) Amount_Forgiven, 18 | 19 | 20 | sum(InitialApprovalAmount) Approved_Amount, 21 | avg (InitialApprovalAmount) Average_loan_size 22 | 23 | FROM 24 | [PortfolioDB].[dbo].[sba_public_data] p 25 | inner join [dbo].[sba_naics_sector_codes_description] d 26 | on left(p.NAICSCode, 2) = d.LookupCodes 27 | group by 28 | d.Sector, 29 | year(DateApproved), 30 | month(DateApproved), 31 | OriginatingLender, 32 | BorrowerState, 33 | Race, 34 | Gender, 35 | Ethnicity -------------------------------------------------------------------------------- /cohort_rentention_analysis.sql: -------------------------------------------------------------------------------- 1 | ---Cleaning Data 2 | 3 | ---Total Records = 541909 4 | ---135080 Records have no customerID 5 | ---406829 Records have customerID 6 | 7 | ;with online_retail as 8 | ( 9 | SELECT [InvoiceNo] 10 | ,[StockCode] 11 | ,[Description] 12 | ,[Quantity] 13 | ,[InvoiceDate] 14 | ,[UnitPrice] 15 | ,[CustomerID] 16 | ,[Country] 17 | FROM [PortfolioDB].[dbo].[online_retail] 18 | Where CustomerID != 0 19 | ) 20 | , quantity_unit_price as 21 | ( 22 | 23 | ---397882 records with quantity and Unit price 24 | select * 25 | from online_retail 26 | where Quantity > 0 and UnitPrice > 0 27 | ) 28 | , dup_check as 29 | ( 30 | ---duplicate check 31 | select * , ROW_NUMBER() over (partition by InvoiceNo, StockCode, Quantity order by InvoiceDate)dup_flag 32 | from quantity_unit_price 33 | 34 | ) 35 | ---397667 clean data 36 | --5215 duplicate records 37 | select * 38 | into #online_retail_main 39 | from dup_check 40 | where dup_flag = 1 41 | 42 | ----Clean Data 43 | ----BEGIN COHORT ANALYSIS 44 | select * from #online_retail_main 45 | 46 | --Unique Identifier (CustomerID) 47 | --Initial Start Date (First Invoice Date) 48 | --Revenue Data 49 | 50 | select 51 | CustomerID, 52 | min(InvoiceDate) first_purchase_date, 53 | DATEFROMPARTS(year(min(InvoiceDate)), month(min(InvoiceDate)), 1) Cohort_Date 54 | into #cohort 55 | from #online_retail_main 56 | group by CustomerID 57 | 58 | select * 59 | from #cohort 60 | 61 | ---Create Cohort Index 62 | select 63 | mmm.*, 64 | cohort_index = year_diff * 12 + month_diff + 1 65 | into #cohort_retention 66 | from 67 | ( 68 | select 69 | mm.*, 70 | year_diff = invoice_year - cohort_year, 71 | month_diff = invoice_month - cohort_month 72 | from 73 | ( 74 | select 75 | m.*, 76 | c.Cohort_Date, 77 | year(m.InvoiceDate) invoice_year, 78 | month(m.InvoiceDate) invoice_month, 79 | year(c.Cohort_Date) cohort_year, 80 | month(c.Cohort_Date) cohort_month 81 | from #online_retail_main m 82 | left join #cohort c 83 | on m.CustomerID = c.CustomerID 84 | )mm 85 | )mmm 86 | --where CustomerID = 14733 87 | 88 | 89 | ---Pivot Data to see the cohort table 90 | select * 91 | into #cohort_pivot 92 | from( 93 | select distinct 94 | CustomerID, 95 | Cohort_Date, 96 | cohort_index 97 | from #cohort_retention 98 | )tbl 99 | pivot( 100 | Count(CustomerID) 101 | for Cohort_Index In 102 | ( 103 | [1], 104 | [2], 105 | [3], 106 | [4], 107 | [5], 108 | [6], 109 | [7], 110 | [8], 111 | [9], 112 | [10], 113 | [11], 114 | [12], 115 | [13]) 116 | 117 | )as pivot_table 118 | 119 | select * 120 | from #cohort_pivot 121 | order by Cohort_Date 122 | 123 | select Cohort_Date , 124 | (1.0 * [1]/[1] * 100) as [1], 125 | 1.0 * [2]/[1] * 100 as [2], 126 | 1.0 * [3]/[1] * 100 as [3], 127 | 1.0 * [4]/[1] * 100 as [4], 128 | 1.0 * [5]/[1] * 100 as [5], 129 | 1.0 * [6]/[1] * 100 as [6], 130 | 1.0 * [7]/[1] * 100 as [7], 131 | 1.0 * [8]/[1] * 100 as [8], 132 | 1.0 * [9]/[1] * 100 as [9], 133 | 1.0 * [10]/[1] * 100 as [10], 134 | 1.0 * [11]/[1] * 100 as [11], 135 | 1.0 * [12]/[1] * 100 as [12], 136 | 1.0 * [13]/[1] * 100 as [13] 137 | from #cohort_pivot 138 | order by Cohort_Date 139 | 140 | 141 | 142 | 143 | 144 | ---DYNAMIC SQL TO CREATE PIVOT TABLE 145 | 146 | DECLARE 147 | @columns NVARCHAR(MAX) = '', 148 | @sql NVARCHAR(MAX) = ''; 149 | 150 | SELECT 151 | @columns += QUOTENAME(cohort_index) + ',' 152 | FROM 153 | (select distinct cohort_index from #cohort_retention) m 154 | ORDER BY 155 | cohort_index; 156 | 157 | SET @columns = LEFT(@columns, LEN(@columns) - 1); 158 | 159 | PRINT @columns; 160 | 161 | 162 | -- construct dynamic SQL 163 | SET @sql =' 164 | 165 | ---# Return number of unique elements in the object 166 | SELECT * 167 | FROM 168 | ( 169 | select distinct 170 | Cohort_Date, 171 | cohort_index, 172 | CustomerID 173 | from #cohort_retention 174 | ) t 175 | PIVOT( 176 | COUNT(CustomerID) 177 | FOR cohort_index IN ('+ @columns +') 178 | ) AS pivot_table 179 | order by Cohort_Date 180 | 181 | 182 | '; 183 | 184 | -- execute the dynamic SQL 185 | EXECUTE sp_executesql @sql; 186 | --------------------------------------------------------------------------------