diff --git a/Lab queries 9.sql b/Lab queries 9.sql
new file mode 100644
index 0000000..e8fac3b
--- /dev/null
+++ b/Lab queries 9.sql
@@ -0,0 +1,33 @@
+select *
+from sakila.rental;
+
+create table sakila.rentals_may like sakila.rental;
+
+insert into sakila.rentals_may
+select *
+from sakila.rental
+where month(rental_date) = 5;
+
+select *
+from sakila.rentals_may;
+
+create table sakila.rentals_june like sakila.rental;
+insert into sakila.rentals_june
+select * from sakila.rental
+where month(rental_date) = 6;
+select * from sakila.rentals_june;
+
+
+select customer_id, count(rental_id) as number_rentals
+from sakila.rentals_may
+group by customer_id
+order by customer_id;
+
+
+select customer_id, count(rental_id) as number_rentals
+from sakila.rentals_june
+group by customer_id
+order by customer_id;
+
+
+
diff --git a/[lab-queries-9] Bruno.ipynb b/[lab-queries-9] Bruno.ipynb
new file mode 100644
index 0000000..ddb4162
--- /dev/null
+++ b/[lab-queries-9] Bruno.ipynb
@@ -0,0 +1,1090 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "7d83bb9e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pymysql\n",
+ "from sqlalchemy import create_engine\n",
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "bd7d1a0f",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "········\n"
+ ]
+ }
+ ],
+ "source": [
+ "import getpass\n",
+ "password = getpass.getpass()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "6a5d5ab7",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " rental_id | \n",
+ " rental_date | \n",
+ " inventory_id | \n",
+ " customer_id | \n",
+ " return_date | \n",
+ " staff_id | \n",
+ " last_update | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 2005-05-24 22:53:30 | \n",
+ " 367 | \n",
+ " 130 | \n",
+ " 2005-05-26 22:04:30 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 2005-05-24 22:54:33 | \n",
+ " 1525 | \n",
+ " 459 | \n",
+ " 2005-05-28 19:40:33 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 2005-05-24 23:03:39 | \n",
+ " 1711 | \n",
+ " 408 | \n",
+ " 2005-06-01 22:12:39 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4 | \n",
+ " 2005-05-24 23:04:41 | \n",
+ " 2452 | \n",
+ " 333 | \n",
+ " 2005-06-03 01:43:41 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 5 | \n",
+ " 2005-05-24 23:05:21 | \n",
+ " 2079 | \n",
+ " 222 | \n",
+ " 2005-06-02 04:33:21 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 16039 | \n",
+ " 16045 | \n",
+ " 2005-08-23 22:25:26 | \n",
+ " 772 | \n",
+ " 14 | \n",
+ " 2005-08-25 23:54:26 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 16040 | \n",
+ " 16046 | \n",
+ " 2005-08-23 22:26:47 | \n",
+ " 4364 | \n",
+ " 74 | \n",
+ " 2005-08-27 18:02:47 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 16041 | \n",
+ " 16047 | \n",
+ " 2005-08-23 22:42:48 | \n",
+ " 2088 | \n",
+ " 114 | \n",
+ " 2005-08-25 02:48:48 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 16042 | \n",
+ " 16048 | \n",
+ " 2005-08-23 22:43:07 | \n",
+ " 2019 | \n",
+ " 103 | \n",
+ " 2005-08-31 21:33:07 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 16043 | \n",
+ " 16049 | \n",
+ " 2005-08-23 22:50:12 | \n",
+ " 2666 | \n",
+ " 393 | \n",
+ " 2005-08-30 01:01:12 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
16044 rows × 7 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " rental_id rental_date inventory_id customer_id \\\n",
+ "0 1 2005-05-24 22:53:30 367 130 \n",
+ "1 2 2005-05-24 22:54:33 1525 459 \n",
+ "2 3 2005-05-24 23:03:39 1711 408 \n",
+ "3 4 2005-05-24 23:04:41 2452 333 \n",
+ "4 5 2005-05-24 23:05:21 2079 222 \n",
+ "... ... ... ... ... \n",
+ "16039 16045 2005-08-23 22:25:26 772 14 \n",
+ "16040 16046 2005-08-23 22:26:47 4364 74 \n",
+ "16041 16047 2005-08-23 22:42:48 2088 114 \n",
+ "16042 16048 2005-08-23 22:43:07 2019 103 \n",
+ "16043 16049 2005-08-23 22:50:12 2666 393 \n",
+ "\n",
+ " return_date staff_id last_update \n",
+ "0 2005-05-26 22:04:30 1 2006-02-15 21:30:53 \n",
+ "1 2005-05-28 19:40:33 1 2006-02-15 21:30:53 \n",
+ "2 2005-06-01 22:12:39 1 2006-02-15 21:30:53 \n",
+ "3 2005-06-03 01:43:41 2 2006-02-15 21:30:53 \n",
+ "4 2005-06-02 04:33:21 1 2006-02-15 21:30:53 \n",
+ "... ... ... ... \n",
+ "16039 2005-08-25 23:54:26 1 2006-02-15 21:30:53 \n",
+ "16040 2005-08-27 18:02:47 2 2006-02-15 21:30:53 \n",
+ "16041 2005-08-25 02:48:48 2 2006-02-15 21:30:53 \n",
+ "16042 2005-08-31 21:33:07 1 2006-02-15 21:30:53 \n",
+ "16043 2005-08-30 01:01:12 2 2006-02-15 21:30:53 \n",
+ "\n",
+ "[16044 rows x 7 columns]"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "connection_string = 'mysql+pymysql://root:' + password + '@localhost/sakila'\n",
+ "engine = create_engine(connection_string)\n",
+ "data = pd.read_sql_query('SELECT * FROM SAKILA.RENTAL', engine)\n",
+ "data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 52,
+ "id": "2cba561e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "rental_id int64\n",
+ "rental_date datetime64[ns]\n",
+ "inventory_id int64\n",
+ "customer_id int64\n",
+ "return_date datetime64[ns]\n",
+ "staff_id int64\n",
+ "last_update datetime64[ns]\n",
+ "dtype: object"
+ ]
+ },
+ "execution_count": 52,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data.dtypes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 56,
+ "id": "da5a798a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " rental_id | \n",
+ " rental_date | \n",
+ " inventory_id | \n",
+ " customer_id | \n",
+ " return_date | \n",
+ " staff_id | \n",
+ " last_update | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 2005-05-24 22:53:30 | \n",
+ " 367 | \n",
+ " 130 | \n",
+ " 2005-05-26 22:04:30 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 2005-05-24 22:54:33 | \n",
+ " 1525 | \n",
+ " 459 | \n",
+ " 2005-05-28 19:40:33 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 2005-05-24 23:03:39 | \n",
+ " 1711 | \n",
+ " 408 | \n",
+ " 2005-06-01 22:12:39 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4 | \n",
+ " 2005-05-24 23:04:41 | \n",
+ " 2452 | \n",
+ " 333 | \n",
+ " 2005-06-03 01:43:41 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 5 | \n",
+ " 2005-05-24 23:05:21 | \n",
+ " 2079 | \n",
+ " 222 | \n",
+ " 2005-06-02 04:33:21 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 1151 | \n",
+ " 1153 | \n",
+ " 2005-05-31 21:36:44 | \n",
+ " 2725 | \n",
+ " 506 | \n",
+ " 2005-06-10 01:26:44 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 1152 | \n",
+ " 1154 | \n",
+ " 2005-05-31 21:42:09 | \n",
+ " 2732 | \n",
+ " 59 | \n",
+ " 2005-06-08 16:40:09 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 1153 | \n",
+ " 1155 | \n",
+ " 2005-05-31 22:17:11 | \n",
+ " 2048 | \n",
+ " 251 | \n",
+ " 2005-06-04 20:27:11 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 1154 | \n",
+ " 1156 | \n",
+ " 2005-05-31 22:37:34 | \n",
+ " 460 | \n",
+ " 106 | \n",
+ " 2005-06-01 23:02:34 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 1155 | \n",
+ " 1157 | \n",
+ " 2005-05-31 22:47:45 | \n",
+ " 1449 | \n",
+ " 61 | \n",
+ " 2005-06-02 18:01:45 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
1156 rows × 7 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " rental_id rental_date inventory_id customer_id \\\n",
+ "0 1 2005-05-24 22:53:30 367 130 \n",
+ "1 2 2005-05-24 22:54:33 1525 459 \n",
+ "2 3 2005-05-24 23:03:39 1711 408 \n",
+ "3 4 2005-05-24 23:04:41 2452 333 \n",
+ "4 5 2005-05-24 23:05:21 2079 222 \n",
+ "... ... ... ... ... \n",
+ "1151 1153 2005-05-31 21:36:44 2725 506 \n",
+ "1152 1154 2005-05-31 21:42:09 2732 59 \n",
+ "1153 1155 2005-05-31 22:17:11 2048 251 \n",
+ "1154 1156 2005-05-31 22:37:34 460 106 \n",
+ "1155 1157 2005-05-31 22:47:45 1449 61 \n",
+ "\n",
+ " return_date staff_id last_update \n",
+ "0 2005-05-26 22:04:30 1 2006-02-15 21:30:53 \n",
+ "1 2005-05-28 19:40:33 1 2006-02-15 21:30:53 \n",
+ "2 2005-06-01 22:12:39 1 2006-02-15 21:30:53 \n",
+ "3 2005-06-03 01:43:41 2 2006-02-15 21:30:53 \n",
+ "4 2005-06-02 04:33:21 1 2006-02-15 21:30:53 \n",
+ "... ... ... ... \n",
+ "1151 2005-06-10 01:26:44 2 2006-02-15 21:30:53 \n",
+ "1152 2005-06-08 16:40:09 1 2006-02-15 21:30:53 \n",
+ "1153 2005-06-04 20:27:11 2 2006-02-15 21:30:53 \n",
+ "1154 2005-06-01 23:02:34 2 2006-02-15 21:30:53 \n",
+ "1155 2005-06-02 18:01:45 1 2006-02-15 21:30:53 \n",
+ "\n",
+ "[1156 rows x 7 columns]"
+ ]
+ },
+ "execution_count": 56,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "start_date = '2005-05-01 00:00:00'\n",
+ "end_date = '2005-05-31 23:59:59'\n",
+ "\n",
+ "may_rentals = data[(data['rental_date'] >= start_date) & (data['rental_date'] <= end_date)]\n",
+ "may_rentals"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "id": "2553d1a8",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " customer_id | \n",
+ " may_rentals_count | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 5 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 6 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 515 | \n",
+ " 594 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | 516 | \n",
+ " 595 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 517 | \n",
+ " 596 | \n",
+ " 6 | \n",
+ "
\n",
+ " \n",
+ " | 518 | \n",
+ " 597 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 519 | \n",
+ " 599 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
520 rows × 2 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " customer_id may_rentals_count\n",
+ "0 1 2\n",
+ "1 2 1\n",
+ "2 3 2\n",
+ "3 5 3\n",
+ "4 6 3\n",
+ ".. ... ...\n",
+ "515 594 4\n",
+ "516 595 1\n",
+ "517 596 6\n",
+ "518 597 2\n",
+ "519 599 1\n",
+ "\n",
+ "[520 rows x 2 columns]"
+ ]
+ },
+ "execution_count": 65,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "may_rentals_count = may_rentals.groupby('customer_id')['rental_id'].count().reset_index()\n",
+ "may_rentals_count.columns = ['customer_id', 'may_rentals_count']\n",
+ "may_rentals_count"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 66,
+ "id": "7029ec9e",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " rental_id | \n",
+ " rental_date | \n",
+ " inventory_id | \n",
+ " customer_id | \n",
+ " return_date | \n",
+ " staff_id | \n",
+ " last_update | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 1156 | \n",
+ " 1158 | \n",
+ " 2005-06-14 22:53:33 | \n",
+ " 1632 | \n",
+ " 416 | \n",
+ " 2005-06-18 21:37:33 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 1157 | \n",
+ " 1159 | \n",
+ " 2005-06-14 22:55:13 | \n",
+ " 4395 | \n",
+ " 516 | \n",
+ " 2005-06-17 02:11:13 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 1158 | \n",
+ " 1160 | \n",
+ " 2005-06-14 23:00:34 | \n",
+ " 2795 | \n",
+ " 239 | \n",
+ " 2005-06-18 01:58:34 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 1159 | \n",
+ " 1161 | \n",
+ " 2005-06-14 23:07:08 | \n",
+ " 1690 | \n",
+ " 285 | \n",
+ " 2005-06-21 17:12:08 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 1160 | \n",
+ " 1162 | \n",
+ " 2005-06-14 23:09:38 | \n",
+ " 987 | \n",
+ " 310 | \n",
+ " 2005-06-23 22:00:38 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 3462 | \n",
+ " 3465 | \n",
+ " 2005-06-21 22:10:01 | \n",
+ " 1488 | \n",
+ " 510 | \n",
+ " 2005-06-30 21:35:01 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 3463 | \n",
+ " 3466 | \n",
+ " 2005-06-21 22:13:33 | \n",
+ " 371 | \n",
+ " 226 | \n",
+ " 2005-06-25 21:01:33 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 3464 | \n",
+ " 3467 | \n",
+ " 2005-06-21 22:19:25 | \n",
+ " 729 | \n",
+ " 543 | \n",
+ " 2005-06-27 00:03:25 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 3465 | \n",
+ " 3468 | \n",
+ " 2005-06-21 22:43:45 | \n",
+ " 2899 | \n",
+ " 100 | \n",
+ " 2005-06-30 01:49:45 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 3466 | \n",
+ " 3469 | \n",
+ " 2005-06-21 22:48:59 | \n",
+ " 4087 | \n",
+ " 181 | \n",
+ " 2005-06-28 19:32:59 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
2311 rows × 7 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " rental_id rental_date inventory_id customer_id \\\n",
+ "1156 1158 2005-06-14 22:53:33 1632 416 \n",
+ "1157 1159 2005-06-14 22:55:13 4395 516 \n",
+ "1158 1160 2005-06-14 23:00:34 2795 239 \n",
+ "1159 1161 2005-06-14 23:07:08 1690 285 \n",
+ "1160 1162 2005-06-14 23:09:38 987 310 \n",
+ "... ... ... ... ... \n",
+ "3462 3465 2005-06-21 22:10:01 1488 510 \n",
+ "3463 3466 2005-06-21 22:13:33 371 226 \n",
+ "3464 3467 2005-06-21 22:19:25 729 543 \n",
+ "3465 3468 2005-06-21 22:43:45 2899 100 \n",
+ "3466 3469 2005-06-21 22:48:59 4087 181 \n",
+ "\n",
+ " return_date staff_id last_update \n",
+ "1156 2005-06-18 21:37:33 2 2006-02-15 21:30:53 \n",
+ "1157 2005-06-17 02:11:13 1 2006-02-15 21:30:53 \n",
+ "1158 2005-06-18 01:58:34 2 2006-02-15 21:30:53 \n",
+ "1159 2005-06-21 17:12:08 1 2006-02-15 21:30:53 \n",
+ "1160 2005-06-23 22:00:38 1 2006-02-15 21:30:53 \n",
+ "... ... ... ... \n",
+ "3462 2005-06-30 21:35:01 1 2006-02-15 21:30:53 \n",
+ "3463 2005-06-25 21:01:33 2 2006-02-15 21:30:53 \n",
+ "3464 2005-06-27 00:03:25 2 2006-02-15 21:30:53 \n",
+ "3465 2005-06-30 01:49:45 1 2006-02-15 21:30:53 \n",
+ "3466 2005-06-28 19:32:59 1 2006-02-15 21:30:53 \n",
+ "\n",
+ "[2311 rows x 7 columns]"
+ ]
+ },
+ "execution_count": 66,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "start_date = '2005-06-01 00:00:00'\n",
+ "end_date = '2005-06-30 23:59:59'\n",
+ "\n",
+ "june_rentals = data[(data['rental_date'] >= start_date) & (data['rental_date'] <= end_date)]\n",
+ "june_rentals"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "id": "1c5c0d3a",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " customer_id | \n",
+ " june_rentals_count | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 7 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4 | \n",
+ " 6 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 5 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 585 | \n",
+ " 595 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 586 | \n",
+ " 596 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 587 | \n",
+ " 597 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | 588 | \n",
+ " 598 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 589 | \n",
+ " 599 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
590 rows × 2 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " customer_id june_rentals_count\n",
+ "0 1 7\n",
+ "1 2 1\n",
+ "2 3 4\n",
+ "3 4 6\n",
+ "4 5 5\n",
+ ".. ... ...\n",
+ "585 595 2\n",
+ "586 596 2\n",
+ "587 597 3\n",
+ "588 598 1\n",
+ "589 599 4\n",
+ "\n",
+ "[590 rows x 2 columns]"
+ ]
+ },
+ "execution_count": 72,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "june_rentals_count = june_rentals.groupby('customer_id')['rental_id'].count().reset_index()\n",
+ "june_rentals_count.columns = ['customer_id', 'june_rentals_count']\n",
+ "june_rentals_count"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "id": "bf2763c9",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " customer_id | \n",
+ " may_count | \n",
+ " june_count | \n",
+ " comparison | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 2.0 | \n",
+ " 7.0 | \n",
+ " More | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 2 | \n",
+ " 1.0 | \n",
+ " 1.0 | \n",
+ " Equal | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 3 | \n",
+ " 2.0 | \n",
+ " 4.0 | \n",
+ " More | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 5 | \n",
+ " 1.0 | \n",
+ " 5.0 | \n",
+ " More | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 6 | \n",
+ " 3.0 | \n",
+ " 4.0 | \n",
+ " More | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 592 | \n",
+ " 585 | \n",
+ " 0.0 | \n",
+ " 4.0 | \n",
+ " More | \n",
+ "
\n",
+ " \n",
+ " | 593 | \n",
+ " 591 | \n",
+ " 0.0 | \n",
+ " 3.0 | \n",
+ " More | \n",
+ "
\n",
+ " \n",
+ " | 594 | \n",
+ " 592 | \n",
+ " 0.0 | \n",
+ " 5.0 | \n",
+ " More | \n",
+ "
\n",
+ " \n",
+ " | 595 | \n",
+ " 598 | \n",
+ " 0.0 | \n",
+ " 1.0 | \n",
+ " More | \n",
+ "
\n",
+ " \n",
+ " | 596 | \n",
+ " 599 | \n",
+ " 0.0 | \n",
+ " 4.0 | \n",
+ " More | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
597 rows × 4 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " customer_id may_count june_count comparison\n",
+ "0 1 2.0 7.0 More\n",
+ "1 2 1.0 1.0 Equal\n",
+ "2 3 2.0 4.0 More\n",
+ "3 5 1.0 5.0 More\n",
+ "4 6 3.0 4.0 More\n",
+ ".. ... ... ... ...\n",
+ "592 585 0.0 4.0 More\n",
+ "593 591 0.0 3.0 More\n",
+ "594 592 0.0 5.0 More\n",
+ "595 598 0.0 1.0 More\n",
+ "596 599 0.0 4.0 More\n",
+ "\n",
+ "[597 rows x 4 columns]"
+ ]
+ },
+ "execution_count": 77,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "start_may = '2005-05-01 00:00:00'\n",
+ "end_may = '2005-05-31 00:00:00'\n",
+ "start_june = '2005-06-01 00:00:00'\n",
+ "end_june = '2005-06-30 23:59:59'\n",
+ "\n",
+ "def compare_rentals(data, start_may, end_may, start_june, end_june):\n",
+ "\n",
+ " may_rentals = data[(data['rental_date'] >= start_may) & (data['rental_date'] <= end_may)]\n",
+ " june_rentals = data[(data['rental_date'] >= start_june) & (data['rental_date'] <= end_june)]\n",
+ "\n",
+ " may_counts = may_rentals.groupby('customer_id').size().reset_index(name='may_count')\n",
+ " june_counts = june_rentals.groupby('customer_id').size().reset_index(name='june_count')\n",
+ "\n",
+ " merged_counts = pd.merge(may_counts, june_counts, on='customer_id', how='outer').fillna(0)\n",
+ "\n",
+ "\n",
+ " merged_counts['comparison'] = 'Equal'\n",
+ " merged_counts.loc[merged_counts['june_count'] > merged_counts['may_count'], 'comparison'] = 'More'\n",
+ " merged_counts.loc[merged_counts['june_count'] < merged_counts['may_count'], 'comparison'] = 'Less'\n",
+ "\n",
+ " return merged_counts\n",
+ "\n",
+ "result = compare_rentals(data, start_may, end_may, start_june, end_june)\n",
+ "\n",
+ "result\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "6ff79070",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "561bcb74",
+ "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
+}