diff --git a/tarealab.ipynb b/tarealab.ipynb
new file mode 100644
index 0000000..486a2ed
--- /dev/null
+++ b/tarealab.ipynb
@@ -0,0 +1,1128 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "c8b965a8",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Requirement already satisfied: mysql in c:\\users\\tachi\\appdata\\local\\programs\\python\\python313\\lib\\site-packages (0.0.3)\n",
+ "Requirement already satisfied: mysqlclient in c:\\users\\tachi\\appdata\\local\\programs\\python\\python313\\lib\\site-packages (from mysql) (2.2.7)\n",
+ "Note: you may need to restart the kernel to use updated packages.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "[notice] A new release of pip is available: 24.3.1 -> 25.3\n",
+ "[notice] To update, run: python.exe -m pip install --upgrade pip\n"
+ ]
+ }
+ ],
+ "source": [
+ "pip install mysql"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "74729439",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import numpy as np\n",
+ "import mysql.connector\n",
+ "from sqlalchemy import create_engine\n",
+ "\n",
+ "import getpass # To get the password without showing the input\n",
+ "password = getpass.getpass()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "80e39be6",
+ "metadata": {},
+ "source": [
+ "para las claves foraneas"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "04553015",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Requirement already satisfied: cryptography in c:\\users\\tachi\\appdata\\local\\programs\\python\\python313\\lib\\site-packages (46.0.4)\n",
+ "Requirement already satisfied: cffi>=2.0.0 in c:\\users\\tachi\\appdata\\local\\programs\\python\\python313\\lib\\site-packages (from cryptography) (2.0.0)\n",
+ "Requirement already satisfied: pycparser in c:\\users\\tachi\\appdata\\local\\programs\\python\\python313\\lib\\site-packages (from cffi>=2.0.0->cryptography) (2.23)\n",
+ "Note: you may need to restart the kernel to use updated packages.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "[notice] A new release of pip is available: 24.3.1 -> 25.3\n",
+ "[notice] To update, run: python.exe -m pip install --upgrade pip\n"
+ ]
+ }
+ ],
+ "source": [
+ "%pip install cryptography\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "38aa4028",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sqlalchemy import create_engine\n",
+ "\n",
+ "\n",
+ "str_conn = \"mysql+pymysql://root:\"+password+\"@localhost:3306/sakila\"\n",
+ "engine = create_engine(str_conn)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "14aa045f",
+ "metadata": {},
+ "source": [
+ "## ejercicio 2"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "91e87de7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "\n",
+ "def rental_month(engine,month,year):\n",
+ "\n",
+ " query=\"SELECT * FROM rental WHERE MONTH(rental_date) = %s AND YEAR(rental_date) = %s\"\n",
+ " df=pd.read_sql(query, engine, params=(month, year))\n",
+ " return df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 40,
+ "id": "d0911b7d",
+ "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",
+ " 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",
+ " | 1 | \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",
+ " | 2 | \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",
+ " | 3 | \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",
+ " | 4 | \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",
+ "
"
+ ],
+ "text/plain": [
+ " rental_id rental_date inventory_id customer_id \\\n",
+ "0 1158 2005-06-14 22:53:33 1632 416 \n",
+ "1 1159 2005-06-14 22:55:13 4395 516 \n",
+ "2 1160 2005-06-14 23:00:34 2795 239 \n",
+ "3 1161 2005-06-14 23:07:08 1690 285 \n",
+ "4 1162 2005-06-14 23:09:38 987 310 \n",
+ "\n",
+ " return_date staff_id last_update \n",
+ "0 2005-06-18 21:37:33 2 2006-02-15 21:30:53 \n",
+ "1 2005-06-17 02:11:13 1 2006-02-15 21:30:53 \n",
+ "2 2005-06-18 01:58:34 2 2006-02-15 21:30:53 \n",
+ "3 2005-06-21 17:12:08 1 2006-02-15 21:30:53 \n",
+ "4 2005-06-23 22:00:38 1 2006-02-15 21:30:53 "
+ ]
+ },
+ "execution_count": 40,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "dfrental=rental_month(engine,6,2005)\n",
+ "dfrental.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b5879c23",
+ "metadata": {},
+ "source": [
+ "## ejercicio 3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 41,
+ "id": "7042469a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\n",
+ "def rental_count_month(df, month, year):\n",
+ " df_counts = df.groupby('customer_id')[['rental_id']].count().reset_index()\n",
+ " new_col_name = f\"alquileres_{month:02d}_{year}\"\n",
+ " df_counts.columns = ['customer_id', new_col_name]\n",
+ " \n",
+ " return df_counts\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "id": "c73a6a01",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_rental_count_month=rental_count_month(dfrental,5,2005)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 42,
+ "id": "02a3cc87",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " customer_id | \n",
+ " alquileres_05_2005 | \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",
+ "
"
+ ],
+ "text/plain": [
+ " customer_id alquileres_05_2005\n",
+ "0 1 2\n",
+ "1 2 1\n",
+ "2 3 2\n",
+ "3 5 3\n",
+ "4 6 3"
+ ]
+ },
+ "execution_count": 42,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_rental_count_month.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5223470b",
+ "metadata": {},
+ "source": [
+ "## ejercicio 4"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "22d5bc10",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def compare_rentals(df1,df2):\n",
+ " df_merge=pd.merge(df1,df2,on='customer_id',how='inner')\n",
+ " \n",
+ " return df_merge\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 48,
+ "id": "3bc96ad8",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " customer_id | \n",
+ " alquileres_05_2005 | \n",
+ " rental_id | \n",
+ " rental_date | \n",
+ " inventory_id | \n",
+ " return_date | \n",
+ " staff_id | \n",
+ " last_update | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1185 | \n",
+ " 2005-06-15 00:54:12 | \n",
+ " 2785 | \n",
+ " 2005-06-23 02:42:12 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1422 | \n",
+ " 2005-06-15 18:02:53 | \n",
+ " 1021 | \n",
+ " 2005-06-19 15:54:53 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1476 | \n",
+ " 2005-06-15 21:08:46 | \n",
+ " 1407 | \n",
+ " 2005-06-25 02:26:46 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1725 | \n",
+ " 2005-06-16 15:18:57 | \n",
+ " 726 | \n",
+ " 2005-06-17 21:05:57 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 2308 | \n",
+ " 2005-06-18 08:41:48 | \n",
+ " 197 | \n",
+ " 2005-06-22 03:36:48 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " customer_id alquileres_05_2005 rental_id rental_date \\\n",
+ "0 1 2 1185 2005-06-15 00:54:12 \n",
+ "1 1 2 1422 2005-06-15 18:02:53 \n",
+ "2 1 2 1476 2005-06-15 21:08:46 \n",
+ "3 1 2 1725 2005-06-16 15:18:57 \n",
+ "4 1 2 2308 2005-06-18 08:41:48 \n",
+ "\n",
+ " inventory_id return_date staff_id last_update \n",
+ "0 2785 2005-06-23 02:42:12 2 2006-02-15 21:30:53 \n",
+ "1 1021 2005-06-19 15:54:53 2 2006-02-15 21:30:53 \n",
+ "2 1407 2005-06-25 02:26:46 1 2006-02-15 21:30:53 \n",
+ "3 726 2005-06-17 21:05:57 1 2006-02-15 21:30:53 \n",
+ "4 197 2005-06-22 03:36:48 2 2006-02-15 21:30:53 "
+ ]
+ },
+ "execution_count": 48,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_final=compare_rentals(df_rental_count_month,dfrental)\n",
+ "df_final.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 49,
+ "id": "0b508da8",
+ "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",
+ " 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",
+ " | 1 | \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",
+ " | 2 | \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",
+ " | 3 | \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",
+ " | 4 | \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",
+ "
"
+ ],
+ "text/plain": [
+ " rental_id rental_date inventory_id customer_id \\\n",
+ "0 1158 2005-06-14 22:53:33 1632 416 \n",
+ "1 1159 2005-06-14 22:55:13 4395 516 \n",
+ "2 1160 2005-06-14 23:00:34 2795 239 \n",
+ "3 1161 2005-06-14 23:07:08 1690 285 \n",
+ "4 1162 2005-06-14 23:09:38 987 310 \n",
+ "\n",
+ " return_date staff_id last_update \n",
+ "0 2005-06-18 21:37:33 2 2006-02-15 21:30:53 \n",
+ "1 2005-06-17 02:11:13 1 2006-02-15 21:30:53 \n",
+ "2 2005-06-18 01:58:34 2 2006-02-15 21:30:53 \n",
+ "3 2005-06-21 17:12:08 1 2006-02-15 21:30:53 \n",
+ "4 2005-06-23 22:00:38 1 2006-02-15 21:30:53 "
+ ]
+ },
+ "execution_count": 49,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_junio=rental_month(engine,6,2005)\n",
+ "df_junio.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "id": "82f14fe4",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " customer_id | \n",
+ " alquileres_06_2005 | \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",
+ "
"
+ ],
+ "text/plain": [
+ " customer_id alquileres_06_2005\n",
+ "0 1 7\n",
+ "1 2 1\n",
+ "2 3 4\n",
+ "3 4 6\n",
+ "4 5 5"
+ ]
+ },
+ "execution_count": 57,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_contar=rental_count_month(df_junio,6,2005)\n",
+ "df_contar.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "id": "fea31b55",
+ "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",
+ " alquileres_06_2005 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \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",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \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",
+ " 6 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \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",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \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",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \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",
+ " 6 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " rental_id rental_date inventory_id customer_id \\\n",
+ "0 1158 2005-06-14 22:53:33 1632 416 \n",
+ "1 1159 2005-06-14 22:55:13 4395 516 \n",
+ "2 1160 2005-06-14 23:00:34 2795 239 \n",
+ "3 1161 2005-06-14 23:07:08 1690 285 \n",
+ "4 1162 2005-06-14 23:09:38 987 310 \n",
+ "\n",
+ " return_date staff_id last_update alquileres_06_2005 \n",
+ "0 2005-06-18 21:37:33 2 2006-02-15 21:30:53 5 \n",
+ "1 2005-06-17 02:11:13 1 2006-02-15 21:30:53 6 \n",
+ "2 2005-06-18 01:58:34 2 2006-02-15 21:30:53 5 \n",
+ "3 2005-06-21 17:12:08 1 2006-02-15 21:30:53 3 \n",
+ "4 2005-06-23 22:00:38 1 2006-02-15 21:30:53 6 "
+ ]
+ },
+ "execution_count": 58,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_meses=compare_rentals(df_junio,df_contar)\n",
+ "df_meses.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "id": "13725788",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " customer_id | \n",
+ " alquileres_05_2005 | \n",
+ " rental_id | \n",
+ " rental_date | \n",
+ " inventory_id | \n",
+ " return_date | \n",
+ " staff_id | \n",
+ " last_update | \n",
+ " alquileres_06_2005 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1185 | \n",
+ " 2005-06-15 00:54:12 | \n",
+ " 2785 | \n",
+ " 2005-06-23 02:42:12 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ " 7 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1422 | \n",
+ " 2005-06-15 18:02:53 | \n",
+ " 1021 | \n",
+ " 2005-06-19 15:54:53 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ " 7 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1476 | \n",
+ " 2005-06-15 21:08:46 | \n",
+ " 1407 | \n",
+ " 2005-06-25 02:26:46 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ " 7 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1725 | \n",
+ " 2005-06-16 15:18:57 | \n",
+ " 726 | \n",
+ " 2005-06-17 21:05:57 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ " 7 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 2308 | \n",
+ " 2005-06-18 08:41:48 | \n",
+ " 197 | \n",
+ " 2005-06-22 03:36:48 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ " 7 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " customer_id alquileres_05_2005 rental_id rental_date \\\n",
+ "0 1 2 1185 2005-06-15 00:54:12 \n",
+ "1 1 2 1422 2005-06-15 18:02:53 \n",
+ "2 1 2 1476 2005-06-15 21:08:46 \n",
+ "3 1 2 1725 2005-06-16 15:18:57 \n",
+ "4 1 2 2308 2005-06-18 08:41:48 \n",
+ "\n",
+ " inventory_id return_date staff_id last_update \\\n",
+ "0 2785 2005-06-23 02:42:12 2 2006-02-15 21:30:53 \n",
+ "1 1021 2005-06-19 15:54:53 2 2006-02-15 21:30:53 \n",
+ "2 1407 2005-06-25 02:26:46 1 2006-02-15 21:30:53 \n",
+ "3 726 2005-06-17 21:05:57 1 2006-02-15 21:30:53 \n",
+ "4 197 2005-06-22 03:36:48 2 2006-02-15 21:30:53 \n",
+ "\n",
+ " alquileres_06_2005 \n",
+ "0 7 \n",
+ "1 7 \n",
+ "2 7 \n",
+ "3 7 \n",
+ "4 7 "
+ ]
+ },
+ "execution_count": 59,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "dfsolucion=compare_rentals(df_final,df_contar)\n",
+ "dfsolucion.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "id": "9e3cec2c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dfsolucion['diferencia']=dfsolucion['alquileres_06_2005']-dfsolucion['alquileres_05_2005']"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 61,
+ "id": "a6015f2d",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " customer_id | \n",
+ " alquileres_05_2005 | \n",
+ " rental_id | \n",
+ " rental_date | \n",
+ " inventory_id | \n",
+ " return_date | \n",
+ " staff_id | \n",
+ " last_update | \n",
+ " alquileres_06_2005 | \n",
+ " diferencia | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1185 | \n",
+ " 2005-06-15 00:54:12 | \n",
+ " 2785 | \n",
+ " 2005-06-23 02:42:12 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ " 7 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1422 | \n",
+ " 2005-06-15 18:02:53 | \n",
+ " 1021 | \n",
+ " 2005-06-19 15:54:53 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ " 7 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1476 | \n",
+ " 2005-06-15 21:08:46 | \n",
+ " 1407 | \n",
+ " 2005-06-25 02:26:46 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ " 7 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 1725 | \n",
+ " 2005-06-16 15:18:57 | \n",
+ " 726 | \n",
+ " 2005-06-17 21:05:57 | \n",
+ " 1 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ " 7 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 2308 | \n",
+ " 2005-06-18 08:41:48 | \n",
+ " 197 | \n",
+ " 2005-06-22 03:36:48 | \n",
+ " 2 | \n",
+ " 2006-02-15 21:30:53 | \n",
+ " 7 | \n",
+ " 5 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " customer_id alquileres_05_2005 rental_id rental_date \\\n",
+ "0 1 2 1185 2005-06-15 00:54:12 \n",
+ "1 1 2 1422 2005-06-15 18:02:53 \n",
+ "2 1 2 1476 2005-06-15 21:08:46 \n",
+ "3 1 2 1725 2005-06-16 15:18:57 \n",
+ "4 1 2 2308 2005-06-18 08:41:48 \n",
+ "\n",
+ " inventory_id return_date staff_id last_update \\\n",
+ "0 2785 2005-06-23 02:42:12 2 2006-02-15 21:30:53 \n",
+ "1 1021 2005-06-19 15:54:53 2 2006-02-15 21:30:53 \n",
+ "2 1407 2005-06-25 02:26:46 1 2006-02-15 21:30:53 \n",
+ "3 726 2005-06-17 21:05:57 1 2006-02-15 21:30:53 \n",
+ "4 197 2005-06-22 03:36:48 2 2006-02-15 21:30:53 \n",
+ "\n",
+ " alquileres_06_2005 diferencia \n",
+ "0 7 5 \n",
+ "1 7 5 \n",
+ "2 7 5 \n",
+ "3 7 5 \n",
+ "4 7 5 "
+ ]
+ },
+ "execution_count": 61,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "dfsolucion.head()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "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.13.1"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}