├── README.md ├── Sales_Analysis_Code_Along.ipynb ├── Sales_Analysis_Code_Along_Solution.ipynb ├── data └── data.xlsx └── requirements.txt /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Solve Real-World Data Science Tasks in Python | Data Analysis with Pandas & Plotly (Full Tutorial) 3 | 4 | In this tutorial, we are going to solve a real-world data science/analysis project with python. 5 | 6 | We will be using the following Python Libraries: 7 | - Pandas 8 | - Pandas Profiling Report 9 | - AutoViz 10 | - Plotly 11 | 12 | After we have loaded the dataset, we will do some initial exploratory data analysis to get an idea of the dataset. 13 | I am going to show you very useful pandas’ functions which you can apply to any kind of dataset you might deal with. 14 | 15 | However, nowadays there are so many cool libraries available, which will make exploratory data analysis so much easier. I will show you my favorite 2 libraries, which will generate automated reports for us in just a few lines of code. 16 | Those reports are a great starting point before we are moving on to answer real-world business type questions. 17 | 18 | While answering those questions, we will cover a wide range of various pandas’ functions. Additionally, we will also code our own python helper function, which we are going to use in the deep-dive & visualization section. All the charts we are going to create will be interactive and have a clean design. 19 | 20 | We will cover the following chart types: 21 | - Histogram 22 | - Box Plot 23 | - Bar Charts 24 | - Scatter Plot 25 | - Line Chart 26 | 27 | Feel free to code along with me. In the project files, you will also find an exercise Notebook that includes all the tasks we are going to solve. 28 | 29 | ## Video Tutorial 30 | 31 | [![YouTube Video](https://img.youtube.com/vi/ZI9T2O7XYxY/0.jpg)](https://youtu.be/ZI9T2O7XYxY) 32 | 33 | ## Requirements 34 | ``` 35 | autoviz==0.0.81 36 | numpy==1.19.3 37 | openpyxl==3.0.5 38 | pandas==1.2.0 39 | pandas-profiling==2.9.0 40 | plotly==4.14.1 41 | plotly-express==0.4.1 42 | xlrd==2.0.1 43 | ``` 44 | 45 | 46 | ## 🤓 Check Out My Excel Add-ins 47 | I've developed some handy Excel add-ins that you might find useful: 48 | 49 | - 📊 **[Dashboard Add-in](https://pythonandvba.com/grafly)**: Easily create interactive and visually appealing dashboards. 50 | - 🎨 **[Cartoon Charts Add-In](https://pythonandvba.com/cuteplots)**: Create engaging and fun cartoon-style charts. 51 | - 🤪 **[Emoji Add-in](https://pythonandvba.com/emojify)**: Add a touch of fun to your spreadsheets with emojis. 52 | - 🛠️ **[MyToolBelt Add-in](https://pythonandvba.com/mytoolbelt)**: A versatile toolbelt for Excel, featuring: 53 | - Creation of Pandas DataFrames and Jupyter Notebooks from Excel ranges 54 | - ChatGPT integration for advanced data analysis 55 | - And much more! 56 | 57 | 58 | 59 | ## 🤝 Connect with Me 60 | - 📺 **YouTube:** [CodingIsFun](https://youtube.com/c/CodingIsFun) 61 | - 🌐 **Website:** [PythonAndVBA](https://pythonandvba.com) 62 | - 💬 **Discord:** [Join the Community](https://pythonandvba.com/discord) 63 | - 💼 **LinkedIn:** [Sven Bosau](https://www.linkedin.com/in/sven-bosau/) 64 | - 📸 **Instagram:** [sven_bosau](https://www.instagram.com/sven_bosau/) 65 | 66 | ## ☕ Support 67 | If you appreciate the project and wish to encourage its continued development, consider [supporting my work](https://pythonandvba.com/coffee-donation). 68 | [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://pythonandvba.com/coffee-donation) 69 | 70 | ## Feedback & Collaboration 71 | For feedback, suggestions, or potential collaboration opportunities, reach out at contact@pythonandvba.com. 72 | ![Logo](https://www.pythonandvba.com/banner-img) 73 | 74 | -------------------------------------------------------------------------------- /Sales_Analysis_Code_Along.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "attachments": { 5 | "image.png": { 6 | "image/png": "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" 7 | } 8 | }, 9 | "cell_type": "markdown", 10 | "metadata": {}, 11 | "source": [ 12 | "![image.png](attachment:image.png)" 13 | ] 14 | }, 15 | { 16 | "cell_type": "markdown", 17 | "metadata": {}, 18 | "source": [ 19 | "##### SCENARIO:\n", 20 | "\n", 21 | "> __You are working as a Data Analyst/Scientist in the 'Coding Is Fun Corp.' The CEO wants you to have a look at the commercial data for this year & to present your findings.__ 👩‍💻\n", 22 | "___" 23 | ] 24 | }, 25 | { 26 | "cell_type": "markdown", 27 | "metadata": {}, 28 | "source": [ 29 | "# Import Libraries & Load Dataset" 30 | ] 31 | }, 32 | { 33 | "cell_type": "markdown", 34 | "metadata": {}, 35 | "source": [ 36 | "### Imports" 37 | ] 38 | }, 39 | { 40 | "cell_type": "markdown", 41 | "metadata": {}, 42 | "source": [ 43 | "#### Imports" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": 1, 49 | "metadata": {}, 50 | "outputs": [], 51 | "source": [ 52 | "# Version:\n", 53 | "# --Python 3.8.5-- \n", 54 | "# autoviz==0.0.81\n", 55 | "# numpy==1.19.3\n", 56 | "# openpyxl==3.0.5\n", 57 | "# pandas==1.2.0\n", 58 | "# pandas-profiling==2.9.0\n", 59 | "# plotly==4.14.1\n", 60 | "# plotly-express==0.4.1\n", 61 | "# xlrd==2.0.1\n", 62 | "\n", 63 | "# Imports:\n" 64 | ] 65 | }, 66 | { 67 | "cell_type": "markdown", 68 | "metadata": {}, 69 | "source": [ 70 | "#### Plotly Template Settings" 71 | ] 72 | }, 73 | { 74 | "cell_type": "code", 75 | "execution_count": 2, 76 | "metadata": {}, 77 | "outputs": [], 78 | "source": [ 79 | "# -- Settings Plotly template\n", 80 | "# Reference Link:\n", 81 | "# https://plotly.com/python/templates/\n", 82 | "# Try other themes: 'plotly_dark', 'plotly_white', 'ggplot2', 'seaborn', 'simple_white'\n" 83 | ] 84 | }, 85 | { 86 | "cell_type": "markdown", 87 | "metadata": {}, 88 | "source": [ 89 | "### Load DataFrame" 90 | ] 91 | }, 92 | { 93 | "cell_type": "markdown", 94 | "metadata": {}, 95 | "source": [ 96 | "**Load DataFrame and store it in a variable called \"df\"**" 97 | ] 98 | }, 99 | { 100 | "cell_type": "code", 101 | "execution_count": null, 102 | "metadata": {}, 103 | "outputs": [], 104 | "source": [] 105 | }, 106 | { 107 | "cell_type": "markdown", 108 | "metadata": {}, 109 | "source": [ 110 | "**Inspect first 5 rows of the DataFrame**" 111 | ] 112 | }, 113 | { 114 | "cell_type": "code", 115 | "execution_count": null, 116 | "metadata": { 117 | "scrolled": true 118 | }, 119 | "outputs": [], 120 | "source": [] 121 | }, 122 | { 123 | "cell_type": "markdown", 124 | "metadata": {}, 125 | "source": [ 126 | "# Explore Dataset" 127 | ] 128 | }, 129 | { 130 | "cell_type": "markdown", 131 | "metadata": {}, 132 | "source": [ 133 | "## Traditionally" 134 | ] 135 | }, 136 | { 137 | "cell_type": "code", 138 | "execution_count": 3, 139 | "metadata": {}, 140 | "outputs": [], 141 | "source": [ 142 | "# Basic Info about DataFrame\n" 143 | ] 144 | }, 145 | { 146 | "cell_type": "code", 147 | "execution_count": 4, 148 | "metadata": { 149 | "scrolled": true 150 | }, 151 | "outputs": [], 152 | "source": [ 153 | "# Describe Method\n" 154 | ] 155 | }, 156 | { 157 | "cell_type": "code", 158 | "execution_count": 5, 159 | "metadata": {}, 160 | "outputs": [], 161 | "source": [ 162 | "# Get a view of unique values in column, e.g. 'Ship Mode'\n" 163 | ] 164 | }, 165 | { 166 | "cell_type": "code", 167 | "execution_count": 6, 168 | "metadata": {}, 169 | "outputs": [], 170 | "source": [ 171 | "# NaN count for each column\n" 172 | ] 173 | }, 174 | { 175 | "cell_type": "markdown", 176 | "metadata": {}, 177 | "source": [ 178 | "## Automated Reports" 179 | ] 180 | }, 181 | { 182 | "cell_type": "markdown", 183 | "metadata": {}, 184 | "source": [ 185 | "#### Pandas Profiling Report" 186 | ] 187 | }, 188 | { 189 | "cell_type": "code", 190 | "execution_count": 8, 191 | "metadata": {}, 192 | "outputs": [], 193 | "source": [ 194 | "# Generate Pandas Profiling Report\n", 195 | "\n", 196 | "\n", 197 | "# View in Notebook\n" 198 | ] 199 | }, 200 | { 201 | "cell_type": "code", 202 | "execution_count": 9, 203 | "metadata": {}, 204 | "outputs": [], 205 | "source": [ 206 | "# Export Pandas Profiling Report to HTML\n" 207 | ] 208 | }, 209 | { 210 | "cell_type": "markdown", 211 | "metadata": {}, 212 | "source": [ 213 | "#### Auto Viz Report" 214 | ] 215 | }, 216 | { 217 | "cell_type": "code", 218 | "execution_count": null, 219 | "metadata": {}, 220 | "outputs": [], 221 | "source": [] 222 | }, 223 | { 224 | "cell_type": "markdown", 225 | "metadata": {}, 226 | "source": [ 227 | "# Data Preperation & Analysis" 228 | ] 229 | }, 230 | { 231 | "cell_type": "markdown", 232 | "metadata": {}, 233 | "source": [ 234 | "### 🚩 TASKS:\n", 235 | "- What was the highest Sale in 2020?\n", 236 | "- What is average discount rate of charis?\n", 237 | "- Add extra columns to seperate Year & Month from the Order Date\n", 238 | "- Add a new column to calculate the Profit Margin for each sales record\n", 239 | "- Export manipulated dataframe to Excel\n", 240 | "- Create a new dataframe to reflect total Profit & Sales by Sub-Category\n", 241 | "- Develop a function, to return a dataframe which is grouped by a particular column (as an input)" 242 | ] 243 | }, 244 | { 245 | "cell_type": "markdown", 246 | "metadata": {}, 247 | "source": [ 248 | "**What was the highest Sale?**" 249 | ] 250 | }, 251 | { 252 | "cell_type": "code", 253 | "execution_count": 10, 254 | "metadata": {}, 255 | "outputs": [], 256 | "source": [ 257 | "# Highest Sale\n" 258 | ] 259 | }, 260 | { 261 | "cell_type": "markdown", 262 | "metadata": {}, 263 | "source": [ 264 | "**What is average Discount of charis?**" 265 | ] 266 | }, 267 | { 268 | "cell_type": "code", 269 | "execution_count": 12, 270 | "metadata": {}, 271 | "outputs": [], 272 | "source": [ 273 | "# Create Boolean mask\n", 274 | "\n", 275 | "\n", 276 | "# Use Boolean mask to filter dataframe\n" 277 | ] 278 | }, 279 | { 280 | "cell_type": "markdown", 281 | "metadata": {}, 282 | "source": [ 283 | "**Add an extra column for \"Order Month\" & \"Order Year\"**" 284 | ] 285 | }, 286 | { 287 | "cell_type": "code", 288 | "execution_count": null, 289 | "metadata": {}, 290 | "outputs": [], 291 | "source": [] 292 | }, 293 | { 294 | "cell_type": "markdown", 295 | "metadata": {}, 296 | "source": [ 297 | "**Add a new column to calculate the Profit Margin for each sales record**" 298 | ] 299 | }, 300 | { 301 | "cell_type": "code", 302 | "execution_count": null, 303 | "metadata": {}, 304 | "outputs": [], 305 | "source": [] 306 | }, 307 | { 308 | "cell_type": "markdown", 309 | "metadata": {}, 310 | "source": [ 311 | "**Export manipulated dataframe back to excel**" 312 | ] 313 | }, 314 | { 315 | "cell_type": "code", 316 | "execution_count": null, 317 | "metadata": {}, 318 | "outputs": [], 319 | "source": [] 320 | }, 321 | { 322 | "cell_type": "markdown", 323 | "metadata": {}, 324 | "source": [ 325 | "#### Total Profit &Sales by Sub-Category" 326 | ] 327 | }, 328 | { 329 | "cell_type": "code", 330 | "execution_count": 14, 331 | "metadata": {}, 332 | "outputs": [], 333 | "source": [ 334 | "# Group By Sub-Category [SUM]\n", 335 | "\n", 336 | "# Reset Index\n" 337 | ] 338 | }, 339 | { 340 | "cell_type": "markdown", 341 | "metadata": {}, 342 | "source": [ 343 | "#### Develop a function, to return a dataframe which is grouped by a particular column (as an input)" 344 | ] 345 | }, 346 | { 347 | "cell_type": "code", 348 | "execution_count": 16, 349 | "metadata": {}, 350 | "outputs": [], 351 | "source": [ 352 | "# Groupby as a function\n", 353 | "\n", 354 | " \n", 355 | "# Group DataFrame by Segment\n" 356 | ] 357 | }, 358 | { 359 | "cell_type": "markdown", 360 | "metadata": {}, 361 | "source": [ 362 | "# Further Deep Dive & Visualization" 363 | ] 364 | }, 365 | { 366 | "cell_type": "markdown", 367 | "metadata": {}, 368 | "source": [ 369 | "### 🚩 Objective: \n", 370 | "- Further Analysis/Deep Dive using various kind of Charts\n", 371 | "- Prepare/Refactor Dataframe for different Charttypes\n", 372 | "- Generate & Export 'Ready-To-Present- Charts': Clean & Interactive\n", 373 | "-----\n", 374 | "#### 📊 Chart Types:\n", 375 | "- [x] Histogram\n", 376 | "- [x] Boxpot\n", 377 | "- [x] Various Barplots\n", 378 | "- [x] Scatterplot\n", 379 | "- [x] Linechart" 380 | ] 381 | }, 382 | { 383 | "cell_type": "markdown", 384 | "metadata": {}, 385 | "source": [ 386 | "**Distribution Sales [Histogram]**" 387 | ] 388 | }, 389 | { 390 | "cell_type": "code", 391 | "execution_count": 17, 392 | "metadata": {}, 393 | "outputs": [], 394 | "source": [ 395 | "# Quick Stats Overview for Sales\n" 396 | ] 397 | }, 398 | { 399 | "cell_type": "code", 400 | "execution_count": 18, 401 | "metadata": {}, 402 | "outputs": [], 403 | "source": [ 404 | "# Create Chart\n", 405 | "\n", 406 | "# Plot Chart\n" 407 | ] 408 | }, 409 | { 410 | "cell_type": "markdown", 411 | "metadata": {}, 412 | "source": [ 413 | "**Show the distribution and skewness of Sales [Boxplot]**" 414 | ] 415 | }, 416 | { 417 | "cell_type": "code", 418 | "execution_count": 19, 419 | "metadata": {}, 420 | "outputs": [], 421 | "source": [ 422 | "# Create Chart\n", 423 | "\n", 424 | "# Plot Chart\n" 425 | ] 426 | }, 427 | { 428 | "cell_type": "markdown", 429 | "metadata": {}, 430 | "source": [ 431 | "**Plot Sales by Sub-Category**" 432 | ] 433 | }, 434 | { 435 | "cell_type": "code", 436 | "execution_count": 20, 437 | "metadata": {}, 438 | "outputs": [], 439 | "source": [ 440 | "# Create Dataframe\n" 441 | ] 442 | }, 443 | { 444 | "cell_type": "code", 445 | "execution_count": 22, 446 | "metadata": {}, 447 | "outputs": [], 448 | "source": [ 449 | "# Create Chart\n", 450 | "\n", 451 | "\n", 452 | "# Display Plot\n", 453 | "\n", 454 | "\n", 455 | "# Export Chart to HTML\n" 456 | ] 457 | }, 458 | { 459 | "cell_type": "markdown", 460 | "metadata": {}, 461 | "source": [ 462 | "**Plot Profit by Sub-Category**" 463 | ] 464 | }, 465 | { 466 | "cell_type": "code", 467 | "execution_count": 23, 468 | "metadata": {}, 469 | "outputs": [], 470 | "source": [ 471 | "# Create Chart\n", 472 | "\n", 473 | "\n", 474 | "# Display Plot\n", 475 | "\n", 476 | "\n", 477 | "# Export Chart to HTML\n" 478 | ] 479 | }, 480 | { 481 | "cell_type": "markdown", 482 | "metadata": {}, 483 | "source": [ 484 | "**Plot Sales & Profit by Sub-Category**" 485 | ] 486 | }, 487 | { 488 | "cell_type": "code", 489 | "execution_count": 25, 490 | "metadata": {}, 491 | "outputs": [], 492 | "source": [ 493 | "# Create Chart\n", 494 | "\n", 495 | "\n", 496 | "# Display Plot\n", 497 | "\n", 498 | "\n", 499 | "# Export Chart to HTML\n" 500 | ] 501 | }, 502 | { 503 | "cell_type": "markdown", 504 | "metadata": {}, 505 | "source": [ 506 | "#### Inspect Negative Profit of Tables" 507 | ] 508 | }, 509 | { 510 | "cell_type": "markdown", 511 | "metadata": {}, 512 | "source": [ 513 | "Is there any linear correlation between Sales/Profit & Discount? [Scatterplot]" 514 | ] 515 | }, 516 | { 517 | "cell_type": "code", 518 | "execution_count": 26, 519 | "metadata": {}, 520 | "outputs": [], 521 | "source": [ 522 | "# Create Chart\n", 523 | "\n", 524 | "\n", 525 | "# Display Plot\n", 526 | "\n", 527 | "\n", 528 | "# Export Chart to HTML\n" 529 | ] 530 | }, 531 | { 532 | "cell_type": "markdown", 533 | "metadata": {}, 534 | "source": [ 535 | "**Check Discount mean by Sub Category**" 536 | ] 537 | }, 538 | { 539 | "cell_type": "code", 540 | "execution_count": 28, 541 | "metadata": {}, 542 | "outputs": [], 543 | "source": [ 544 | "# Create new dataframe: Group by 'Sub-Category' and aggregate the mean of 'Discount'\n", 545 | "\n", 546 | "\n", 547 | "# Display first 5 rows of new dataframe\n" 548 | ] 549 | }, 550 | { 551 | "cell_type": "markdown", 552 | "metadata": {}, 553 | "source": [ 554 | "**Plot Mean Discount by Sub Category**" 555 | ] 556 | }, 557 | { 558 | "cell_type": "code", 559 | "execution_count": 29, 560 | "metadata": {}, 561 | "outputs": [], 562 | "source": [ 563 | "# Create Chart\n", 564 | "\n", 565 | "\n", 566 | "# Display Plot\n", 567 | "\n", 568 | "\n", 569 | "# Export Chart to HTML\n" 570 | ] 571 | }, 572 | { 573 | "cell_type": "markdown", 574 | "metadata": {}, 575 | "source": [ 576 | "**Plot Sales & Profit Development for the year 2020**" 577 | ] 578 | }, 579 | { 580 | "cell_type": "code", 581 | "execution_count": 31, 582 | "metadata": {}, 583 | "outputs": [], 584 | "source": [ 585 | "# Sort Values by Order Date\n", 586 | "\n", 587 | "# Add cumulative Sales & Profit\n", 588 | "\n", 589 | "# Print tail & head of sorted dataframe\n" 590 | ] 591 | }, 592 | { 593 | "cell_type": "code", 594 | "execution_count": 32, 595 | "metadata": {}, 596 | "outputs": [], 597 | "source": [ 598 | "# Create Chart\n", 599 | "\n", 600 | "# Display Plot\n", 601 | "\n", 602 | "# Export Chart to HTML\n" 603 | ] 604 | } 605 | ], 606 | "metadata": { 607 | "kernelspec": { 608 | "display_name": "Python 3", 609 | "language": "python", 610 | "name": "python3" 611 | }, 612 | "language_info": { 613 | "codemirror_mode": { 614 | "name": "ipython", 615 | "version": 3 616 | }, 617 | "file_extension": ".py", 618 | "mimetype": "text/x-python", 619 | "name": "python", 620 | "nbconvert_exporter": "python", 621 | "pygments_lexer": "ipython3", 622 | "version": "3.8.5" 623 | }, 624 | "toc": { 625 | "base_numbering": 1, 626 | "nav_menu": {}, 627 | "number_sections": false, 628 | "sideBar": true, 629 | "skip_h1_title": false, 630 | "title_cell": "Table of Contents", 631 | "title_sidebar": "Contents", 632 | "toc_cell": false, 633 | "toc_position": {}, 634 | "toc_section_display": true, 635 | "toc_window_display": false 636 | } 637 | }, 638 | "nbformat": 4, 639 | "nbformat_minor": 4 640 | } 641 | -------------------------------------------------------------------------------- /data/data.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sven-Bo/data-analysis-python/aab2589e354bd475a1c342711b873010050cef99/data/data.xlsx -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | autoviz==0.0.81 2 | numpy==1.19.3 3 | openpyxl==3.0.5 4 | pandas==1.2.0 5 | pandas-profiling==2.9.0 6 | plotly==4.14.1 7 | plotly-express==0.4.1 8 | xlrd==2.0.1 9 | --------------------------------------------------------------------------------