diff --git a/lab-hypothesis-testing.ipynb b/lab-hypothesis-testing.ipynb
index 0cc26d5..52690ee 100644
--- a/lab-hypothesis-testing.ipynb
+++ b/lab-hypothesis-testing.ipynb
@@ -27,6 +27,25 @@
"**Challenge 1**"
]
},
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "\n",
+ "Columna\tTipo\tDescripción \n",
+ "Name\tstr\tNombre del Pokémon \n",
+ "Type 1\tstr\tTipo principal \n",
+ "Type 2\tstr/NaN\tTipo secundario \n",
+ "HP\tint/float\tVida base (3 NaN) \n",
+ "Attack\tint\tAtaque físico \n",
+ "Defense\tint\tDefensa física \n",
+ "Sp. Atk\tint\tAtaque especial \n",
+ "Sp. Def\tint\tDefensa especial \n",
+ "Speed\tint\tVelocidad \n",
+ "Generation\tint\tGeneración (1–6) \n",
+ "Legendary\tbool\t¿Es legendario? "
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
@@ -38,20 +57,17 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
- "#libraries\n",
"import pandas as pd\n",
- "import scipy.stats as st\n",
- "import numpy as np\n",
- "\n"
+ "from scipy.stats import ttest_ind #para los test\n"
]
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 58,
"metadata": {},
"outputs": [
{
@@ -159,185 +175,367 @@
"
1 | \n",
" False | \n",
" \n",
- " \n",
- " | ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
+ " \n",
+ "\n",
+ ""
+ ],
+ "text/plain": [
+ " Name Type 1 Type 2 HP Attack Defense Sp. Atk Sp. Def Speed \\\n",
+ "0 Bulbasaur Grass Poison 45 49 49 65 65 45 \n",
+ "1 Ivysaur Grass Poison 60 62 63 80 80 60 \n",
+ "2 Venusaur Grass Poison 80 82 83 100 100 80 \n",
+ "3 Mega Venusaur Grass Poison 80 100 123 122 120 80 \n",
+ "4 Charmander Fire NaN 39 52 43 60 50 65 \n",
+ "\n",
+ " Generation Legendary \n",
+ "0 1 False \n",
+ "1 1 False \n",
+ "2 1 False \n",
+ "3 1 False \n",
+ "4 1 False "
+ ]
+ },
+ "execution_count": 58,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df = pd.read_csv(\"https://raw.githubusercontent.com/data-bootcamp-v4/data/main/pokemon.csv\")\n",
+ "df.head()\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "LE ECHO UN VISTAZO A LO QUE TIENE ESTE DATAFRAME"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Name | \n",
+ " Type 1 | \n",
+ " Type 2 | \n",
+ " HP | \n",
+ " Attack | \n",
+ " Defense | \n",
+ " Sp. Atk | \n",
+ " Sp. Def | \n",
+ " Speed | \n",
+ " Generation | \n",
+ " Legendary | \n",
"
\n",
+ " \n",
+ " \n",
" \n",
- " | 795 | \n",
- " Diancie | \n",
- " Rock | \n",
- " Fairy | \n",
- " 50 | \n",
- " 100 | \n",
- " 150 | \n",
- " 100 | \n",
- " 150 | \n",
- " 50 | \n",
- " 6 | \n",
- " True | \n",
+ " bool | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 800.0 | \n",
"
\n",
" \n",
- " | 796 | \n",
- " Mega Diancie | \n",
- " Rock | \n",
- " Fairy | \n",
- " 50 | \n",
- " 160 | \n",
- " 110 | \n",
- " 160 | \n",
- " 110 | \n",
- " 110 | \n",
- " 6 | \n",
- " True | \n",
- "
\n",
- " \n",
- " | 797 | \n",
- " Hoopa Confined | \n",
- " Psychic | \n",
- " Ghost | \n",
- " 80 | \n",
- " 110 | \n",
- " 60 | \n",
- " 150 | \n",
- " 130 | \n",
- " 70 | \n",
- " 6 | \n",
- " True | \n",
+ " float | \n",
+ " 1.0 | \n",
+ " NaN | \n",
+ " 386.0 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
"
\n",
" \n",
- " | 798 | \n",
- " Hoopa Unbound | \n",
- " Psychic | \n",
- " Dark | \n",
- " 80 | \n",
- " 160 | \n",
- " 60 | \n",
- " 170 | \n",
- " 130 | \n",
- " 80 | \n",
- " 6 | \n",
- " True | \n",
+ " int | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " 800.0 | \n",
+ " 800.0 | \n",
+ " 800.0 | \n",
+ " 800.0 | \n",
+ " 800.0 | \n",
+ " 800.0 | \n",
+ " 800.0 | \n",
+ " NaN | \n",
"
\n",
" \n",
- " | 799 | \n",
- " Volcanion | \n",
- " Fire | \n",
- " Water | \n",
- " 80 | \n",
- " 110 | \n",
- " 120 | \n",
- " 130 | \n",
- " 90 | \n",
- " 70 | \n",
- " 6 | \n",
- " True | \n",
+ " str | \n",
+ " 799.0 | \n",
+ " 800.0 | \n",
+ " 414.0 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
"
\n",
" \n",
"
\n",
- "
800 rows × 11 columns
\n",
"
"
],
"text/plain": [
- " Name Type 1 Type 2 HP Attack Defense Sp. Atk Sp. Def \\\n",
- "0 Bulbasaur Grass Poison 45 49 49 65 65 \n",
- "1 Ivysaur Grass Poison 60 62 63 80 80 \n",
- "2 Venusaur Grass Poison 80 82 83 100 100 \n",
- "3 Mega Venusaur Grass Poison 80 100 123 122 120 \n",
- "4 Charmander Fire NaN 39 52 43 60 50 \n",
- ".. ... ... ... .. ... ... ... ... \n",
- "795 Diancie Rock Fairy 50 100 150 100 150 \n",
- "796 Mega Diancie Rock Fairy 50 160 110 160 110 \n",
- "797 Hoopa Confined Psychic Ghost 80 110 60 150 130 \n",
- "798 Hoopa Unbound Psychic Dark 80 160 60 170 130 \n",
- "799 Volcanion Fire Water 80 110 120 130 90 \n",
- "\n",
- " Speed Generation Legendary \n",
- "0 45 1 False \n",
- "1 60 1 False \n",
- "2 80 1 False \n",
- "3 80 1 False \n",
- "4 65 1 False \n",
- ".. ... ... ... \n",
- "795 50 6 True \n",
- "796 110 6 True \n",
- "797 70 6 True \n",
- "798 80 6 True \n",
- "799 70 6 True \n",
- "\n",
- "[800 rows x 11 columns]"
+ " Name Type 1 Type 2 HP Attack Defense Sp. Atk Sp. Def Speed \\\n",
+ "bool NaN NaN NaN NaN NaN NaN NaN NaN NaN \n",
+ "float 1.0 NaN 386.0 NaN NaN NaN NaN NaN NaN \n",
+ "int NaN NaN NaN 800.0 800.0 800.0 800.0 800.0 800.0 \n",
+ "str 799.0 800.0 414.0 NaN NaN NaN NaN NaN NaN \n",
+ "\n",
+ " Generation Legendary \n",
+ "bool NaN 800.0 \n",
+ "float NaN NaN \n",
+ "int 800.0 NaN \n",
+ "str NaN NaN "
]
},
- "execution_count": 3,
+ "execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "df = pd.read_csv(\"https://raw.githubusercontent.com/data-bootcamp-v4/data/main/pokemon.csv\")\n",
- "df"
+ "df.apply(lambda col: col.apply(lambda x: type(x).__name__).value_counts())\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "- We posit that Pokemons of type Dragon have, on average, more HP stats than Grass. Choose the propper test and, with 5% significance, comment your findings."
+ "Voy a verlo tb de otra manera para confirmar lo que tengo"
]
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 60,
"metadata": {},
- "outputs": [],
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "=== INFORME COMPLETO DEL DATAFRAME ===\n",
+ "\n",
+ "🔹 Cantidad de valores únicos para Name:\n",
+ "800\n",
+ "\n",
+ "🔹 Tipos internos y cantidades para Name:\n",
+ "Name\n",
+ "str 799\n",
+ "float 1\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "🔹 Cantidad de NaN para Name:\n",
+ "1\n",
+ "------------------------------------------------------\n",
+ "\n",
+ "🔹 Cantidad de valores únicos para Type 1:\n",
+ "18\n",
+ "\n",
+ "🔹 Tipos internos y cantidades para Type 1:\n",
+ "Type 1\n",
+ "str 800\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "🔹 Cantidad de NaN para Type 1:\n",
+ "0\n",
+ "------------------------------------------------------\n",
+ "\n",
+ "🔹 Cantidad de valores únicos para Type 2:\n",
+ "19\n",
+ "\n",
+ "🔹 Tipos internos y cantidades para Type 2:\n",
+ "Type 2\n",
+ "str 414\n",
+ "float 386\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "🔹 Cantidad de NaN para Type 2:\n",
+ "386\n",
+ "------------------------------------------------------\n",
+ "\n",
+ "🔹 Cantidad de valores únicos para HP:\n",
+ "94\n",
+ "\n",
+ "🔹 Tipos internos y cantidades para HP:\n",
+ "HP\n",
+ "int 800\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "🔹 Cantidad de NaN para HP:\n",
+ "0\n",
+ "------------------------------------------------------\n",
+ "\n",
+ "🔹 Cantidad de valores únicos para Attack:\n",
+ "111\n",
+ "\n",
+ "🔹 Tipos internos y cantidades para Attack:\n",
+ "Attack\n",
+ "int 800\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "🔹 Cantidad de NaN para Attack:\n",
+ "0\n",
+ "------------------------------------------------------\n",
+ "\n",
+ "🔹 Cantidad de valores únicos para Defense:\n",
+ "103\n",
+ "\n",
+ "🔹 Tipos internos y cantidades para Defense:\n",
+ "Defense\n",
+ "int 800\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "🔹 Cantidad de NaN para Defense:\n",
+ "0\n",
+ "------------------------------------------------------\n",
+ "\n",
+ "🔹 Cantidad de valores únicos para Sp. Atk:\n",
+ "105\n",
+ "\n",
+ "🔹 Tipos internos y cantidades para Sp. Atk:\n",
+ "Sp. Atk\n",
+ "int 800\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "🔹 Cantidad de NaN para Sp. Atk:\n",
+ "0\n",
+ "------------------------------------------------------\n",
+ "\n",
+ "🔹 Cantidad de valores únicos para Sp. Def:\n",
+ "92\n",
+ "\n",
+ "🔹 Tipos internos y cantidades para Sp. Def:\n",
+ "Sp. Def\n",
+ "int 800\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "🔹 Cantidad de NaN para Sp. Def:\n",
+ "0\n",
+ "------------------------------------------------------\n",
+ "\n",
+ "🔹 Cantidad de valores únicos para Speed:\n",
+ "108\n",
+ "\n",
+ "🔹 Tipos internos y cantidades para Speed:\n",
+ "Speed\n",
+ "int 800\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "🔹 Cantidad de NaN para Speed:\n",
+ "0\n",
+ "------------------------------------------------------\n",
+ "\n",
+ "🔹 Cantidad de valores únicos para Generation:\n",
+ "6\n",
+ "\n",
+ "🔹 Tipos internos y cantidades para Generation:\n",
+ "Generation\n",
+ "int 800\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "🔹 Cantidad de NaN para Generation:\n",
+ "0\n",
+ "------------------------------------------------------\n",
+ "\n",
+ "🔹 Cantidad de valores únicos para Legendary:\n",
+ "2\n",
+ "\n",
+ "🔹 Tipos internos y cantidades para Legendary:\n",
+ "Legendary\n",
+ "bool 800\n",
+ "Name: count, dtype: int64\n",
+ "\n",
+ "🔹 Cantidad de NaN para Legendary:\n",
+ "0\n",
+ "------------------------------------------------------\n"
+ ]
+ }
+ ],
"source": [
- "#code here"
+ "\n",
+ "\n",
+ "df = pd.read_csv(\"https://raw.githubusercontent.com/data-bootcamp-v4/data/main/pokemon.csv\")\n",
+ "\n",
+ "# --- INFORME COMPLETO ---\n",
+ "print(\"=== INFORME COMPLETO DEL DATAFRAME ===\")\n",
+ "\n",
+ "for col in df.columns:\n",
+ "\n",
+ " print(f\"\\n🔹 Cantidad de valores únicos para {col}:\")\n",
+ " print(df[col].nunique(dropna=False))\n",
+ "\n",
+ " print(f\"\\n🔹 Tipos internos y cantidades para {col}:\")\n",
+ " print(f\"{df[col].apply(lambda x: type(x).__name__).value_counts(dropna=False)}\")\n",
+ "\n",
+ " print(f\"\\n🔹 Cantidad de NaN para {col}:\")\n",
+ " print(df[col].isna().sum())\n",
+ " print(\"------------------------------------------------------\")\n",
+ "\n",
+ "\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "- We posit that Legendary Pokemons have different stats (HP, Attack, Defense, Sp.Atk, Sp.Def, Speed) when comparing with Non-Legendary. Choose the propper test and, with 5% significance, comment your findings.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "metadata": {},
- "outputs": [],
- "source": [
- "#code here"
+ "---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "**Challenge 2**"
+ "Vemos que hay una celda diferente en Name. La voy a quitar por que no afecta a 800 columnas "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "In this challenge, we will be working with california-housing data. The data can be found here:\n",
- "- https://raw.githubusercontent.com/data-bootcamp-v4/data/main/california_housing.csv"
+ "En Name vamos a ver cual es el float"
]
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 61,
"metadata": {},
"outputs": [
{
@@ -361,139 +559,1953 @@
" \n",
" \n",
" | \n",
- " longitude | \n",
- " latitude | \n",
- " housing_median_age | \n",
- " total_rooms | \n",
- " total_bedrooms | \n",
- " population | \n",
- " households | \n",
- " median_income | \n",
- " median_house_value | \n",
+ " Name | \n",
+ " Type 1 | \n",
+ " Type 2 | \n",
+ " HP | \n",
+ " Attack | \n",
+ " Defense | \n",
+ " Sp. Atk | \n",
+ " Sp. Def | \n",
+ " Speed | \n",
+ " Generation | \n",
+ " Legendary | \n",
"
\n",
" \n",
"
\n",
" \n",
- " | 0 | \n",
- " -114.31 | \n",
- " 34.19 | \n",
- " 15.0 | \n",
- " 5612.0 | \n",
- " 1283.0 | \n",
- " 1015.0 | \n",
- " 472.0 | \n",
- " 1.4936 | \n",
- " 66900.0 | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " -114.47 | \n",
- " 34.40 | \n",
- " 19.0 | \n",
- " 7650.0 | \n",
- " 1901.0 | \n",
- " 1129.0 | \n",
- " 463.0 | \n",
- " 1.8200 | \n",
- " 80100.0 | \n",
- "
\n",
- " \n",
- " | 2 | \n",
- " -114.56 | \n",
- " 33.69 | \n",
- " 17.0 | \n",
- " 720.0 | \n",
- " 174.0 | \n",
- " 333.0 | \n",
- " 117.0 | \n",
- " 1.6509 | \n",
- " 85700.0 | \n",
- "
\n",
- " \n",
- " | 3 | \n",
- " -114.57 | \n",
- " 33.64 | \n",
- " 14.0 | \n",
- " 1501.0 | \n",
- " 337.0 | \n",
- " 515.0 | \n",
- " 226.0 | \n",
- " 3.1917 | \n",
- " 73400.0 | \n",
- "
\n",
- " \n",
- " | 4 | \n",
- " -114.57 | \n",
- " 33.57 | \n",
- " 20.0 | \n",
- " 1454.0 | \n",
- " 326.0 | \n",
- " 624.0 | \n",
- " 262.0 | \n",
- " 1.9250 | \n",
- " 65500.0 | \n",
+ " 62 | \n",
+ " NaN | \n",
+ " Fighting | \n",
+ " NaN | \n",
+ " 65 | \n",
+ " 105 | \n",
+ " 60 | \n",
+ " 60 | \n",
+ " 70 | \n",
+ " 95 | \n",
+ " 1 | \n",
+ " False | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
- "0 -114.31 34.19 15.0 5612.0 1283.0 \n",
- "1 -114.47 34.40 19.0 7650.0 1901.0 \n",
- "2 -114.56 33.69 17.0 720.0 174.0 \n",
- "3 -114.57 33.64 14.0 1501.0 337.0 \n",
- "4 -114.57 33.57 20.0 1454.0 326.0 \n",
+ " Name Type 1 Type 2 HP Attack Defense Sp. Atk Sp. Def Speed \\\n",
+ "62 NaN Fighting NaN 65 105 60 60 70 95 \n",
"\n",
- " population households median_income median_house_value \n",
- "0 1015.0 472.0 1.4936 66900.0 \n",
- "1 1129.0 463.0 1.8200 80100.0 \n",
- "2 333.0 117.0 1.6509 85700.0 \n",
- "3 515.0 226.0 3.1917 73400.0 \n",
- "4 624.0 262.0 1.9250 65500.0 "
+ " Generation Legendary \n",
+ "62 1 False "
]
},
- "execution_count": 5,
+ "execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "df = pd.read_csv(\"https://raw.githubusercontent.com/data-bootcamp-v4/data/main/california_housing.csv\")\n",
- "df.head()"
+ "filas_float = df[df['Name'].apply(lambda x: isinstance(x, float))]\n",
+ "filas_float"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
- "**We posit that houses close to either a school or a hospital are more expensive.**\n",
+ "Elimino esa fila , una carta de 800 tampoco influye nada.\n",
+ "Como se el indice la borro facil"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 62,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(799, 11)"
+ ]
+ },
+ "execution_count": 62,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df = df.drop(index= 62).reset_index(drop=True) # para seguir limpiando reseteo el indice\n",
+ "df.shape"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "\n",
+ "[ 'Grass', 'Fire', 'Water', 'Bug', 'Normal', 'Poison',\n",
+ " 'Electric', 'Ground', 'Fairy', 'Fighting', 'Psychic', 'Rock',\n",
+ " 'Ghost', 'Ice', 'Dragon', 'Dark', 'Steel', 'Flying']\n",
+ "Length: 18, dtype: str\n",
+ "------------------------\n",
+ "\n",
+ "[ 'Poison', nan, 'Flying', 'Dragon', 'Ground', 'Fairy',\n",
+ " 'Grass', 'Fighting', 'Psychic', 'Steel', 'Ice', 'Rock',\n",
+ " 'Dark', 'Water', 'Electric', 'Fire', 'Ghost', 'Bug',\n",
+ " 'Normal']\n",
+ "Length: 19, dtype: str\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Vamos a ver que hay en las columnas type1 y type2\n",
+ "print(df['Type 1'].unique())\n",
+ "print(\"------------------------\")\n",
+ "print(df['Type 2'].unique())\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Type 1\n",
+ "Water 112\n",
+ "Normal 98\n",
+ "Grass 70\n",
+ "Bug 69\n",
+ "Psychic 57\n",
+ "Fire 52\n",
+ "Electric 44\n",
+ "Rock 44\n",
+ "Ground 32\n",
+ "Ghost 32\n",
+ "Dragon 32\n",
+ "Dark 31\n",
+ "Poison 28\n",
+ "Steel 27\n",
+ "Fighting 26\n",
+ "Ice 24\n",
+ "Fairy 17\n",
+ "Flying 4\n",
+ "Name: count, dtype: int64\n",
+ "------------------------------------\n",
+ "Type 2\n",
+ "NaN 385\n",
+ "Flying 97\n",
+ "Ground 35\n",
+ "Poison 34\n",
+ "Psychic 33\n",
+ "Fighting 26\n",
+ "Grass 25\n",
+ "Fairy 23\n",
+ "Steel 22\n",
+ "Dark 20\n",
+ "Dragon 18\n",
+ "Ice 14\n",
+ "Rock 14\n",
+ "Water 14\n",
+ "Ghost 14\n",
+ "Fire 12\n",
+ "Electric 6\n",
+ "Normal 4\n",
+ "Bug 3\n",
+ "Name: count, dtype: int64\n",
+ "------------------------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Vamos a ver los tipos de esas columnas \n",
+ "lista_tipos = ['Type 1', 'Type 2']\n",
+ "for col in lista_tipos:\n",
+ " print(df[col].value_counts(dropna=False))\n",
+ " print(\"------------------------------------\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "---"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "* Challenge 1"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "- We posit that Pokemons of type Dragon have, on average, more HP stats than Grass. \n",
+ " Choose the propper test and, with 5% significance, comment your findings."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "p_value = 0.0015987219490841203\n",
+ "Rechazamos hipotesis nula H0: Pokémon tipo Dragon tiene mas HP que Pokémon tipo Grass.\n"
+ ]
+ }
+ ],
+ "source": [
+ "# H0: HP Dragons = HP Grass (hipotesis nula)\n",
+ "# H1: HP Dragons > HP Grass (lo que queremos demostrar)\n",
"\n",
- "- School coordinates (-118, 34)\n",
- "- Hospital coordinates (-122, 37)\n",
+ "from scipy.stats import ttest_ind\n",
"\n",
- "We consider a house (neighborhood) to be close to a school or hospital if the distance is lower than 0.50.\n",
+ "dragon_hp = df[df['Type 1'] == 'Dragon']['HP'].dropna() # miramos los Type_1 sus HP\n",
+ "grass_hp = df[df['Type 1'] == 'Grass']['HP'].dropna()\n",
"\n",
- "Hint:\n",
- "- Write a function to calculate euclidean distance from each house (neighborhood) to the school and to the hospital.\n",
- "- Divide your dataset into houses close and far from either a hospital or school.\n",
- "- Choose the propper test and, with 5% significance, comment your findings.\n",
- " "
+ "t_stat, p_value = ttest_ind(dragon_hp, grass_hp, equal_var=False)\n",
+ "\n",
+ "alpha = 0.05\n",
+ "\n",
+ "print(\"p_value =\", p_value)\n",
+ "\n",
+ "if p_value < alpha:\n",
+ " print(\"Rechazamos hipotesis nula H0: Pokémon tipo Dragon tiene mas HP que Pokémon tipo Grass.\")\n",
+ "else:\n",
+ " print(\"No rechazamos la hipotesis nula , pero tampoco podemos asegurar que Pokémon tipo Dragon tiene mas HP que Pokémon tipo Grass.\")\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "- We posit that Legendary Pokemons have different stats (HP, Attack, Defense, Sp.Atk, Sp.Def, Speed) when comparing with Non-Legendary. \n",
+ " Choose the propper test and, with 5% significance, comment your findings.\n"
]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 66,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " Name | \n",
+ " Type 1 | \n",
+ " Type 2 | \n",
+ " HP | \n",
+ " Attack | \n",
+ " Defense | \n",
+ " Sp. Atk | \n",
+ " Sp. Def | \n",
+ " Speed | \n",
+ " Generation | \n",
+ " Legendary | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " Bulbasaur | \n",
+ " Grass | \n",
+ " Poison | \n",
+ " 45 | \n",
+ " 49 | \n",
+ " 49 | \n",
+ " 65 | \n",
+ " 65 | \n",
+ " 45 | \n",
+ " 1 | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " Ivysaur | \n",
+ " Grass | \n",
+ " Poison | \n",
+ " 60 | \n",
+ " 62 | \n",
+ " 63 | \n",
+ " 80 | \n",
+ " 80 | \n",
+ " 60 | \n",
+ " 1 | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " Venusaur | \n",
+ " Grass | \n",
+ " Poison | \n",
+ " 80 | \n",
+ " 82 | \n",
+ " 83 | \n",
+ " 100 | \n",
+ " 100 | \n",
+ " 80 | \n",
+ " 1 | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " Mega Venusaur | \n",
+ " Grass | \n",
+ " Poison | \n",
+ " 80 | \n",
+ " 100 | \n",
+ " 123 | \n",
+ " 122 | \n",
+ " 120 | \n",
+ " 80 | \n",
+ " 1 | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " Charmander | \n",
+ " Fire | \n",
+ " NaN | \n",
+ " 39 | \n",
+ " 52 | \n",
+ " 43 | \n",
+ " 60 | \n",
+ " 50 | \n",
+ " 65 | \n",
+ " 1 | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " Name Type 1 Type 2 HP Attack Defense Sp. Atk Sp. Def Speed \\\n",
+ "0 Bulbasaur Grass Poison 45 49 49 65 65 45 \n",
+ "1 Ivysaur Grass Poison 60 62 63 80 80 60 \n",
+ "2 Venusaur Grass Poison 80 82 83 100 100 80 \n",
+ "3 Mega Venusaur Grass Poison 80 100 123 122 120 80 \n",
+ "4 Charmander Fire NaN 39 52 43 60 50 65 \n",
+ "\n",
+ " Generation Legendary \n",
+ "0 1 False \n",
+ "1 1 False \n",
+ "2 1 False \n",
+ "3 1 False \n",
+ "4 1 False "
+ ]
+ },
+ "execution_count": 66,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.head()\n"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 67,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "p_value = 1.0086617990318104e-13\n",
+ "Rechazamos hipotesis nula HP Legendary = HP No_Legendary\n",
+ "------------------------------------------\n",
+ "p_value = 2.411790840368659e-16\n",
+ "Rechazamos hipotesis nula Attack Legendary = Attack No_Legendary\n",
+ "------------------------------------------\n",
+ "p_value = 4.9269277035019174e-11\n",
+ "Rechazamos hipotesis nula Defense Legendary = Defense No_Legendary\n",
+ "------------------------------------------\n",
+ "p_value = 1.5653966266115418e-21\n",
+ "Rechazamos hipotesis nula Sp. Atk Legendary = Sp. Atk No_Legendary\n",
+ "------------------------------------------\n",
+ "p_value = 2.290991957008136e-15\n",
+ "Rechazamos hipotesis nula Sp. Def Legendary = Sp. Def No_Legendary\n",
+ "------------------------------------------\n",
+ "p_value = 9.88726762495576e-19\n",
+ "Rechazamos hipotesis nula Speed Legendary = Speed No_Legendary\n",
+ "------------------------------------------\n"
+ ]
+ }
+ ],
+ "source": [
+ "# H0: Legendary(Attack, Defense, Sp. Atk, Sp. Def, Speed) = No_Legendary(Attack, Defense, Sp. Atk, Sp. Def, Speed) (hipotesis nula)\n",
+ "# H1: Legendary(Attack, Defense, Sp. Atk, Sp. Def, Speed) != No_Legendary(Attack, Defense, Sp. Atk, Sp. Def, Speed) (queremos demostrar)\n",
+ "\n",
+ "from scipy.stats import ttest_ind\n",
+ "\n",
+ "stats = ['HP','Attack','Defense','Sp. Atk','Sp. Def','Speed']\n",
+ "alpha = 0.05 \n",
+ "\n",
+ "for col in stats:\n",
+ " legendary = df[df['Legendary'] == True][col].dropna() # Cada grupo limpia sus propios NaN, porque no depende del otro.\n",
+ " non_legendary = df[df['Legendary'] == False][col].dropna()\n",
+ " \n",
+ " t_stat, p_value = ttest_ind(legendary, non_legendary, equal_var=False)\n",
+ "\n",
+ "\n",
+ " print(\"p_value =\", p_value )\n",
+ "\n",
+ " if p_value < alpha:\n",
+ " print(f\"Rechazamos hipotesis nula {col} Legendary = {col} No_Legendary\")\n",
+ " else:\n",
+ " print(f\"No rechazamos la hipotesis nula , pero tampoco podemos asegurar que {col} Legendary = {col} No_Legendary\")\n",
+ " print(\"------------------------------------------\")\n",
+ "\n",
+ " \n",
+ "\n",
+ " \n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Resultado : \n",
+ "Utilizando una Two Sample T-test con un nivel de significancia del 5%, comparamos las estadísticas de Pokémon legendarios y no legendarios en HP, Ataque, Defensa, Sp. Atk, sp. Defensa y velocidad.\n",
+ "En los seis casos se rechaza la hipotesis nula para cada estadistica y concluimos que los Pokémon legendarios tienen estadísticas medias significativamente diferentes en comparación con los Pokémon no legendarios."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "**Challenge 2**"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "In this challenge, we will be working with california-housing data. The data can be found here:\n",
+ "- https://raw.githubusercontent.com/data-bootcamp-v4/data/main/california_housing.csv"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " longitude | \n",
+ " latitude | \n",
+ " housing_median_age | \n",
+ " total_rooms | \n",
+ " total_bedrooms | \n",
+ " population | \n",
+ " households | \n",
+ " median_income | \n",
+ " median_house_value | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " -114.31 | \n",
+ " 34.19 | \n",
+ " 15.0 | \n",
+ " 5612.0 | \n",
+ " 1283.0 | \n",
+ " 1015.0 | \n",
+ " 472.0 | \n",
+ " 1.4936 | \n",
+ " 66900.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " -114.47 | \n",
+ " 34.40 | \n",
+ " 19.0 | \n",
+ " 7650.0 | \n",
+ " 1901.0 | \n",
+ " 1129.0 | \n",
+ " 463.0 | \n",
+ " 1.8200 | \n",
+ " 80100.0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " -114.56 | \n",
+ " 33.69 | \n",
+ " 17.0 | \n",
+ " 720.0 | \n",
+ " 174.0 | \n",
+ " 333.0 | \n",
+ " 117.0 | \n",
+ " 1.6509 | \n",
+ " 85700.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " -114.57 | \n",
+ " 33.64 | \n",
+ " 14.0 | \n",
+ " 1501.0 | \n",
+ " 337.0 | \n",
+ " 515.0 | \n",
+ " 226.0 | \n",
+ " 3.1917 | \n",
+ " 73400.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " -114.57 | \n",
+ " 33.57 | \n",
+ " 20.0 | \n",
+ " 1454.0 | \n",
+ " 326.0 | \n",
+ " 624.0 | \n",
+ " 262.0 | \n",
+ " 1.9250 | \n",
+ " 65500.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
+ "0 -114.31 34.19 15.0 5612.0 1283.0 \n",
+ "1 -114.47 34.40 19.0 7650.0 1901.0 \n",
+ "2 -114.56 33.69 17.0 720.0 174.0 \n",
+ "3 -114.57 33.64 14.0 1501.0 337.0 \n",
+ "4 -114.57 33.57 20.0 1454.0 326.0 \n",
+ "\n",
+ " population households median_income median_house_value \n",
+ "0 1015.0 472.0 1.4936 66900.0 \n",
+ "1 1129.0 463.0 1.8200 80100.0 \n",
+ "2 333.0 117.0 1.6509 85700.0 \n",
+ "3 515.0 226.0 3.1917 73400.0 \n",
+ "4 624.0 262.0 1.9250 65500.0 "
+ ]
+ },
+ "execution_count": 68,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df = pd.read_csv(\"https://raw.githubusercontent.com/data-bootcamp-v4/data/main/california_housing.csv\")\n",
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "**We posit that houses close to either a school or a hospital are more expensive.**\n",
+ "\n",
+ "- School coordinates (-118, 34)\n",
+ "- Hospital coordinates (-122, 37)\n",
+ "\n",
+ "We consider a house (neighborhood) to be close to a school or hospital if the distance is lower than 0.50.\n",
+ "\n",
+ "Hint:\n",
+ "- Write a function to calculate euclidean distance from each house (neighborhood) to the school and to the hospital.\n",
+ "- Divide your dataset into houses close and far from either a hospital or school.\n",
+ "- Choose the propper test and, with 5% significance, comment your findings.\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "#### Coordenadas de School y Hospital \n",
+ "- School coordinates (-118, 34)\n",
+ "- Hospital coordinates (-122, 37)\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Le pongo nombre a las casas"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 69,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " longitude | \n",
+ " latitude | \n",
+ " housing_median_age | \n",
+ " total_rooms | \n",
+ " total_bedrooms | \n",
+ " population | \n",
+ " households | \n",
+ " median_income | \n",
+ " median_house_value | \n",
+ " numero_casa | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " -114.31 | \n",
+ " 34.19 | \n",
+ " 15.0 | \n",
+ " 5612.0 | \n",
+ " 1283.0 | \n",
+ " 1015.0 | \n",
+ " 472.0 | \n",
+ " 1.4936 | \n",
+ " 66900.0 | \n",
+ " casa1 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " -114.47 | \n",
+ " 34.40 | \n",
+ " 19.0 | \n",
+ " 7650.0 | \n",
+ " 1901.0 | \n",
+ " 1129.0 | \n",
+ " 463.0 | \n",
+ " 1.8200 | \n",
+ " 80100.0 | \n",
+ " casa2 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " -114.56 | \n",
+ " 33.69 | \n",
+ " 17.0 | \n",
+ " 720.0 | \n",
+ " 174.0 | \n",
+ " 333.0 | \n",
+ " 117.0 | \n",
+ " 1.6509 | \n",
+ " 85700.0 | \n",
+ " casa3 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " -114.57 | \n",
+ " 33.64 | \n",
+ " 14.0 | \n",
+ " 1501.0 | \n",
+ " 337.0 | \n",
+ " 515.0 | \n",
+ " 226.0 | \n",
+ " 3.1917 | \n",
+ " 73400.0 | \n",
+ " casa4 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " -114.57 | \n",
+ " 33.57 | \n",
+ " 20.0 | \n",
+ " 1454.0 | \n",
+ " 326.0 | \n",
+ " 624.0 | \n",
+ " 262.0 | \n",
+ " 1.9250 | \n",
+ " 65500.0 | \n",
+ " casa5 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 16995 | \n",
+ " -124.26 | \n",
+ " 40.58 | \n",
+ " 52.0 | \n",
+ " 2217.0 | \n",
+ " 394.0 | \n",
+ " 907.0 | \n",
+ " 369.0 | \n",
+ " 2.3571 | \n",
+ " 111400.0 | \n",
+ " casa16996 | \n",
+ "
\n",
+ " \n",
+ " | 16996 | \n",
+ " -124.27 | \n",
+ " 40.69 | \n",
+ " 36.0 | \n",
+ " 2349.0 | \n",
+ " 528.0 | \n",
+ " 1194.0 | \n",
+ " 465.0 | \n",
+ " 2.5179 | \n",
+ " 79000.0 | \n",
+ " casa16997 | \n",
+ "
\n",
+ " \n",
+ " | 16997 | \n",
+ " -124.30 | \n",
+ " 41.84 | \n",
+ " 17.0 | \n",
+ " 2677.0 | \n",
+ " 531.0 | \n",
+ " 1244.0 | \n",
+ " 456.0 | \n",
+ " 3.0313 | \n",
+ " 103600.0 | \n",
+ " casa16998 | \n",
+ "
\n",
+ " \n",
+ " | 16998 | \n",
+ " -124.30 | \n",
+ " 41.80 | \n",
+ " 19.0 | \n",
+ " 2672.0 | \n",
+ " 552.0 | \n",
+ " 1298.0 | \n",
+ " 478.0 | \n",
+ " 1.9797 | \n",
+ " 85800.0 | \n",
+ " casa16999 | \n",
+ "
\n",
+ " \n",
+ " | 16999 | \n",
+ " -124.35 | \n",
+ " 40.54 | \n",
+ " 52.0 | \n",
+ " 1820.0 | \n",
+ " 300.0 | \n",
+ " 806.0 | \n",
+ " 270.0 | \n",
+ " 3.0147 | \n",
+ " 94600.0 | \n",
+ " casa17000 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
17000 rows × 10 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " longitude latitude housing_median_age total_rooms total_bedrooms \\\n",
+ "0 -114.31 34.19 15.0 5612.0 1283.0 \n",
+ "1 -114.47 34.40 19.0 7650.0 1901.0 \n",
+ "2 -114.56 33.69 17.0 720.0 174.0 \n",
+ "3 -114.57 33.64 14.0 1501.0 337.0 \n",
+ "4 -114.57 33.57 20.0 1454.0 326.0 \n",
+ "... ... ... ... ... ... \n",
+ "16995 -124.26 40.58 52.0 2217.0 394.0 \n",
+ "16996 -124.27 40.69 36.0 2349.0 528.0 \n",
+ "16997 -124.30 41.84 17.0 2677.0 531.0 \n",
+ "16998 -124.30 41.80 19.0 2672.0 552.0 \n",
+ "16999 -124.35 40.54 52.0 1820.0 300.0 \n",
+ "\n",
+ " population households median_income median_house_value numero_casa \n",
+ "0 1015.0 472.0 1.4936 66900.0 casa1 \n",
+ "1 1129.0 463.0 1.8200 80100.0 casa2 \n",
+ "2 333.0 117.0 1.6509 85700.0 casa3 \n",
+ "3 515.0 226.0 3.1917 73400.0 casa4 \n",
+ "4 624.0 262.0 1.9250 65500.0 casa5 \n",
+ "... ... ... ... ... ... \n",
+ "16995 907.0 369.0 2.3571 111400.0 casa16996 \n",
+ "16996 1194.0 465.0 2.5179 79000.0 casa16997 \n",
+ "16997 1244.0 456.0 3.0313 103600.0 casa16998 \n",
+ "16998 1298.0 478.0 1.9797 85800.0 casa16999 \n",
+ "16999 806.0 270.0 3.0147 94600.0 casa17000 \n",
+ "\n",
+ "[17000 rows x 10 columns]"
+ ]
+ },
+ "execution_count": 69,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df[\"numero_casa\"] = \"casa\" + (df.index + 1).astype(str)\n",
+ "df"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Paso las casas al inicio por que me gusta verlas en la primera columna"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " numero_casa | \n",
+ " longitude | \n",
+ " latitude | \n",
+ " housing_median_age | \n",
+ " total_rooms | \n",
+ " total_bedrooms | \n",
+ " population | \n",
+ " households | \n",
+ " median_income | \n",
+ " median_house_value | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " casa1 | \n",
+ " -114.31 | \n",
+ " 34.19 | \n",
+ " 15.0 | \n",
+ " 5612.0 | \n",
+ " 1283.0 | \n",
+ " 1015.0 | \n",
+ " 472.0 | \n",
+ " 1.4936 | \n",
+ " 66900.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " casa2 | \n",
+ " -114.47 | \n",
+ " 34.40 | \n",
+ " 19.0 | \n",
+ " 7650.0 | \n",
+ " 1901.0 | \n",
+ " 1129.0 | \n",
+ " 463.0 | \n",
+ " 1.8200 | \n",
+ " 80100.0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " casa3 | \n",
+ " -114.56 | \n",
+ " 33.69 | \n",
+ " 17.0 | \n",
+ " 720.0 | \n",
+ " 174.0 | \n",
+ " 333.0 | \n",
+ " 117.0 | \n",
+ " 1.6509 | \n",
+ " 85700.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " casa4 | \n",
+ " -114.57 | \n",
+ " 33.64 | \n",
+ " 14.0 | \n",
+ " 1501.0 | \n",
+ " 337.0 | \n",
+ " 515.0 | \n",
+ " 226.0 | \n",
+ " 3.1917 | \n",
+ " 73400.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " casa5 | \n",
+ " -114.57 | \n",
+ " 33.57 | \n",
+ " 20.0 | \n",
+ " 1454.0 | \n",
+ " 326.0 | \n",
+ " 624.0 | \n",
+ " 262.0 | \n",
+ " 1.9250 | \n",
+ " 65500.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " numero_casa longitude latitude housing_median_age total_rooms \\\n",
+ "0 casa1 -114.31 34.19 15.0 5612.0 \n",
+ "1 casa2 -114.47 34.40 19.0 7650.0 \n",
+ "2 casa3 -114.56 33.69 17.0 720.0 \n",
+ "3 casa4 -114.57 33.64 14.0 1501.0 \n",
+ "4 casa5 -114.57 33.57 20.0 1454.0 \n",
+ "\n",
+ " total_bedrooms population households median_income median_house_value \n",
+ "0 1283.0 1015.0 472.0 1.4936 66900.0 \n",
+ "1 1901.0 1129.0 463.0 1.8200 80100.0 \n",
+ "2 174.0 333.0 117.0 1.6509 85700.0 \n",
+ "3 337.0 515.0 226.0 3.1917 73400.0 \n",
+ "4 326.0 624.0 262.0 1.9250 65500.0 "
+ ]
+ },
+ "execution_count": 70,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.insert(0, 'numero_casa', df.pop('numero_casa'))\n",
+ "df.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Vamos a ver la distancia"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Funcion euclidea : para 2 puntos P1(x1,y1) p2(x2,y2) la distancia euclidea es: \n",
+ "np.sqrt((x1 - x2)**2 + (y1 - y2)**2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "\n",
+ "def dist(x1, y1, x2, y2):\n",
+ " return np.sqrt((x1 - x2)**2 + (y1 - y2)**2)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 72,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "School_coordinates= (-118, 34)\n",
+ "Hospital_coordinates = (-122, 37)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 73,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def dist(x1, y1, x2, y2):\n",
+ " return np.sqrt((x1 - x2)**2 + (y1 - y2)**2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 74,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " numero_casa | \n",
+ " longitude | \n",
+ " latitude | \n",
+ " housing_median_age | \n",
+ " total_rooms | \n",
+ " total_bedrooms | \n",
+ " population | \n",
+ " households | \n",
+ " median_income | \n",
+ " median_house_value | \n",
+ " distancia_hospital | \n",
+ " distancia_school | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " casa1 | \n",
+ " -114.31 | \n",
+ " 34.19 | \n",
+ " 15.0 | \n",
+ " 5612.0 | \n",
+ " 1283.0 | \n",
+ " 1015.0 | \n",
+ " 472.0 | \n",
+ " 1.4936 | \n",
+ " 66900.0 | \n",
+ " 8.187319 | \n",
+ " 3.694888 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " casa2 | \n",
+ " -114.47 | \n",
+ " 34.40 | \n",
+ " 19.0 | \n",
+ " 7650.0 | \n",
+ " 1901.0 | \n",
+ " 1129.0 | \n",
+ " 463.0 | \n",
+ " 1.8200 | \n",
+ " 80100.0 | \n",
+ " 7.966235 | \n",
+ " 3.552591 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " casa3 | \n",
+ " -114.56 | \n",
+ " 33.69 | \n",
+ " 17.0 | \n",
+ " 720.0 | \n",
+ " 174.0 | \n",
+ " 333.0 | \n",
+ " 117.0 | \n",
+ " 1.6509 | \n",
+ " 85700.0 | \n",
+ " 8.143077 | \n",
+ " 3.453940 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " casa4 | \n",
+ " -114.57 | \n",
+ " 33.64 | \n",
+ " 14.0 | \n",
+ " 1501.0 | \n",
+ " 337.0 | \n",
+ " 515.0 | \n",
+ " 226.0 | \n",
+ " 3.1917 | \n",
+ " 73400.0 | \n",
+ " 8.154416 | \n",
+ " 3.448840 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " casa5 | \n",
+ " -114.57 | \n",
+ " 33.57 | \n",
+ " 20.0 | \n",
+ " 1454.0 | \n",
+ " 326.0 | \n",
+ " 624.0 | \n",
+ " 262.0 | \n",
+ " 1.9250 | \n",
+ " 65500.0 | \n",
+ " 8.183508 | \n",
+ " 3.456848 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 16995 | \n",
+ " casa16996 | \n",
+ " -124.26 | \n",
+ " 40.58 | \n",
+ " 52.0 | \n",
+ " 2217.0 | \n",
+ " 394.0 | \n",
+ " 907.0 | \n",
+ " 369.0 | \n",
+ " 2.3571 | \n",
+ " 111400.0 | \n",
+ " 4.233675 | \n",
+ " 9.082070 | \n",
+ "
\n",
+ " \n",
+ " | 16996 | \n",
+ " casa16997 | \n",
+ " -124.27 | \n",
+ " 40.69 | \n",
+ " 36.0 | \n",
+ " 2349.0 | \n",
+ " 528.0 | \n",
+ " 1194.0 | \n",
+ " 465.0 | \n",
+ " 2.5179 | \n",
+ " 79000.0 | \n",
+ " 4.332320 | \n",
+ " 9.168915 | \n",
+ "
\n",
+ " \n",
+ " | 16997 | \n",
+ " casa16998 | \n",
+ " -124.30 | \n",
+ " 41.84 | \n",
+ " 17.0 | \n",
+ " 2677.0 | \n",
+ " 531.0 | \n",
+ " 1244.0 | \n",
+ " 456.0 | \n",
+ " 3.0313 | \n",
+ " 103600.0 | \n",
+ " 5.358694 | \n",
+ " 10.057614 | \n",
+ "
\n",
+ " \n",
+ " | 16998 | \n",
+ " casa16999 | \n",
+ " -124.30 | \n",
+ " 41.80 | \n",
+ " 19.0 | \n",
+ " 2672.0 | \n",
+ " 552.0 | \n",
+ " 1298.0 | \n",
+ " 478.0 | \n",
+ " 1.9797 | \n",
+ " 85800.0 | \n",
+ " 5.322593 | \n",
+ " 10.026465 | \n",
+ "
\n",
+ " \n",
+ " | 16999 | \n",
+ " casa17000 | \n",
+ " -124.35 | \n",
+ " 40.54 | \n",
+ " 52.0 | \n",
+ " 1820.0 | \n",
+ " 300.0 | \n",
+ " 806.0 | \n",
+ " 270.0 | \n",
+ " 3.0147 | \n",
+ " 94600.0 | \n",
+ " 4.249012 | \n",
+ " 9.115597 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
17000 rows × 12 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " numero_casa longitude latitude housing_median_age total_rooms \\\n",
+ "0 casa1 -114.31 34.19 15.0 5612.0 \n",
+ "1 casa2 -114.47 34.40 19.0 7650.0 \n",
+ "2 casa3 -114.56 33.69 17.0 720.0 \n",
+ "3 casa4 -114.57 33.64 14.0 1501.0 \n",
+ "4 casa5 -114.57 33.57 20.0 1454.0 \n",
+ "... ... ... ... ... ... \n",
+ "16995 casa16996 -124.26 40.58 52.0 2217.0 \n",
+ "16996 casa16997 -124.27 40.69 36.0 2349.0 \n",
+ "16997 casa16998 -124.30 41.84 17.0 2677.0 \n",
+ "16998 casa16999 -124.30 41.80 19.0 2672.0 \n",
+ "16999 casa17000 -124.35 40.54 52.0 1820.0 \n",
+ "\n",
+ " total_bedrooms population households median_income \\\n",
+ "0 1283.0 1015.0 472.0 1.4936 \n",
+ "1 1901.0 1129.0 463.0 1.8200 \n",
+ "2 174.0 333.0 117.0 1.6509 \n",
+ "3 337.0 515.0 226.0 3.1917 \n",
+ "4 326.0 624.0 262.0 1.9250 \n",
+ "... ... ... ... ... \n",
+ "16995 394.0 907.0 369.0 2.3571 \n",
+ "16996 528.0 1194.0 465.0 2.5179 \n",
+ "16997 531.0 1244.0 456.0 3.0313 \n",
+ "16998 552.0 1298.0 478.0 1.9797 \n",
+ "16999 300.0 806.0 270.0 3.0147 \n",
+ "\n",
+ " median_house_value distancia_hospital distancia_school \n",
+ "0 66900.0 8.187319 3.694888 \n",
+ "1 80100.0 7.966235 3.552591 \n",
+ "2 85700.0 8.143077 3.453940 \n",
+ "3 73400.0 8.154416 3.448840 \n",
+ "4 65500.0 8.183508 3.456848 \n",
+ "... ... ... ... \n",
+ "16995 111400.0 4.233675 9.082070 \n",
+ "16996 79000.0 4.332320 9.168915 \n",
+ "16997 103600.0 5.358694 10.057614 \n",
+ "16998 85800.0 5.322593 10.026465 \n",
+ "16999 94600.0 4.249012 9.115597 \n",
+ "\n",
+ "[17000 rows x 12 columns]"
+ ]
+ },
+ "execution_count": 74,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df['distancia_hospital'] = dist(Hospital_coordinates[0],Hospital_coordinates[1],df['longitude'],df['latitude'])\n",
+ "df['distancia_school'] = dist(School_coordinates[0],School_coordinates[1],df['longitude'],df['latitude'])\n",
+ "df"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "A mi me gusta hacerlo con lambda que puedes poner lo que quieras en vez de la x con una condicion"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 75,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df[\"cercany_hospital\"] = df[\"distancia_hospital\"].apply(lambda x: True if x < 0.5 else False) # valor celda es 'lower' si x<0.5 sino 'far'\n",
+ "df[\"cercany_school\"] = df[\"distancia_school\"].apply(lambda x: True if x < 0.5 else False)\n",
+ "df['close_hospital_or_scholl'] = df[\"cercany_hospital\"] | df[\"cercany_school\"]\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 76,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " numero_casa | \n",
+ " longitude | \n",
+ " latitude | \n",
+ " housing_median_age | \n",
+ " total_rooms | \n",
+ " total_bedrooms | \n",
+ " population | \n",
+ " households | \n",
+ " median_income | \n",
+ " median_house_value | \n",
+ " distancia_hospital | \n",
+ " distancia_school | \n",
+ " cercany_hospital | \n",
+ " cercany_school | \n",
+ " close_hospital_or_scholl | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " casa1 | \n",
+ " -114.31 | \n",
+ " 34.19 | \n",
+ " 15.0 | \n",
+ " 5612.0 | \n",
+ " 1283.0 | \n",
+ " 1015.0 | \n",
+ " 472.0 | \n",
+ " 1.4936 | \n",
+ " 66900.0 | \n",
+ " 8.187319 | \n",
+ " 3.694888 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " casa2 | \n",
+ " -114.47 | \n",
+ " 34.40 | \n",
+ " 19.0 | \n",
+ " 7650.0 | \n",
+ " 1901.0 | \n",
+ " 1129.0 | \n",
+ " 463.0 | \n",
+ " 1.8200 | \n",
+ " 80100.0 | \n",
+ " 7.966235 | \n",
+ " 3.552591 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " casa3 | \n",
+ " -114.56 | \n",
+ " 33.69 | \n",
+ " 17.0 | \n",
+ " 720.0 | \n",
+ " 174.0 | \n",
+ " 333.0 | \n",
+ " 117.0 | \n",
+ " 1.6509 | \n",
+ " 85700.0 | \n",
+ " 8.143077 | \n",
+ " 3.453940 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " casa4 | \n",
+ " -114.57 | \n",
+ " 33.64 | \n",
+ " 14.0 | \n",
+ " 1501.0 | \n",
+ " 337.0 | \n",
+ " 515.0 | \n",
+ " 226.0 | \n",
+ " 3.1917 | \n",
+ " 73400.0 | \n",
+ " 8.154416 | \n",
+ " 3.448840 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " casa5 | \n",
+ " -114.57 | \n",
+ " 33.57 | \n",
+ " 20.0 | \n",
+ " 1454.0 | \n",
+ " 326.0 | \n",
+ " 624.0 | \n",
+ " 262.0 | \n",
+ " 1.9250 | \n",
+ " 65500.0 | \n",
+ " 8.183508 | \n",
+ " 3.456848 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 16995 | \n",
+ " casa16996 | \n",
+ " -124.26 | \n",
+ " 40.58 | \n",
+ " 52.0 | \n",
+ " 2217.0 | \n",
+ " 394.0 | \n",
+ " 907.0 | \n",
+ " 369.0 | \n",
+ " 2.3571 | \n",
+ " 111400.0 | \n",
+ " 4.233675 | \n",
+ " 9.082070 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 16996 | \n",
+ " casa16997 | \n",
+ " -124.27 | \n",
+ " 40.69 | \n",
+ " 36.0 | \n",
+ " 2349.0 | \n",
+ " 528.0 | \n",
+ " 1194.0 | \n",
+ " 465.0 | \n",
+ " 2.5179 | \n",
+ " 79000.0 | \n",
+ " 4.332320 | \n",
+ " 9.168915 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 16997 | \n",
+ " casa16998 | \n",
+ " -124.30 | \n",
+ " 41.84 | \n",
+ " 17.0 | \n",
+ " 2677.0 | \n",
+ " 531.0 | \n",
+ " 1244.0 | \n",
+ " 456.0 | \n",
+ " 3.0313 | \n",
+ " 103600.0 | \n",
+ " 5.358694 | \n",
+ " 10.057614 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 16998 | \n",
+ " casa16999 | \n",
+ " -124.30 | \n",
+ " 41.80 | \n",
+ " 19.0 | \n",
+ " 2672.0 | \n",
+ " 552.0 | \n",
+ " 1298.0 | \n",
+ " 478.0 | \n",
+ " 1.9797 | \n",
+ " 85800.0 | \n",
+ " 5.322593 | \n",
+ " 10.026465 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ " | 16999 | \n",
+ " casa17000 | \n",
+ " -124.35 | \n",
+ " 40.54 | \n",
+ " 52.0 | \n",
+ " 1820.0 | \n",
+ " 300.0 | \n",
+ " 806.0 | \n",
+ " 270.0 | \n",
+ " 3.0147 | \n",
+ " 94600.0 | \n",
+ " 4.249012 | \n",
+ " 9.115597 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
17000 rows × 15 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " numero_casa longitude latitude housing_median_age total_rooms \\\n",
+ "0 casa1 -114.31 34.19 15.0 5612.0 \n",
+ "1 casa2 -114.47 34.40 19.0 7650.0 \n",
+ "2 casa3 -114.56 33.69 17.0 720.0 \n",
+ "3 casa4 -114.57 33.64 14.0 1501.0 \n",
+ "4 casa5 -114.57 33.57 20.0 1454.0 \n",
+ "... ... ... ... ... ... \n",
+ "16995 casa16996 -124.26 40.58 52.0 2217.0 \n",
+ "16996 casa16997 -124.27 40.69 36.0 2349.0 \n",
+ "16997 casa16998 -124.30 41.84 17.0 2677.0 \n",
+ "16998 casa16999 -124.30 41.80 19.0 2672.0 \n",
+ "16999 casa17000 -124.35 40.54 52.0 1820.0 \n",
+ "\n",
+ " total_bedrooms population households median_income \\\n",
+ "0 1283.0 1015.0 472.0 1.4936 \n",
+ "1 1901.0 1129.0 463.0 1.8200 \n",
+ "2 174.0 333.0 117.0 1.6509 \n",
+ "3 337.0 515.0 226.0 3.1917 \n",
+ "4 326.0 624.0 262.0 1.9250 \n",
+ "... ... ... ... ... \n",
+ "16995 394.0 907.0 369.0 2.3571 \n",
+ "16996 528.0 1194.0 465.0 2.5179 \n",
+ "16997 531.0 1244.0 456.0 3.0313 \n",
+ "16998 552.0 1298.0 478.0 1.9797 \n",
+ "16999 300.0 806.0 270.0 3.0147 \n",
+ "\n",
+ " median_house_value distancia_hospital distancia_school \\\n",
+ "0 66900.0 8.187319 3.694888 \n",
+ "1 80100.0 7.966235 3.552591 \n",
+ "2 85700.0 8.143077 3.453940 \n",
+ "3 73400.0 8.154416 3.448840 \n",
+ "4 65500.0 8.183508 3.456848 \n",
+ "... ... ... ... \n",
+ "16995 111400.0 4.233675 9.082070 \n",
+ "16996 79000.0 4.332320 9.168915 \n",
+ "16997 103600.0 5.358694 10.057614 \n",
+ "16998 85800.0 5.322593 10.026465 \n",
+ "16999 94600.0 4.249012 9.115597 \n",
+ "\n",
+ " cercany_hospital cercany_school close_hospital_or_scholl \n",
+ "0 False False False \n",
+ "1 False False False \n",
+ "2 False False False \n",
+ "3 False False False \n",
+ "4 False False False \n",
+ "... ... ... ... \n",
+ "16995 False False False \n",
+ "16996 False False False \n",
+ "16997 False False False \n",
+ "16998 False False False \n",
+ "16999 False False False \n",
+ "\n",
+ "[17000 rows x 15 columns]"
+ ]
+ },
+ "execution_count": 76,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "cercany_hospital\n",
+ "False 15839\n",
+ "True 1161\n",
+ "Name: count, dtype: int64"
+ ]
+ },
+ "execution_count": 77,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df['cercany_hospital'].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "cercany_school\n",
+ "False 11332\n",
+ "True 5668\n",
+ "Name: count, dtype: int64"
+ ]
+ },
+ "execution_count": 78,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df['cercany_school'].value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 79,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Index(['numero_casa', 'longitude', 'latitude', 'housing_median_age',\n",
+ " 'total_rooms', 'total_bedrooms', 'population', 'households',\n",
+ " 'median_income', 'median_house_value', 'distancia_hospital',\n",
+ " 'distancia_school', 'cercany_hospital', 'cercany_school',\n",
+ " 'close_hospital_or_scholl'],\n",
+ " dtype='str')"
+ ]
+ },
+ "execution_count": 79,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.columns"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " numero_casa | \n",
+ " cercany_hospital | \n",
+ " cercany_school | \n",
+ " close_hospital_or_scholl | \n",
+ " median_house_value | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " casa1 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " 66900.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " casa2 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " 80100.0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " casa3 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " 85700.0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " casa4 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " 73400.0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " casa5 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " 65500.0 | \n",
+ "
\n",
+ " \n",
+ " | ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " | 16995 | \n",
+ " casa16996 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " 111400.0 | \n",
+ "
\n",
+ " \n",
+ " | 16996 | \n",
+ " casa16997 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " 79000.0 | \n",
+ "
\n",
+ " \n",
+ " | 16997 | \n",
+ " casa16998 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " 103600.0 | \n",
+ "
\n",
+ " \n",
+ " | 16998 | \n",
+ " casa16999 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " 85800.0 | \n",
+ "
\n",
+ " \n",
+ " | 16999 | \n",
+ " casa17000 | \n",
+ " False | \n",
+ " False | \n",
+ " False | \n",
+ " 94600.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
17000 rows × 5 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " numero_casa cercany_hospital cercany_school close_hospital_or_scholl \\\n",
+ "0 casa1 False False False \n",
+ "1 casa2 False False False \n",
+ "2 casa3 False False False \n",
+ "3 casa4 False False False \n",
+ "4 casa5 False False False \n",
+ "... ... ... ... ... \n",
+ "16995 casa16996 False False False \n",
+ "16996 casa16997 False False False \n",
+ "16997 casa16998 False False False \n",
+ "16998 casa16999 False False False \n",
+ "16999 casa17000 False False False \n",
+ "\n",
+ " median_house_value \n",
+ "0 66900.0 \n",
+ "1 80100.0 \n",
+ "2 85700.0 \n",
+ "3 73400.0 \n",
+ "4 65500.0 \n",
+ "... ... \n",
+ "16995 111400.0 \n",
+ "16996 79000.0 \n",
+ "16997 103600.0 \n",
+ "16998 85800.0 \n",
+ "16999 94600.0 \n",
+ "\n",
+ "[17000 rows x 5 columns]"
+ ]
+ },
+ "execution_count": 80,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_estudio =df[['numero_casa', 'cercany_hospital', 'cercany_school','close_hospital_or_scholl','median_house_value']]\n",
+ "df_estudio\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 81,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "close_hospital_or_scholl\n",
+ "False 10171\n",
+ "True 6829\n",
+ "Name: count, dtype: int64"
+ ]
+ },
+ "execution_count": 81,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_estudio['close_hospital_or_scholl'].value_counts() # asi se los que me van a dar"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 82,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "close_hospital_or_scholl = df_estudio[df_estudio['close_hospital_or_scholl'] == True]['median_house_value'] # grupos cerca de alguno\n",
+ "far_hospital_or_scholl = df_estudio[df_estudio['close_hospital_or_scholl'] == False]['median_house_value'] # grupos no cerca de ninguno\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "t = 37.992330214201516 p = 3.0064957768591797e-301\n"
+ ]
+ }
+ ],
+ "source": [
+ "# H0 =\tLas casas cercanas y lejanas tienen el mismo precio medio \n",
+ "# H1 = Las casas cercanas son más caras que las lejanas \n",
+ "\n",
+ "from scipy.stats import ttest_ind\n",
+ "\n",
+ "t_stat, p_value = ttest_ind(close_hospital_or_scholl, far_hospital_or_scholl, equal_var=False) # evalua los dos grupos COMPARANDO CERCA O LEJOS EN RELACION AL PRECIO\n",
+ "print(\"t =\", t_stat, \"p =\", p_value)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "RECHAZA hipotesis nula → Las casas mas cercanas son mas caras\n"
+ ]
+ }
+ ],
+ "source": [
+ "alpha = 0.05\n",
+ "\n",
+ "if p_value < alpha:\n",
+ " print(\"RECHAZA hipotesis nula → Las casas mas cercanas son mas caras\")\n",
+ "else:\n",
+ " print(\"NO RECHAZA hipotesis nula pero No asegura que las casas sean mas caras por cercania\")\n"
+ ]
}
],
"metadata": {
@@ -512,7 +2524,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.10.9"
+ "version": "3.14.2"
}
},
"nbformat": 4,