From 34f400d081d68d90d7dca7bcc81724229191d1a5 Mon Sep 17 00:00:00 2001 From: LeonardoPagliacci Date: Tue, 21 Nov 2023 17:59:38 +0000 Subject: [PATCH] lab solved --- ...ython_connection]leonardo-checkpoint.ipynb | 6 + Lab SQL | 9.sql | 53 + [lab-sql-9-python_connection]leonardo.ipynb | 978 ++++++++++++++++++ 3 files changed, 1037 insertions(+) create mode 100644 .ipynb_checkpoints/[lab-sql-9-python_connection]leonardo-checkpoint.ipynb create mode 100644 Lab SQL | 9.sql create mode 100644 [lab-sql-9-python_connection]leonardo.ipynb diff --git a/.ipynb_checkpoints/[lab-sql-9-python_connection]leonardo-checkpoint.ipynb b/.ipynb_checkpoints/[lab-sql-9-python_connection]leonardo-checkpoint.ipynb new file mode 100644 index 0000000..363fcab --- /dev/null +++ b/.ipynb_checkpoints/[lab-sql-9-python_connection]leonardo-checkpoint.ipynb @@ -0,0 +1,6 @@ +{ + "cells": [], + "metadata": {}, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/Lab SQL | 9.sql b/Lab SQL | 9.sql new file mode 100644 index 0000000..ac670a0 --- /dev/null +++ b/Lab SQL | 9.sql @@ -0,0 +1,53 @@ +-- Create a table `rentals_may` to store the data from rental table with information for the month of May. +-- Insert values in the table `rentals_may` using the table rental, filtering values only for the month of May. + +-- Create a table `rentals_may` to store the data from rental table with information for the month of May. +CREATE TABLE rentals_may AS +SELECT + rental_id, + rental_date, + inventory_id, + customer_id, + staff_id +FROM + sakila.rental +WHERE + MONTH(rental_date) = 5; + +-- Create a table `rentals_june` to store the data from rental table with information for the month of June. +CREATE TABLE rentals_june AS +SELECT + rental_id, + rental_date, + inventory_id, + customer_id, + staff_id +FROM + sakila.rental +WHERE + MONTH(rental_date) = 6; + + +select * from rentals_may; +select * from rentals_june; + +-- Check the number of rentals for each customer for May. +-- Check the number of rentals for each customer for June. + +select + customer_id, + count(rental_id) as count_rentals +from rentals_may +group by customer_id; + +select + customer_id, + count(rental_id) as count_june_rentals +from rentals_june +group by customer_id; + + + + + + diff --git a/[lab-sql-9-python_connection]leonardo.ipynb b/[lab-sql-9-python_connection]leonardo.ipynb new file mode 100644 index 0000000..35448a2 --- /dev/null +++ b/[lab-sql-9-python_connection]leonardo.ipynb @@ -0,0 +1,978 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "784328a2", + "metadata": {}, + "source": [ + "# Lab | SQL Queries 9\n", + "\n", + "In this lab, you will be using the [Sakila](https://dev.mysql.com/doc/sakila/en/) database of movie rentals. You have been using this database for a couple labs already, but if you need to get the data again, refer to the official [installation link](https://dev.mysql.com/doc/sakila/en/sakila-installation.html).\n", + "\n", + "The database is structured as follows:\n", + "![DB schema](https://education-team-2020.s3-eu-west-1.amazonaws.com/data-analytics/database-sakila-schema.png)\n", + "\n", + "### Instructions\n", + "\n", + "In this lab we will find the customers who were active in consecutive months of May and June. Follow the steps to complete the analysis.\n", + "\n", + "- Create a table `rentals_may` to store the data from rental table with information for the month of May.\n", + "- Insert values in the table `rentals_may` using the table rental, filtering values only for the month of May.\n", + "- Create a table `rentals_june` to store the data from rental table with information for the month of June.\n", + "- Insert values in the table `rentals_june` using the table rental, filtering values only for the month of June.\n", + "- Check the number of rentals for each customer for May.\n", + "- Check the number of rentals for each customer for June.\n", + "- Create a Python connection with SQL database and retrieve the results of the last two queries (also mentioned below) as dataframes:\n", + "\n", + " - Check the number of rentals for each customer for May\n", + " - Check the number of rentals for each customer for June\n", + "\n", + " **Hint**: You can store the results from the two queries in two separate dataframes.\n", + "\n", + "- Write a function that checks if customer borrowed more or less films in the month of June as compared to May.\n", + "\n", + " **Hint**: For this part, you can create a join between the two dataframes created before, using the merge function available for pandas dataframes. Here is a link to the documentation for the [merge function](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "id": "a0053186", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import pymysql\n", + "from sqlalchemy import create_engine" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "id": "adc8a371", + "metadata": {}, + "outputs": [], + "source": [ + "#Create a Python connection with SQL database\n", + "\n", + "#import getpass\n", + "#password = getpass.getpass()\n", + "\n", + "\n", + "connection_string = 'mysql+pymysql://root:' + password + '@localhost/bank'\n", + "engine = create_engine(connection_string)\n", + "may_rent = pd.read_sql_query('select customer_id, count(rental_id) as count_rentals from sakila.rentals_may group by customer_id', engine)\n", + "june_rent = pd.read_sql_query('select customer_id, count(rental_id) as count_rentals from sakila.rentals_june group by customer_id', engine)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 89, + "id": "6c391170", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_idcount_rentals
01302
14591
24083
33331
42225
.........
5151912
5163511
517101
5181361
519611
\n", + "

520 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " customer_id count_rentals\n", + "0 130 2\n", + "1 459 1\n", + "2 408 3\n", + "3 333 1\n", + "4 222 5\n", + ".. ... ...\n", + "515 191 2\n", + "516 351 1\n", + "517 10 1\n", + "518 136 1\n", + "519 61 1\n", + "\n", + "[520 rows x 2 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
customer_idcount_rentals
04165
15166
22395
32853
43106
.........
5854121
5863351
5872262
588221
5891261
\n", + "

590 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " customer_id count_rentals\n", + "0 416 5\n", + "1 516 6\n", + "2 239 5\n", + "3 285 3\n", + "4 310 6\n", + ".. ... ...\n", + "585 412 1\n", + "586 335 1\n", + "587 226 2\n", + "588 22 1\n", + "589 126 1\n", + "\n", + "[590 rows x 2 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Display the two dfs\n", + "\n", + "display(may_rent)\n", + "display(june_rent)" + ] + }, + { + "cell_type": "code", + "execution_count": 90, + "id": "ea598069", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Customer 1: More rentals in June\n", + "Customer 2: Equal rentals in May and June\n", + "Customer 3: More rentals in June\n", + "Customer 5: More rentals in June\n", + "Customer 6: More rentals in June\n", + "Customer 7: Equal rentals in May and June\n", + "Customer 8: More rentals in June\n", + "Customer 9: More rentals in May\n", + "Customer 10: More rentals in June\n", + "Customer 11: More rentals in June\n", + "Customer 12: More rentals in June\n", + "Customer 14: More rentals in May\n", + "Customer 16: Equal rentals in May and June\n", + "Customer 17: Equal rentals in May and June\n", + "Customer 18: More rentals in June\n", + "Customer 19: More rentals in May\n", + "Customer 20: More rentals in June\n", + "Customer 21: More rentals in June\n", + "Customer 22: More rentals in May\n", + "Customer 23: More rentals in June\n", + "Customer 24: More rentals in June\n", + "Customer 25: More rentals in June\n", + "Customer 26: More rentals in June\n", + "Customer 27: More rentals in June\n", + "Customer 28: More rentals in June\n", + "Customer 29: More rentals in June\n", + "Customer 32: More rentals in June\n", + "Customer 33: More rentals in June\n", + "Customer 35: More rentals in June\n", + "Customer 36: More rentals in May\n", + "Customer 37: More rentals in June\n", + "Customer 40: More rentals in June\n", + "Customer 42: More rentals in June\n", + "Customer 43: More rentals in May\n", + "Customer 44: More rentals in May\n", + "Customer 45: More rentals in June\n", + "Customer 46: More rentals in June\n", + "Customer 47: Equal rentals in May and June\n", + "Customer 48: More rentals in May\n", + "Customer 49: More rentals in June\n", + "Customer 50: More rentals in May\n", + "Customer 51: More rentals in May\n", + "Customer 52: More rentals in June\n", + "Customer 53: More rentals in May\n", + "Customer 54: More rentals in June\n", + "Customer 55: More rentals in June\n", + "Customer 56: Equal rentals in May and June\n", + "Customer 57: More rentals in June\n", + "Customer 58: Equal rentals in May and June\n", + "Customer 59: Equal rentals in May and June\n", + "Customer 60: More rentals in May\n", + "Customer 62: More rentals in June\n", + "Customer 64: More rentals in May\n", + "Customer 65: Equal rentals in May and June\n", + "Customer 66: More rentals in June\n", + "Customer 67: More rentals in June\n", + "Customer 69: Equal rentals in May and June\n", + "Customer 70: Equal rentals in May and June\n", + "Customer 71: More rentals in June\n", + "Customer 72: More rentals in May\n", + "Customer 73: Equal rentals in May and June\n", + "Customer 74: More rentals in June\n", + "Customer 75: More rentals in June\n", + "Customer 76: More rentals in June\n", + "Customer 77: Equal rentals in May and June\n", + "Customer 79: More rentals in May\n", + "Customer 81: More rentals in June\n", + "Customer 82: More rentals in June\n", + "Customer 83: More rentals in June\n", + "Customer 84: More rentals in June\n", + "Customer 85: More rentals in June\n", + "Customer 86: More rentals in June\n", + "Customer 87: More rentals in June\n", + "Customer 88: More rentals in June\n", + "Customer 89: More rentals in June\n", + "Customer 91: More rentals in June\n", + "Customer 92: More rentals in June\n", + "Customer 93: More rentals in May\n", + "Customer 94: More rentals in June\n", + "Customer 95: More rentals in June\n", + "Customer 98: More rentals in June\n", + "Customer 99: More rentals in June\n", + "Customer 100: More rentals in June\n", + "Customer 102: More rentals in May\n", + "Customer 103: More rentals in June\n", + "Customer 104: More rentals in June\n", + "Customer 105: More rentals in May\n", + "Customer 106: Equal rentals in May and June\n", + "Customer 107: More rentals in June\n", + "Customer 108: More rentals in June\n", + "Customer 109: More rentals in May\n", + "Customer 110: More rentals in May\n", + "Customer 111: More rentals in June\n", + "Customer 112: More rentals in June\n", + "Customer 113: More rentals in June\n", + "Customer 114: More rentals in June\n", + "Customer 115: Equal rentals in May and June\n", + "Customer 116: More rentals in June\n", + "Customer 117: Equal rentals in May and June\n", + "Customer 118: More rentals in June\n", + "Customer 119: Equal rentals in May and June\n", + "Customer 120: More rentals in June\n", + "Customer 121: More rentals in June\n", + "Customer 122: More rentals in June\n", + "Customer 123: More rentals in June\n", + "Customer 124: More rentals in May\n", + "Customer 125: More rentals in June\n", + "Customer 126: More rentals in May\n", + "Customer 127: More rentals in June\n", + "Customer 128: Equal rentals in May and June\n", + "Customer 130: More rentals in June\n", + "Customer 131: More rentals in May\n", + "Customer 133: More rentals in June\n", + "Customer 134: Equal rentals in May and June\n", + "Customer 135: More rentals in June\n", + "Customer 136: Equal rentals in May and June\n", + "Customer 137: More rentals in June\n", + "Customer 138: More rentals in June\n", + "Customer 141: More rentals in June\n", + "Customer 142: More rentals in May\n", + "Customer 143: More rentals in June\n", + "Customer 144: More rentals in June\n", + "Customer 145: More rentals in June\n", + "Customer 146: More rentals in June\n", + "Customer 147: More rentals in June\n", + "Customer 148: More rentals in June\n", + "Customer 149: More rentals in June\n", + "Customer 150: More rentals in May\n", + "Customer 151: More rentals in June\n", + "Customer 152: More rentals in May\n", + "Customer 154: Equal rentals in May and June\n", + "Customer 155: More rentals in June\n", + "Customer 156: More rentals in June\n", + "Customer 157: More rentals in May\n", + "Customer 158: More rentals in June\n", + "Customer 159: More rentals in May\n", + "Customer 161: More rentals in May\n", + "Customer 162: More rentals in June\n", + "Customer 164: More rentals in June\n", + "Customer 165: More rentals in June\n", + "Customer 166: More rentals in June\n", + "Customer 167: Equal rentals in May and June\n", + "Customer 168: More rentals in May\n", + "Customer 169: Equal rentals in May and June\n", + "Customer 170: More rentals in May\n", + "Customer 171: More rentals in June\n", + "Customer 172: Equal rentals in May and June\n", + "Customer 173: More rentals in June\n", + "Customer 174: More rentals in June\n", + "Customer 176: More rentals in June\n", + "Customer 179: More rentals in May\n", + "Customer 180: More rentals in June\n", + "Customer 181: More rentals in June\n", + "Customer 182: More rentals in June\n", + "Customer 183: More rentals in June\n", + "Customer 184: More rentals in May\n", + "Customer 185: Equal rentals in May and June\n", + "Customer 186: More rentals in June\n", + "Customer 187: More rentals in June\n", + "Customer 189: More rentals in June\n", + "Customer 190: More rentals in June\n", + "Customer 191: More rentals in June\n", + "Customer 192: Equal rentals in May and June\n", + "Customer 193: More rentals in June\n", + "Customer 194: More rentals in June\n", + "Customer 196: More rentals in June\n", + "Customer 197: Equal rentals in May and June\n", + "Customer 198: More rentals in May\n", + "Customer 199: More rentals in June\n", + "Customer 200: More rentals in June\n", + "Customer 201: More rentals in June\n", + "Customer 203: More rentals in June\n", + "Customer 204: More rentals in June\n", + "Customer 207: More rentals in May\n", + "Customer 208: More rentals in June\n", + "Customer 209: More rentals in June\n", + "Customer 210: More rentals in June\n", + "Customer 211: More rentals in June\n", + "Customer 213: More rentals in June\n", + "Customer 214: More rentals in May\n", + "Customer 215: More rentals in June\n", + "Customer 216: More rentals in June\n", + "Customer 217: More rentals in June\n", + "Customer 219: More rentals in June\n", + "Customer 220: More rentals in May\n", + "Customer 221: More rentals in June\n", + "Customer 222: More rentals in May\n", + "Customer 223: More rentals in June\n", + "Customer 225: More rentals in May\n", + "Customer 227: More rentals in June\n", + "Customer 228: More rentals in June\n", + "Customer 230: More rentals in June\n", + "Customer 231: More rentals in May\n", + "Customer 232: Equal rentals in May and June\n", + "Customer 234: More rentals in June\n", + "Customer 235: Equal rentals in May and June\n", + "Customer 236: More rentals in June\n", + "Customer 237: More rentals in June\n", + "Customer 238: More rentals in June\n", + "Customer 239: More rentals in May\n", + "Customer 240: Equal rentals in May and June\n", + "Customer 241: More rentals in June\n", + "Customer 242: More rentals in June\n", + "Customer 243: More rentals in June\n", + "Customer 244: More rentals in June\n", + "Customer 245: More rentals in May\n", + "Customer 246: Equal rentals in May and June\n", + "Customer 247: More rentals in May\n", + "Customer 248: Equal rentals in May and June\n", + "Customer 249: More rentals in June\n", + "Customer 250: More rentals in May\n", + "Customer 251: More rentals in May\n", + "Customer 252: More rentals in June\n", + "Customer 253: More rentals in June\n", + "Customer 254: More rentals in June\n", + "Customer 256: More rentals in June\n", + "Customer 257: More rentals in May\n", + "Customer 259: More rentals in June\n", + "Customer 260: More rentals in June\n", + "Customer 261: More rentals in June\n", + "Customer 262: More rentals in June\n", + "Customer 263: Equal rentals in May and June\n", + "Customer 265: More rentals in June\n", + "Customer 266: More rentals in June\n", + "Customer 267: More rentals in June\n", + "Customer 269: More rentals in May\n", + "Customer 270: More rentals in June\n", + "Customer 271: Equal rentals in May and June\n", + "Customer 272: More rentals in May\n", + "Customer 273: More rentals in June\n", + "Customer 274: More rentals in May\n", + "Customer 275: More rentals in June\n", + "Customer 276: More rentals in June\n", + "Customer 277: More rentals in June\n", + "Customer 278: More rentals in June\n", + "Customer 279: More rentals in June\n", + "Customer 280: More rentals in June\n", + "Customer 281: Equal rentals in May and June\n", + "Customer 282: More rentals in June\n", + "Customer 284: Equal rentals in May and June\n", + "Customer 286: More rentals in June\n", + "Customer 287: More rentals in June\n", + "Customer 288: More rentals in May\n", + "Customer 290: More rentals in June\n", + "Customer 291: Equal rentals in May and June\n", + "Customer 292: More rentals in June\n", + "Customer 293: More rentals in June\n", + "Customer 294: More rentals in June\n", + "Customer 295: More rentals in June\n", + "Customer 296: More rentals in May\n", + "Customer 297: More rentals in June\n", + "Customer 298: More rentals in June\n", + "Customer 299: More rentals in June\n", + "Customer 300: More rentals in May\n", + "Customer 301: Equal rentals in May and June\n", + "Customer 302: More rentals in May\n", + "Customer 303: More rentals in June\n", + "Customer 304: More rentals in June\n", + "Customer 305: More rentals in June\n", + "Customer 306: Equal rentals in May and June\n", + "Customer 307: More rentals in June\n", + "Customer 308: More rentals in June\n", + "Customer 309: More rentals in June\n", + "Customer 310: More rentals in June\n", + "Customer 311: More rentals in May\n", + "Customer 312: More rentals in May\n", + "Customer 313: More rentals in May\n", + "Customer 314: Equal rentals in May and June\n", + "Customer 315: More rentals in May\n", + "Customer 316: More rentals in June\n", + "Customer 317: More rentals in June\n", + "Customer 318: More rentals in June\n", + "Customer 319: More rentals in June\n", + "Customer 321: More rentals in May\n", + "Customer 322: More rentals in June\n", + "Customer 323: Equal rentals in May and June\n", + "Customer 324: More rentals in June\n", + "Customer 325: More rentals in June\n", + "Customer 326: More rentals in June\n", + "Customer 327: More rentals in June\n", + "Customer 328: More rentals in June\n", + "Customer 330: More rentals in June\n", + "Customer 331: More rentals in June\n", + "Customer 333: More rentals in June\n", + "Customer 334: More rentals in June\n", + "Customer 337: More rentals in May\n", + "Customer 338: More rentals in June\n", + "Customer 339: More rentals in June\n", + "Customer 343: More rentals in June\n", + "Customer 344: More rentals in June\n", + "Customer 345: More rentals in June\n", + "Customer 346: More rentals in June\n", + "Customer 348: More rentals in June\n", + "Customer 349: More rentals in June\n", + "Customer 350: More rentals in June\n", + "Customer 351: More rentals in June\n", + "Customer 352: More rentals in June\n", + "Customer 353: More rentals in June\n", + "Customer 354: More rentals in June\n", + "Customer 355: More rentals in June\n", + "Customer 356: More rentals in June\n", + "Customer 357: More rentals in June\n", + "Customer 358: More rentals in June\n", + "Customer 359: More rentals in June\n", + "Customer 360: More rentals in June\n", + "Customer 361: More rentals in June\n", + "Customer 362: More rentals in June\n", + "Customer 363: More rentals in June\n", + "Customer 364: More rentals in June\n", + "Customer 365: More rentals in June\n", + "Customer 366: More rentals in June\n", + "Customer 367: More rentals in May\n", + "Customer 368: More rentals in June\n", + "Customer 369: More rentals in May\n", + "Customer 371: More rentals in June\n", + "Customer 372: More rentals in June\n", + "Customer 373: More rentals in June\n", + "Customer 374: More rentals in June\n", + "Customer 375: More rentals in May\n", + "Customer 376: More rentals in June\n", + "Customer 378: More rentals in June\n", + "Customer 379: More rentals in June\n", + "Customer 380: More rentals in June\n", + "Customer 381: More rentals in June\n", + "Customer 382: More rentals in June\n", + "Customer 383: More rentals in June\n", + "Customer 384: More rentals in June\n", + "Customer 385: More rentals in June\n", + "Customer 386: More rentals in June\n", + "Customer 387: More rentals in June\n", + "Customer 388: More rentals in June\n", + "Customer 389: More rentals in June\n", + "Customer 390: More rentals in June\n", + "Customer 391: Equal rentals in May and June\n", + "Customer 393: More rentals in June\n", + "Customer 394: More rentals in May\n", + "Customer 396: More rentals in June\n", + "Customer 397: More rentals in June\n", + "Customer 398: More rentals in June\n", + "Customer 399: More rentals in May\n", + "Customer 400: More rentals in May\n", + "Customer 402: More rentals in June\n", + "Customer 403: More rentals in June\n", + "Customer 404: More rentals in June\n", + "Customer 405: More rentals in June\n", + "Customer 406: More rentals in June\n", + "Customer 407: More rentals in June\n", + "Customer 408: Equal rentals in May and June\n", + "Customer 409: More rentals in June\n", + "Customer 411: More rentals in June\n", + "Customer 412: More rentals in May\n", + "Customer 413: Equal rentals in May and June\n", + "Customer 414: More rentals in June\n", + "Customer 415: More rentals in June\n", + "Customer 416: More rentals in June\n", + "Customer 417: More rentals in May\n", + "Customer 419: Equal rentals in May and June\n", + "Customer 420: More rentals in June\n", + "Customer 421: More rentals in June\n", + "Customer 422: More rentals in June\n", + "Customer 424: More rentals in June\n", + "Customer 425: Equal rentals in May and June\n", + "Customer 426: More rentals in June\n", + "Customer 427: More rentals in June\n", + "Customer 428: More rentals in June\n", + "Customer 429: More rentals in May\n", + "Customer 430: More rentals in June\n", + "Customer 431: More rentals in June\n", + "Customer 432: Equal rentals in May and June\n", + "Customer 434: More rentals in June\n", + "Customer 435: Equal rentals in May and June\n", + "Customer 436: More rentals in May\n", + "Customer 437: Equal rentals in May and June\n", + "Customer 438: More rentals in June\n", + "Customer 439: More rentals in June\n", + "Customer 441: More rentals in June\n", + "Customer 442: More rentals in June\n", + "Customer 443: Equal rentals in May and June\n", + "Customer 444: More rentals in June\n", + "Customer 446: More rentals in June\n", + "Customer 447: More rentals in June\n", + "Customer 448: More rentals in June\n", + "Customer 449: Equal rentals in May and June\n", + "Customer 450: More rentals in June\n", + "Customer 451: More rentals in June\n", + "Customer 452: More rentals in June\n", + "Customer 454: More rentals in June\n", + "Customer 455: More rentals in June\n", + "Customer 456: More rentals in June\n", + "Customer 457: More rentals in June\n", + "Customer 459: More rentals in June\n", + "Customer 460: More rentals in May\n", + "Customer 461: More rentals in June\n", + "Customer 462: More rentals in June\n", + "Customer 463: More rentals in June\n", + "Customer 464: Equal rentals in May and June\n", + "Customer 465: More rentals in June\n", + "Customer 466: More rentals in June\n", + "Customer 467: More rentals in June\n", + "Customer 468: More rentals in June\n", + "Customer 469: More rentals in May\n", + "Customer 470: More rentals in June\n", + "Customer 471: More rentals in June\n", + "Customer 472: More rentals in June\n", + "Customer 473: More rentals in June\n", + "Customer 474: More rentals in June\n", + "Customer 476: More rentals in June\n", + "Customer 477: More rentals in June\n", + "Customer 479: More rentals in June\n", + "Customer 480: More rentals in May\n", + "Customer 481: More rentals in June\n", + "Customer 482: More rentals in May\n", + "Customer 483: More rentals in June\n", + "Customer 484: More rentals in June\n", + "Customer 485: More rentals in June\n", + "Customer 486: More rentals in June\n", + "Customer 489: More rentals in June\n", + "Customer 490: More rentals in May\n", + "Customer 491: More rentals in June\n", + "Customer 492: More rentals in June\n", + "Customer 493: More rentals in June\n", + "Customer 494: Equal rentals in May and June\n", + "Customer 495: More rentals in June\n", + "Customer 496: More rentals in May\n", + "Customer 497: More rentals in June\n", + "Customer 498: More rentals in June\n", + "Customer 499: More rentals in June\n", + "Customer 500: More rentals in June\n", + "Customer 501: Equal rentals in May and June\n", + "Customer 502: More rentals in May\n", + "Customer 503: More rentals in May\n", + "Customer 504: More rentals in May\n", + "Customer 505: More rentals in June\n", + "Customer 506: More rentals in May\n", + "Customer 507: More rentals in June\n", + "Customer 508: More rentals in May\n", + "Customer 509: Equal rentals in May and June\n", + "Customer 510: More rentals in June\n", + "Customer 511: More rentals in June\n", + "Customer 513: More rentals in June\n", + "Customer 514: More rentals in June\n", + "Customer 515: More rentals in June\n", + "Customer 516: More rentals in June\n", + "Customer 517: More rentals in June\n", + "Customer 518: More rentals in June\n", + "Customer 519: More rentals in June\n", + "Customer 520: More rentals in June\n", + "Customer 522: More rentals in June\n", + "Customer 523: More rentals in June\n", + "Customer 524: More rentals in June\n", + "Customer 525: Equal rentals in May and June\n", + "Customer 526: More rentals in June\n", + "Customer 528: More rentals in May\n", + "Customer 529: More rentals in June\n", + "Customer 530: More rentals in June\n", + "Customer 531: More rentals in May\n", + "Customer 532: More rentals in June\n", + "Customer 533: More rentals in June\n", + "Customer 534: More rentals in June\n", + "Customer 535: More rentals in May\n", + "Customer 536: More rentals in June\n", + "Customer 537: More rentals in June\n", + "Customer 538: More rentals in June\n", + "Customer 539: More rentals in June\n", + "Customer 541: Equal rentals in May and June\n", + "Customer 542: Equal rentals in May and June\n", + "Customer 543: More rentals in June\n", + "Customer 544: More rentals in June\n", + "Customer 545: More rentals in May\n", + "Customer 546: More rentals in June\n", + "Customer 547: More rentals in May\n", + "Customer 548: Equal rentals in May and June\n", + "Customer 549: More rentals in May\n", + "Customer 550: More rentals in June\n", + "Customer 551: More rentals in May\n", + "Customer 552: More rentals in June\n", + "Customer 553: More rentals in June\n", + "Customer 554: More rentals in June\n", + "Customer 556: More rentals in June\n", + "Customer 557: More rentals in June\n", + "Customer 560: More rentals in June\n", + "Customer 561: More rentals in June\n", + "Customer 562: More rentals in June\n", + "Customer 563: Equal rentals in May and June\n", + "Customer 564: More rentals in May\n", + "Customer 565: More rentals in June\n", + "Customer 566: More rentals in June\n", + "Customer 569: More rentals in May\n", + "Customer 570: More rentals in June\n", + "Customer 571: More rentals in June\n", + "Customer 572: More rentals in June\n", + "Customer 573: More rentals in June\n", + "Customer 574: More rentals in June\n", + "Customer 575: More rentals in May\n", + "Customer 576: More rentals in June\n", + "Customer 577: More rentals in June\n", + "Customer 578: More rentals in June\n", + "Customer 580: Equal rentals in May and June\n", + "Customer 581: More rentals in June\n", + "Customer 582: More rentals in June\n", + "Customer 584: More rentals in May\n", + "Customer 586: Equal rentals in May and June\n", + "Customer 587: More rentals in June\n", + "Customer 588: More rentals in June\n", + "Customer 589: More rentals in June\n", + "Customer 590: More rentals in June\n", + "Customer 593: More rentals in June\n", + "Customer 594: More rentals in June\n", + "Customer 595: More rentals in June\n", + "Customer 596: More rentals in May\n", + "Customer 597: More rentals in June\n", + "Customer 599: More rentals in June\n" + ] + } + ], + "source": [ + "# Write a function that checks if customer borrowed more or less films in the month of June as compared to May.\n", + "\n", + "# Function for each customer\n", + "def monthly_activity(df1, df2):\n", + " '''\n", + " Function to compare rental activity between May and June for each customer\n", + "\n", + " Parameters:\n", + " - df1: DataFrame containing rental data for May\n", + " - df2: DataFrame containing rental data for June\n", + "\n", + " Steps:\n", + " 1. Merge the DataFrames on 'customer_id'.\n", + " 2. Rename columns for clarity.\n", + " 3. Drop rows with missing values.\n", + " 4. Set 'customer_id' as the index and sort the DataFrame.\n", + " 5. Iterate over rows and compare rental counts for May and June.\n", + " 6. Print the result for each customer: more rentals in May, more in June, or equal counts.\n", + "\n", + " '''\n", + " # Merge the DataFrames on 'customer_id'\n", + " merged_df = pd.merge(df1, df2, on='customer_id', how='outer')\n", + " \n", + " # Rename columns for clarity\n", + " merged_df = merged_df.rename(columns={\n", + " 'count_rentals_x': 'may_rental_count',\n", + " 'count_rentals_y': 'june_rental_count'\n", + " })\n", + "\n", + " # Drop rows with missing values\n", + " merged_df = merged_df.dropna()\n", + "\n", + " # Set 'customer_id' as the index and sort the DataFrame\n", + " merged_df = merged_df.set_index('customer_id')\n", + " merged_df = merged_df.sort_index()\n", + "\n", + " # Iterate over rows and compare rental counts for May and June\n", + " for index, row in merged_df.iterrows():\n", + " customer_id = index\n", + " may_rentals = row['may_rental_count']\n", + " june_rentals = row['june_rental_count']\n", + "\n", + " # Print the result for each customer\n", + " if may_rentals > june_rentals:\n", + " print(f\"Customer {customer_id}: More rentals in May\")\n", + " elif may_rentals < june_rentals:\n", + " print(f\"Customer {customer_id}: More rentals in June\")\n", + " else:\n", + " print(f\"Customer {customer_id}: Equal rentals in May and June\")\n", + "\n", + " \n", + "monthly_activity(may_rent, june_rent) " + ] + }, + { + "cell_type": "code", + "execution_count": 91, + "id": "6826d206", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Choose the number of the customer you want to know the activity: 222\n", + "Customer 222: More rentals in May\n" + ] + } + ], + "source": [ + "# Function for a selected customer from the user\n", + "def input_monthly_activity(df1, df2):\n", + " '''\n", + " Function to input a customer number and compare rental activity between May and June for the specified customer.\n", + "\n", + " Parameters:\n", + " - df1: DataFrame containing rental data for May\n", + " - df2: DataFrame containing rental data for June\n", + "\n", + " Steps:\n", + " 1. Merge the DataFrames on 'customer_id'.\n", + " 2. Rename columns for clarity.\n", + " 3. Drop rows with missing values.\n", + " 4. Get user input for the customer number.\n", + " 5. Check if the input customer number is valid.\n", + " 6. Retrieve the row for the specified customer.\n", + " 7. Compare rental counts for May and June.\n", + " 8. Print the result for the chosen customer: more rentals in May, more in June, or equal counts.\n", + "\n", + " '''\n", + " # Merge the DataFrames on 'customer_id'\n", + " merged_df = pd.merge(df1, df2, on='customer_id', how='outer')\n", + " \n", + " # Rename columns for clarity\n", + " merged_df = merged_df.rename(columns={\n", + " 'count_rentals_x': 'may_rental_count',\n", + " 'count_rentals_y': 'june_rental_count'\n", + " })\n", + "\n", + " # Drop rows with missing values\n", + " merged_df = merged_df.dropna()\n", + "\n", + " # Get user input for the customer number\n", + " customer_n = int(input('Choose the number of the customer you want to know the activity: '))\n", + "\n", + " # Check if the input customer number is valid\n", + " if customer_n not in merged_df['customer_id'].values:\n", + " print(f\"Invalid customer number: {customer_n}\")\n", + " return\n", + "\n", + " # Retrieve the row for the specified customer\n", + " row = merged_df[merged_df['customer_id'] == customer_n].iloc[0]\n", + " may_rentals = row['may_rental_count']\n", + " june_rentals = row['june_rental_count']\n", + "\n", + " # Compare rental counts for May and June\n", + " if may_rentals > june_rentals:\n", + " print(f\"Customer {customer_n}: More rentals in May\")\n", + " elif may_rentals < june_rentals:\n", + " print(f\"Customer {customer_n}: More rentals in June\")\n", + " else:\n", + " print(f\"Customer {customer_n}: Equal rentals in May and June\")\n", + "\n", + "input_monthly_activity(may_rent, june_rent) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7145874d", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}