{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "BxTo3qcLlfvz"
},
"source": [
"
Auxiliar 1\n",
" Profesor: Richard Weber\n",
" Auxiliares: Cristóbal Pérez y Joaquín Roa\n",
" IN6531-1 - Introducción a la Minería de Datos\n",
" Primavera 2023\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4M0vicz6l1cz"
},
"source": [
"##¿Por qué utilizar Python?"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Hp_avNJnkveD"
},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "PscZ4Jbsl8kR"
},
"source": [
"\n",
"\n",
"* Fácil de usar\n",
"* Tiene muchas librerías pre-instaladas\n",
"* Permite un alto nivel de abstracción\n",
"* Lenguaje más utilizado en Data Science\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "a_chicENnC4q"
},
"source": [
"##¿Cuántos datos procesaremos?"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "npv9EZIJnooM"
},
"source": [
"[¿Por qué usar GPU?](https://www.youtube.com/watch?v=C_wSHKG8_fg) --> Suscribanse al canal"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "YtABZC2knXrj"
},
"source": [
"**Ruta:** Edit -> Ajusted del notebook -> seleccionar GPU"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "8ufIMzthmzUr"
},
"source": [
"##Uso de test estadísticos"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "61agcf6EoX4c"
},
"source": [
"No es el foco principal del curso, sin embargo para saber del tema, veamos las biblias del aprendizaje:\n",
"\n",
"* [Medium](https://medium.com/swlh/what-is-chi-square-test-how-does-it-work-3b7f22c03b01)\n",
"* [Towardsdatascience ](https://towardsdatascience.com/chi-squared-test-for-feature-selection-with-implementation-in-python-65b4ae7696db)\n",
"* [Stack Overflow](https://stackoverflow.com/questions/29866961/pearsons-chi-square-test-python)\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fo94Rz6Cpg0f"
},
"source": [
"##Basics"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "jPa0PHW3qNIy"
},
"source": [
"###Shortcuts\n",
"\n",
"| Acción | Comando |\n",
"|---------------------------------------|:-------------:|\n",
"| Convertir a celda de código (J) | `Y` |\n",
"| Convertir a celda de texto (J) | `M` |\n",
"| Insertar celda de código arriba | `A` |\n",
"| Insertar celda de código abajo | `B` |\n",
"| Borrar celda (J) | `DD` |\n",
"| Deshacer acción con celdas | `Z` |\n",
"| Ejecutar Celda | `Ctrl+Enter` |\n",
"| Ejecutar Celda y pasar a la siguiente | `Shift+Enter` |\n",
"| Guardar (J) | `S` |\n",
"| Interrumpir (J) | `II` |\n",
"\n",
"Para más shorcuts `Tools->Keyboard Shorcuts`"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "YAMyplO9x2rT"
},
"source": [
"###Markdown\n",
"\n",
"Es un [lenguaje de marcado](https://es.wikipedia.org/wiki/Lenguaje_de_marcado) que permite escribir de forma programática texto con formato, imágenes, tablas, código, entre otros.\n",
"\n",
"[Guia completa de información](https://docs.github.com/es/github/writing-on-github/basic-writing-and-formatting-syntax)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EXGLb29prhcj"
},
"source": [
"##1.Estructuras de datos"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aB37YIyTrohi"
},
"source": [
"####1.1 Números"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "KEsBN7wcr2WS"
},
"source": [
"Python tiene 7 operadores aritméticos básicos\n",
"\n",
"| Operador | Name |\n",
"|--------------|----------------|\n",
"| ``+`` | Suma |\n",
"| ``-`` | Resta | \n",
"| ``*`` | Multiplicación |\n",
"| ``/`` | División |\n",
"| ``//`` | División entera|\n",
"| ``%`` | Modulo |\n",
"| ``**`` | Potencia |"
]
},
{
"cell_type": "code",
"metadata": {
"id": "qmb_neAcrz17",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "7fb97f73-f0b8-479e-8ead-178473cff7a2"
},
"source": [
"#Con el numeral (gato, hashtag o almohadilla (#)) se comenta el código\n",
"#Suma\n",
"3+4"
],
"execution_count": 1,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"7"
]
},
"metadata": {},
"execution_count": 1
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "1FDp-tlmsQds",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "6ebb256a-4713-4784-9bc4-6cf1ff3718b4"
},
"source": [
"#Resta\n",
"3-4"
],
"execution_count": 2,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"-1"
]
},
"metadata": {},
"execution_count": 2
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "7Vjr_vYOsQgS",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "aa8685b5-b5c9-449b-e355-a2fba449b45d"
},
"source": [
"#Multiplicación\n",
"3*4"
],
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"12"
]
},
"metadata": {},
"execution_count": 3
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "i6AOB7S6sQi7",
"outputId": "196522f1-4bb8-4bf3-eb39-290c7f826a48"
},
"source": [
"#Division\n",
"101/4"
],
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"25.25"
]
},
"metadata": {},
"execution_count": 4
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Vk-4wlPqsQla",
"outputId": "c21086a3-92d6-4c61-f8b7-68cb7c6f03ad"
},
"source": [
"#Division entera\n",
"101//4"
],
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"25"
]
},
"metadata": {},
"execution_count": 5
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "82F4qy8rsQoj"
},
"source": [
"#Modulo o resto"
],
"execution_count": 6,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "nrpCD0ClsQqZ",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "501d66f4-0a1e-4a9d-f553-de04ec0d9806"
},
"source": [
"101%4"
],
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1"
]
},
"metadata": {},
"execution_count": 7
}
]
},
{
"cell_type": "code",
"source": [
"102%3"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "YdZBq-bXIxF6",
"outputId": "ba120908-4efc-4e6a-aed1-2a78ed3cdd41"
},
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0"
]
},
"metadata": {},
"execution_count": 9
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "4ChAyh_Uswiu",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "6e650f99-6492-462d-c2b7-8a1282a7a85c"
},
"source": [
"#Potencia\n",
"3**4"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"81"
]
},
"metadata": {},
"execution_count": 14
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "G_3rQisCswlR",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "845bcf91-02b4-4ff4-9c19-d42b11c45eb9"
},
"source": [
"3**(1/4)"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1.3160740129524924"
]
},
"metadata": {},
"execution_count": 15
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "bb2bemYRswn4",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "74ea6af9-bdc1-4124-c9cf-9d18fc0ad482"
},
"source": [
"#¿Que pasa si hago más de una formula en una casilla?\n",
"print(3+4)\n",
"print(3*4)\n",
"print(3//4)"
],
"execution_count": 10,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"7\n",
"12\n",
"0\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"3+4\n",
"3*4\n",
"3//4"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "JuwzrctnJAgG",
"outputId": "542ae39f-a378-4ec8-eec5-c3dfcffa7f5a"
},
"execution_count": 11,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0"
]
},
"metadata": {},
"execution_count": 11
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Od6TYMiQswqf"
},
"source": [
"#Asignar una variable\n",
"a = 3+4"
],
"execution_count": 12,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "0yU06ehz_MB9",
"outputId": "edf57b6e-1967-4aa5-d596-051f5ca6aebc"
},
"source": [
"a"
],
"execution_count": 13,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"7"
]
},
"metadata": {},
"execution_count": 13
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "n46AMoRltE-L",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "16b73790-800e-4cdc-83fb-438dd25b3914"
},
"source": [
"#¿Puedo mutar esa asignación?\n",
"a = a + 1\n",
"a"
],
"execution_count": 14,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"8"
]
},
"metadata": {},
"execution_count": 14
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "0_NmlCn7tFA6",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "48c790ab-3f75-42af-d161-7a4eacb38905"
},
"source": [
"a += 1\n",
"a"
],
"execution_count": 15,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"9"
]
},
"metadata": {},
"execution_count": 15
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "jJCbj3DS_c2R",
"outputId": "e5ccd142-4fb9-4c23-c27a-608f59322f64"
},
"source": [
"a *= 2\n",
"a"
],
"execution_count": 16,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"18"
]
},
"metadata": {},
"execution_count": 16
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ykgqyaY3tFEG"
},
"source": [
"a = 45"
],
"execution_count": 17,
"outputs": []
},
{
"cell_type": "code",
"source": [
"a"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "cOLiXWNfJUdw",
"outputId": "d20d92ab-a834-44d4-cfbf-c5380c73d02d"
},
"execution_count": 19,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"45"
]
},
"metadata": {},
"execution_count": 19
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "S9pq4QOf_m5z"
},
"source": [
"var = 12"
],
"execution_count": 18,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# Variables y memoria\n",
"# a y b hacen referencia al objeto que representa al entero 1\n",
"a = 1\n",
"b = 1"
],
"metadata": {
"id": "RAOikEPyKTcm"
},
"execution_count": 20,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# Referencian a la misma dirección de memoria\n",
"id(1)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Ii3E8a7MKeeW",
"outputId": "5022584b-89e9-45cd-bed5-88f08083bfcc"
},
"execution_count": 21,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"132651291410672"
]
},
"metadata": {},
"execution_count": 21
}
]
},
{
"cell_type": "code",
"source": [
"id(a)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "SdvrhcseKeZX",
"outputId": "f0ee183f-b1a1-459d-c0c6-df127f116b8a"
},
"execution_count": 22,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"132651291410672"
]
},
"metadata": {},
"execution_count": 22
}
]
},
{
"cell_type": "code",
"source": [
"id(b)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "2JWn7agzKeEk",
"outputId": "316e1d86-8690-4195-f93c-ad5b5a616f30"
},
"execution_count": 23,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"132651291410672"
]
},
"metadata": {},
"execution_count": 23
}
]
},
{
"cell_type": "code",
"source": [
"# b es asignado con el objeto que representa el entero 2\n",
"# a y b referencian a diferentes direcciones de memoria\n",
"# a mantiene la referencia al entero 1\n",
"b = 2\n",
"id(a)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Y1fZno15KbkY",
"outputId": "9ebad63c-9375-4347-8784-45eb0adfa8e1"
},
"execution_count": 24,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"132651291410672"
]
},
"metadata": {},
"execution_count": 24
}
]
},
{
"cell_type": "code",
"source": [
"id(b)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "s3FUJtvxKl1c",
"outputId": "da41df03-00ab-4a80-bce8-7b3b940d0ab6"
},
"execution_count": 25,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"132651291410704"
]
},
"metadata": {},
"execution_count": 25
}
]
},
{
"cell_type": "code",
"source": [
"# a es asignada con el valor de b\n",
"# a y b referencian al mismo objeto y, por tanto,\n",
"# a la misma dirección de memoria\n",
"a = b"
],
"metadata": {
"id": "X1LFOXBUKoed"
},
"execution_count": 26,
"outputs": []
},
{
"cell_type": "code",
"source": [
"id(a)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "5osRwA4AKqa-",
"outputId": "a9f79cc3-0735-4996-e14b-16789f20d958"
},
"execution_count": 27,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"132651291410704"
]
},
"metadata": {},
"execution_count": 27
}
]
},
{
"cell_type": "code",
"source": [
"a"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "WppD6N9OKrPA",
"outputId": "d3dbd495-140b-496c-bf4b-ed64c432f2d4"
},
"execution_count": 28,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2"
]
},
"metadata": {},
"execution_count": 28
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "z4peGRLKrsPr"
},
"source": [
"####1.2 Strings"
]
},
{
"cell_type": "code",
"metadata": {
"id": "pEwKpipTteb1",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "7d7a4c98-04c2-415c-e635-ce85e970907c"
},
"source": [
"'Hola IN6531'"
],
"execution_count": 29,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Hola IN6531'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 29
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "DparpDKAte2k",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "91afbfae-f703-4110-dc4d-e7b13c5daee5"
},
"source": [
"\"O'higgins\""
],
"execution_count": 30,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"\"O'higgins\""
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 30
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"id": "j6hWEcgluIbG",
"outputId": "747c35e0-e2a5-4c0a-ba35-acd2cc47838b"
},
"source": [
"#¿Puedo asignar un string como una variable?\n",
"a = 'Hola IN6531'\n",
"a"
],
"execution_count": 31,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Hola IN6531'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 31
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"id": "rIu6liCjAcBK",
"outputId": "b74c45ab-dc32-4b4d-e9a4-da587d6c8fe7"
},
"source": [
"a = 45\n",
"a = str(a)\n",
"a"
],
"execution_count": 32,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'45'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 32
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "I1KdgBXIte9b",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "eecbd28f-8859-41d4-c5a2-c1e8a52532b3"
},
"source": [
"#Largo del string\n",
"len(a)"
],
"execution_count": 33,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2"
]
},
"metadata": {},
"execution_count": 33
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "1N14rwclt8Bh",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "cfdcae38-0621-489e-d434-b8e52a9c6863"
},
"source": [
"#Acceder a elementos\n",
"#OJO que python parte del indice 0\n",
"a[0]"
],
"execution_count": 39,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'4'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 39
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "CRPsCw6Dt8FY",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "af4d8ea2-4bf2-440d-ec2e-c20c22fa320f"
},
"source": [
"#Primer elemento\n",
"a[0]"
],
"execution_count": 35,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'4'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 35
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "aTVRc1zit8Id",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "177ddcf3-1f49-4ca1-a54c-f8544367afc1"
},
"source": [
"#Ultimo elemento\n",
"a[-1]"
],
"execution_count": 36,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'5'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 36
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "MoJRd3YGE93r",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "d136d042-e6ff-46f3-b799-b1a26a1d11a1"
},
"source": [
"a[len(a)-1]"
],
"execution_count": 37,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'5'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 37
}
]
},
{
"cell_type": "code",
"source": [
"#Elemento fuera de rango\n",
"a[5]"
],
"metadata": {
"id": "i8hP-rzR_ZFx",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 197
},
"outputId": "9fcaa79e-5860-446a-c952-363cea532ed8"
},
"execution_count": 38,
"outputs": [
{
"output_type": "error",
"ename": "IndexError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m#Elemento fuera de rango\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m: string index out of range"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "1hX75xnpt8KJ",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "e72c913a-12a7-4f9e-c2d1-e4a1001ede2f"
},
"source": [
"#Mostrar todos los elementos\n",
"a[:]"
],
"execution_count": 40,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'45'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 40
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "uO3QfETEFGlF",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "ba091627-346b-443b-9c38-29348ca75700"
},
"source": [
"a"
],
"execution_count": 41,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'45'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 41
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "CqS-phAZt8Ni",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "25c7e694-fa0a-4976-81e9-e8a99acf6845"
},
"source": [
"#Mostrar todos menos el ultimo\n",
"a[:-1]"
],
"execution_count": 42,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'4'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 42
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "hbFWplN0FQK9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "049c0406-27ed-47c4-dde9-b71a3f20a6ef"
},
"source": [
"#Mostrar todos menos el penultimo\n",
"a[:-2]"
],
"execution_count": 43,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"''"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 43
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "49zDo5mcu3ek",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "bf41a628-3d89-43b5-d31a-6e4024bbd08e"
},
"source": [
"#Mostrar desde el segundo caracter\n",
"a[1:]"
],
"execution_count": 44,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'5'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 44
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "VV-QPZtRt8Pm",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "a852e9d0-72e5-4afc-a72c-43e741bef4a6"
},
"source": [
"#Mostrar elementos entre la posicion 2 y 4\n",
"a[1:4]"
],
"execution_count": 45,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'5'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 45
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "nq5xEvT1t8So",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 179
},
"outputId": "49f7ae8c-6ad7-48e2-b806-1e8f62cc7543"
},
"source": [
"a[200]"
],
"execution_count": 46,
"outputs": [
{
"output_type": "error",
"ename": "IndexError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m200\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m: string index out of range"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "zw95x2H2vLWW",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 197
},
"outputId": "21026a78-1889-415e-f146-6e63d914d90f"
},
"source": [
"#¿Puedo cambiar un caracter dentro del string?\n",
"a[8]='2'"
],
"execution_count": 47,
"outputs": [
{
"output_type": "error",
"ename": "TypeError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m#¿Puedo cambiar un caracter dentro del string?\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0ma\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m8\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'2'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m: 'str' object does not support item assignment"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "04ylg5N0FtGN",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "6b6e3177-e6cb-45ff-a474-e7c1b77ff339"
},
"source": [
"a"
],
"execution_count": 48,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'45'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 48
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ofV2mp2bvLbA",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "0622bf7c-d632-4938-bf7e-03f3050ccddb"
},
"source": [
"#concatenar\n",
"'Hola' + 'IN6531'"
],
"execution_count": 50,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'HolaIN6531'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 50
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "U5qi15Q_vLeL",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "1fb0c586-817b-48b5-8b06-81a970e8665f"
},
"source": [
"a = 'Hola '\n",
"b = 'IN6531'\n",
"a + b"
],
"execution_count": 51,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Hola IN6531'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 51
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ztxoeAYCvLhz",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "e83a8ce9-57b3-4aa2-f6cb-315376e1e8a8"
},
"source": [
"c = a + b\n",
"c"
],
"execution_count": 52,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Hola IN6531'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 52
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "gvGEkkMkvLlY",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "9ac4f5b4-1ec2-4cfd-f4b3-27dbe9a942b7"
},
"source": [
"c = a+' '+b\n",
"c"
],
"execution_count": 53,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Hola IN6531'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 53
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ADCkfp_DvLn8",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "4652cd26-57c8-48a0-c324-a75a31baffc0"
},
"source": [
"#formatear un string\n",
"'Mi nombre es {n} y soy de {s}'.format(n='Cristóbal',s='Santa Cruz')"
],
"execution_count": 55,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Mi nombre es Cristóbal y soy de Santa Cruz'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 55
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "l5etR1C_vLq9",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "2b09641d-a3ed-445b-d26b-2df54e46e3db"
},
"source": [
"n = 'Cristóbal'\n",
"s = 'Santa Cruz'\n",
"f'Mi nombre es {n} y soy de {s}'"
],
"execution_count": 56,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Mi nombre es Cristóbal y soy de Santa Cruz'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 56
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "8sws4d4uvLtl",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "074403f3-d733-4668-bb1d-e2682ca2fe07"
},
"source": [
"print(c)\n",
"print('Mi nombre es {n} y soy de {s}'.format(n='Cristóbal',s='Santa Cruz'))\n",
"print(\"Salto de línea \\n\")\n",
"print(\"Arriba hay un salto de línea\")"
],
"execution_count": 57,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Hola IN6531\n",
"Mi nombre es Cristóbal y soy de Santa Cruz\n",
"Salto de línea \n",
"\n",
"Arriba hay un salto de línea\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "G-el0rDarsSh"
},
"source": [
"####1.3 Listas\n",
"\n",
"Las listas son cojuntos de elementos ordenados y **mutables**\n",
"\n",
"[Link de utilidad para listas](https://uniwebsidad.com/libros/python/capitulo-7/metodos-de-agregado)"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "rIEsZ4yqvLwC",
"outputId": "72988038-79ba-4208-febb-dcf181d58623"
},
"source": [
"lista = [2,3,5,7,11]\n",
"lista"
],
"execution_count": 58,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[2, 3, 5, 7, 11]"
]
},
"metadata": {},
"execution_count": 58
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "z5z1cPQuw1df"
},
"source": [
" "
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "sLYVvaiIvLyq",
"outputId": "2b02805b-09fb-4222-8c11-99ec9ec7db3c"
},
"source": [
"#Primer elemento\n",
"lista[0]"
],
"execution_count": 59,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2"
]
},
"metadata": {},
"execution_count": 59
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "X0c8o6CNw7fe",
"outputId": "40e876e9-1124-4220-8f5a-813a85429f7b"
},
"source": [
"#Ultimo elemento\n",
"lista[-1]"
],
"execution_count": 60,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"11"
]
},
"metadata": {},
"execution_count": 60
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "r8zvXw4vw7mJ",
"outputId": "92efe539-9bdc-4e8e-8011-13df7c9049c0"
},
"source": [
"#Los dos primeros elementos\n",
"lista[0:2]"
],
"execution_count": 61,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[2, 3]"
]
},
"metadata": {},
"execution_count": 61
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "OTTFdSIpw7n4",
"outputId": "bd8a83a2-a74a-489d-f8a0-a5078242a992"
},
"source": [
"#Ivertir orden de lista\n",
"lista[::-1]"
],
"execution_count": 62,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[11, 7, 5, 3, 2]"
]
},
"metadata": {},
"execution_count": 62
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Hu-zj6Bew7qi",
"outputId": "2f1bff11-ac7c-411e-af64-0a0cab562815"
},
"source": [
"lista"
],
"execution_count": 63,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[2, 3, 5, 7, 11]"
]
},
"metadata": {},
"execution_count": 63
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "mBR5tz8Tyvq5",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "557c8a24-7c1c-491b-aab7-a5c8534cac8c"
},
"source": [
"l2= lista[::-1]\n",
"print(lista)\n",
"print(l2)"
],
"execution_count": 64,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[2, 3, 5, 7, 11]\n",
"[11, 7, 5, 3, 2]\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "V1_mdt8uw7iN",
"outputId": "2a0821d4-8db7-4cd4-93d9-19cb6afe623b"
},
"source": [
"#Podemos almacenar lo que queramos\n",
"listaFalsa = [2,5,7,'Hola','IN6531',[34,65,21]]\n",
"listaFalsa"
],
"execution_count": 65,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[2, 5, 7, 'Hola', 'IN6531', [34, 65, 21]]"
]
},
"metadata": {},
"execution_count": 65
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "KAaIKCs5w7uB",
"outputId": "d3279d57-7313-4ad9-940a-ae753733e95f"
},
"source": [
"#Actualizar un elemento\n",
"listaFalsa[0] = 6\n",
"listaFalsa"
],
"execution_count": 66,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[6, 5, 7, 'Hola', 'IN6531', [34, 65, 21]]"
]
},
"metadata": {},
"execution_count": 66
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ycKQ8V23w7vh",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "d5a0c164-554c-4cc5-a9dd-4764cf96fb29"
},
"source": [
"#Incluso si son de distinto tipo\n",
"listaFalsa[-1] = 8\n",
"listaFalsa"
],
"execution_count": 67,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[6, 5, 7, 'Hola', 'IN6531', 8]"
]
},
"metadata": {},
"execution_count": 67
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "1aoCA-YBw7yM",
"outputId": "7681101f-d95e-4f31-a25d-aa2815858891"
},
"source": [
"#largo de lista\n",
"len(lista)"
],
"execution_count": 68,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"5"
]
},
"metadata": {},
"execution_count": 68
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "d64MtmkyzMLV",
"outputId": "a62c272b-724c-436a-f503-074369b67588"
},
"source": [
"#agregar elementos a una lista\n",
"print(lista)\n",
"lista.append(55)\n",
"print(lista)"
],
"execution_count": 69,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[2, 3, 5, 7, 11]\n",
"[2, 3, 5, 7, 11, 55]\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "gBD17L85zheq",
"outputId": "c7112bc0-3fd8-4e38-e9b3-158dc7e9184b"
},
"source": [
"#eliminar elemento de una lista\n",
"lista.pop(0) #Elimina primer elemento\n",
"lista"
],
"execution_count": 70,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[3, 5, 7, 11, 55]"
]
},
"metadata": {},
"execution_count": 70
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "4zcl9lIG1YCG",
"outputId": "2e64902d-e0b5-4754-a41a-53fbca42c430"
},
"source": [
"#¿en que posicion esta un elemento especifico?\n",
"lista.index(11)"
],
"execution_count": 71,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"3"
]
},
"metadata": {},
"execution_count": 71
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "UNjSx5Z_zKYv"
},
"source": [
"Existen mas metodos para incorporar/eliminar elementos, para mas información ver el link sugerido arriba."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pz65kbFRrsVW"
},
"source": [
"####1.4 Tuplas\n",
"\n",
"Las tuplas son conjuntos de elementos ordenados e inmutables."
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "eMwdmTdC0wkc",
"outputId": "89f0d556-5b82-4149-dea6-ff7e1c4accb0"
},
"source": [
"tupla = (1,'hi')\n",
"tupla"
],
"execution_count": 72,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(1, 'hi')"
]
},
"metadata": {},
"execution_count": 72
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "UA3uuTO80wnd",
"outputId": "adc813ae-0b79-4bdb-aa42-00439420f11e"
},
"source": [
"#indexa igual que una lista\n",
"tupla[0]"
],
"execution_count": 73,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1"
]
},
"metadata": {},
"execution_count": 73
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "1npuxo2K0wry",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 197
},
"outputId": "620090c9-f63e-41aa-d114-4e46ce6cc46f"
},
"source": [
"#NO SE PUEDE MUTAR\n",
"tupla[1] = 'bye'"
],
"execution_count": 74,
"outputs": [
{
"output_type": "error",
"ename": "TypeError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m#NO SE PUEDE MUTAR\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mtupla\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'bye'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mTypeError\u001b[0m: 'tuple' object does not support item assignment"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "nd7bcHr80wt0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 197
},
"outputId": "2f67df7e-bdf3-4797-d25f-0dd0b7e7b73a"
},
"source": [
"#NO SE PUEDEN AGREGAR ELEMENTOS\n",
"tupla.append(3)"
],
"execution_count": 75,
"outputs": [
{
"output_type": "error",
"ename": "AttributeError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m#NO SE PUEDEN AGREGAR ELEMENTOS\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mtupla\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m: 'tuple' object has no attribute 'append'"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "3s-v3GCu0wCO"
},
"source": [
"####1.5 Diccionarios\n",
"\n",
"Un diccionario es un conjunto no ordenado de elementos, a cada elemento se puede acceder a través de una llave."
]
},
{
"cell_type": "code",
"metadata": {
"id": "12U15HO10wyA",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "0eb9f6c6-1888-4ff1-9af8-831ffdba008e"
},
"source": [
"mydict = {\"elem1\": 1,\n",
" \"elem2\": \"Hello\",\n",
" \"elem3\": [1, 2, 3]}\n",
"mydict"
],
"execution_count": 76,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'elem1': 1, 'elem2': 'Hello', 'elem3': [1, 2, 3]}"
]
},
"metadata": {},
"execution_count": 76
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "N-OF2EgyI0n2"
},
"source": [
"dicc = {'Serie1': [1,2,3,4,5],\n",
" 'Serie2':[5,6,8,9,10]}"
],
"execution_count": 77,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "g6eIha9O0wzn",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "d90c70b0-b0f5-4e69-bf85-e59bd4c5b44b"
},
"source": [
"# acceder a un valor a través de su llave\n",
"mydict[\"elem3\"]"
],
"execution_count": 78,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[1, 2, 3]"
]
},
"metadata": {},
"execution_count": 78
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "YBY45oAv0w1Y",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 197
},
"outputId": "fc7c4c69-f847-4c7d-814a-66722bc1262c"
},
"source": [
"# ERROR: la indexación es lo por la llave, no por posición ya que es un conjunto no ordenado\n",
"mydict[0]"
],
"execution_count": 79,
"outputs": [
{
"output_type": "error",
"ename": "KeyError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# ERROR: la indexación es lo por la llave, no por posición ya que es un conjunto no ordenado\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mmydict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m: 0"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "K7nMswjNqkb_",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "2412f1d4-b4f8-4248-8697-83a6a6d2293c"
},
"source": [
"mydict.keys()\n",
"#HINT/SPOILER: si se puede iterar sobre esto"
],
"execution_count": 80,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_keys(['elem1', 'elem2', 'elem3'])"
]
},
"metadata": {},
"execution_count": 80
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "UzHjzSES2_k8",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "233ad24d-e380-4c86-9852-40b06be80fcc"
},
"source": [
"#Obtener las llaves como una lista\n",
"keys = list(mydict.keys())\n",
"keys"
],
"execution_count": 81,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"['elem1', 'elem2', 'elem3']"
]
},
"metadata": {},
"execution_count": 81
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ksyxzCwc26S1",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "50645a7a-181a-42d2-d898-7155e2db1143"
},
"source": [
"# agregar un elemento\n",
"mydict[\"elem4\"] = (1,2,3)\n",
"mydict"
],
"execution_count": 82,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"{'elem1': 1, 'elem2': 'Hello', 'elem3': [1, 2, 3], 'elem4': (1, 2, 3)}"
]
},
"metadata": {},
"execution_count": 82
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "8mwUdNnK26Vs",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "7a6a052c-8698-447d-a7fc-96329c621559"
},
"source": [
"# obtener una lista con todos los valores del diccionario\n",
"values = list(mydict.values())\n",
"values"
],
"execution_count": 83,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[1, 'Hello', [1, 2, 3], (1, 2, 3)]"
]
},
"metadata": {},
"execution_count": 83
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "j5TOl6iY3MUf"
},
"source": [
"####1.6 Booleanos\n",
"\n",
"Valores posibles de un objeto booleano: True, False, None \n",
"\n",
"\n",
"Operadores de comparación:\n",
"\n",
"| Operación | Descripción |\n",
"|--------|----------------|\n",
"|``a == b``|``a`` igual a ``b``|\n",
"|``a != b``| ``a`` diferente de ``b``|\n",
"|``a < b``| ``a`` menor que ``b``|\n",
"| ``a > b``| ``a`` mayor que ``b`` |\n",
"|``a <= b``|``a`` menor o igual a ``b``|\n",
"| ``a >= b``| ``a`` mayor o igual a ``b`` |\n",
"|``a and b``|``a`` y ``b``|\n",
"|``a & b``|``a`` y ``b``|\n",
"| ``a or b`` | ``a`` o ``b`` |\n",
"| ``a \\| b`` | ``a`` o ``b`` |\n",
"| ``a ^ b`` | solo ``a`` o solo ``b`` |"
]
},
{
"cell_type": "code",
"metadata": {
"id": "HqsVOMHj26Zo",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "c10f49b4-144d-4f82-90f9-6d90815e0fd7"
},
"source": [
"#operador or\n",
"True | False"
],
"execution_count": 84,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {},
"execution_count": 84
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "4jFVl4fD26bm",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "d5631ec4-24ef-41f1-de12-e58a5f536b4d"
},
"source": [
"True or False"
],
"execution_count": 85,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {},
"execution_count": 85
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Ic2AJUNt26gN",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "91abc4bf-2101-48dc-907a-2f277d2915c3"
},
"source": [
"#operador xor\n",
"True ^ True"
],
"execution_count": 86,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"False"
]
},
"metadata": {},
"execution_count": 86
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "lbn9JZFf26i5",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "b94d1678-58b0-4d35-db93-c37d1635b1d1"
},
"source": [
"False ^ True"
],
"execution_count": 87,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {},
"execution_count": 87
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "dr4KJJxo3lXA",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "ae443726-ae67-4506-a1df-a23f6308eec7"
},
"source": [
"# operador and\n",
"True & True"
],
"execution_count": 88,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {},
"execution_count": 88
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Pto1ziSL3laL",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "293b8896-bbd8-4c94-b3ac-ad3a77bcf2d5"
},
"source": [
"# 1 es igual a 0?\n",
"1==0"
],
"execution_count": 89,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"False"
]
},
"metadata": {},
"execution_count": 89
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "tOGJSA-R3ld6",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "da91c12b-b790-42e4-c09c-7deb90be1eff"
},
"source": [
"# 1 es distinto de 0?\n",
"1!=0"
],
"execution_count": 90,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {},
"execution_count": 90
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "XaCedcJY3lfs",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "a8013a0a-6901-42cd-b3ce-e8ce930fb1d9"
},
"source": [
"# 3 es mayor a 2 y 1 es menor a 2?\n",
"(3>2) and (1<2)"
],
"execution_count": 91,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {},
"execution_count": 91
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 197
},
"id": "ZZHhjzag3ljY",
"outputId": "bb9f336a-4783-4445-f7be-4eb8405c2e7e"
},
"source": [
"# Puedo usar esto sobre strings\n",
"x > m"
],
"execution_count": 92,
"outputs": [
{
"output_type": "error",
"ename": "NameError",
"evalue": "ignored",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m# Puedo usar esto sobre strings\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mx\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'x' is not defined"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "IHD4uX6526mx",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "b59d72f4-b8c3-4f28-a624-82b6512b5d04"
},
"source": [
"'x' > 'm'"
],
"execution_count": 93,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {},
"execution_count": 93
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Mumo3nnJ38yw",
"outputId": "0aa0a16e-b785-4ea1-cbe7-7e7ff23ade95"
},
"source": [
"#¿Y para distinto tamaño?\n",
"'hola' > 'hola mundo'"
],
"execution_count": 94,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"False"
]
},
"metadata": {},
"execution_count": 94
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "e_kXW7454Tap"
},
"source": [
"##2.Control del flujo, Iteradores y Funciones"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nY3pO9kF4Zb7"
},
"source": [
"####2.1 Control de flujo\n",
"Una estructura de control, es un bloque de código que permite agrupar instrucciones de manera controlada.\n",
"Las estructuras de control de flujo condicionales, se definen mediante el uso de tres palabras claves reservadas del lenguaje: `if` (si), `elif` (sino, si) y `else` (sino)."
]
},
{
"cell_type": "code",
"metadata": {
"id": "IjIFfDzi4n1r",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "d1a88415-4258-4f39-8b3e-127c4306143e"
},
"source": [
"a = 3\n",
"b = 2\n",
"#\n",
"if a < b:\n",
" print('se cumplió la condición 1')\n",
"elif a == b:\n",
" print('no se cumplió la condición 1, pero si la 2')\n",
"else:\n",
" print('no se cumplió ninguna de las condición anteriores')"
],
"execution_count": 95,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"no se cumplió ninguna de las condición anteriores\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VSqPa0vn4tKw"
},
"source": [
"####2.2 Iteradores\n",
"\n",
"Los iteradores nos permiten dar una instruccion o generar una accion sobre varios elementos (si, les di basicamente la definicion de iterar)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xH2s1I4k5Nor"
},
"source": [
"#####Range\n",
"`Range(start, stop, step)` devuelve un objeto que produce una secuencia de enteros desde el inicio (inclusive) detener (exclusivo) por pasos."
]
},
{
"cell_type": "code",
"metadata": {
"id": "9g-jo0GN5LOs",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "346fa671-63c9-4799-8701-0bcf3368613c"
},
"source": [
"list(range(10))"
],
"execution_count": 96,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]"
]
},
"metadata": {},
"execution_count": 96
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ajIbxiDs5LRL",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "4673531f-ba28-4541-aa99-740ea7b32fa8"
},
"source": [
"list(range(1, 10))"
],
"execution_count": 97,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[1, 2, 3, 4, 5, 6, 7, 8, 9]"
]
},
"metadata": {},
"execution_count": 97
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "YZKl5LZw5LUD",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "20919c7c-6c7a-4677-b728-220e85b66329"
},
"source": [
"list(range(1, 12, 3))"
],
"execution_count": 98,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[1, 4, 7, 10]"
]
},
"metadata": {},
"execution_count": 98
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xhrKMREb5Un0"
},
"source": [
"#####For\n",
"La instrucción `for` itera con una variable que toma valores de una lista dada. A menudo, esa lista se especifica mediante `range`."
]
},
{
"cell_type": "code",
"metadata": {
"id": "f1zYEHlF5LXY",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "d0294ada-ab7d-490a-a1ea-05f08e432117"
},
"source": [
"#se puede iterar sobre los valores de una lista\n",
"lista = [1,2,3,4,5,6,7,8]\n",
"for var in lista:\n",
" numero = var **2\n",
" print(numero)"
],
"execution_count": 99,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"1\n",
"4\n",
"9\n",
"16\n",
"25\n",
"36\n",
"49\n",
"64\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "yTMUGVd-PiBb",
"outputId": "5c9900cb-727f-4c44-d345-053be1895a54"
},
"source": [
"list(range(len(lista)))"
],
"execution_count": 100,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"[0, 1, 2, 3, 4, 5, 6, 7]"
]
},
"metadata": {},
"execution_count": 100
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "x9RzPd9T5Ley",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "58fe6084-e084-4174-d2c4-30f69b489c53"
},
"source": [
"#se puede iterar sobre los indices de una lista\n",
"for i in range(len(lista)):\n",
" print(i)"
],
"execution_count": 101,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0\n",
"1\n",
"2\n",
"3\n",
"4\n",
"5\n",
"6\n",
"7\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "biwXL_uf5Lkp",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "c58a6c80-2bc4-47c8-c86d-ab662b5624af"
},
"source": [
"#Se puede iterar sobre una lista\n",
"lista2 = []\n",
"\n",
"for i in lista:\n",
" numero2 = i**3\n",
" lista2.append(numero2)\n",
"print(lista2)"
],
"execution_count": 102,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[1, 8, 27, 64, 125, 216, 343, 512]\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "GMmoPeoT5Lh1",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "ba9c51a8-c330-4296-d965-15604271f50b"
},
"source": [
"#se pueden incorporar controles de flujo\n",
"lista2 = []\n",
"print(lista2)\n",
"for i in lista:\n",
" numero = i**2\n",
" if numero%2 == 0:\n",
" lista2.append(numero)\n",
"print(lista2)"
],
"execution_count": 103,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[]\n",
"[4, 16, 36, 64]\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "63NOSUqf5Lnb",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "52937384-640e-4539-88db-fdd638c10dd0"
},
"source": [
"#List comprehension:\n",
"#Es una forma de construir una nueva lista aplicando una expresión a cada elemento de otra lista (o a elementos de una secuencia)\n",
"# y filtrando elementos según una condición, todo en una sola línea de código.\n",
"l2 = [i**2 for i in lista]\n",
"print(l2)"
],
"execution_count": 106,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[1, 4, 9, 16, 25, 36, 49, 64]\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "-gQedlZ8ROzn",
"outputId": "38149662-143a-485d-a207-8749c2f549a2"
},
"source": [
"li = [i-1 for i in l2]\n",
"print(li)"
],
"execution_count": 107,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[0, 3, 8, 15, 24, 35, 48, 63]\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "BbueZeyf5Lp3",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "055847fa-8947-4f3e-c65f-d669846e65ea"
},
"source": [
"#mas ejemplos de list comprehension\n",
"l2 = [i**2 for i in lista if i%2 == 0]\n",
"print(l2)\n",
"\n",
"l2 = [1 if i%2==0 else 0 for i in lista]\n",
"print(l2)"
],
"execution_count": 108,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[4, 16, 36, 64]\n",
"[0, 1, 0, 1, 0, 1, 0, 1]\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "XNDBdR9H7aiV"
},
"source": [
"#####While\n",
"\n",
"La instrucción `While` itera con una variable entregada que va mutando *dentro*. Requiere partir de una condicion verdadera"
]
},
{
"cell_type": "code",
"metadata": {
"id": "QuKvRztx7peV"
},
"source": [
"#, es decir 'while (condition) ==False'\n",
"i=20\n",
"while (i<10):\n",
" print('iteración:', i)\n",
" i+=1"
],
"execution_count": 109,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "3bKTAh8j8HCd"
},
"source": [
"Veamos un ejemplo \"util\":\n",
"\n",
"\n",
"\n",
"Si tenemos el polinomio:\n",
"\n",
"$$\n",
"\\begin{align}\n",
"P(x) &= 5+2x-3x^2+4x^3\n",
"\\end{align}\n",
"$$\n",
"Se puede factorizar como:\n",
"$$\n",
"\\begin{align}\n",
"P(x) &=5+x(2+x(-3+x(4)))\n",
"\\end{align}\n",
"$$\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "0NrObmeD7_BN",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "423ea8ba-81ce-4786-daba-f09461edad9b"
},
"source": [
"# Definición de la lista de números y la variable 'x'\n",
"a = [5, 2, -3, 4]\n",
"x = 2\n",
"# Inicialización de la variable de acumulación 'P' y su impresión\n",
"P = 0\n",
"print(P)\n",
"# Inicialización de la variable de control del bucle 'i' con la longitud de la lista 'a'\n",
"i = len(a)\n",
"# Bucle 'while' que se ejecuta mientras 'i' sea mayor que 1\n",
"while i > 1:\n",
" # Actualización de 'P' multiplicando el valor acumulado actual más el elemento en la posición 'i - 1' por 'x'\n",
" P = (P + a[i - 1]) * x\n",
" # Impresión del valor actual de 'P'\n",
" print(P)\n",
" # Decremento de 'i' para avanzar a la siguiente posición de la lista\n",
" i -= 1\n",
"# Suma del primer elemento de la lista 'a' al valor final de 'P'\n",
"P += a[0]\n",
"# Impresión del valor final de 'P'\n",
"print(P)"
],
"execution_count": 111,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0\n",
"8\n",
"10\n",
"24\n",
"29\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pJ1pnaMo84m2"
},
"source": [
"####2.3 Funciones\n",
"\n",
"Para definir una función se usa la siguiente sintaxis:\n",
"\n",
"\n",
"```\n",
" def nombre_función(inputs):\n",
" declaraciones ....\n",
"```\n",
"Ejemplo:\n",
"```\n",
" def myfun(x, y, z=default):\n",
" declaraciones ....\n",
"```\n",
"\n",
"Llamar una función\n",
"\n",
"```\n",
" myfun(a, b)\n",
"\n",
" myfun(x=a, y=b)\n",
"\n",
" myfun(x=a, y=b, z=c)\n",
"\n",
"```"
]
},
{
"cell_type": "code",
"metadata": {
"id": "MoRFIY6_7p7N",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "b12e79f6-6a40-4c57-c69f-db2af09c5206"
},
"source": [
"# una función puede no recibir parámetros\n",
"def hello_world():\n",
" print(\"Hello World\")\n",
"\n",
"hello_world()"
],
"execution_count": 112,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Hello World\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "U572KHyh7p9s",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "062bfa61-9d43-4285-8b5e-52dc51c43c35"
},
"source": [
"# función con argumento\n",
"def greetings(name):\n",
" print('Hello', name)\n",
"greetings('Joaquín')"
],
"execution_count": 113,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Hello Joaquín\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "S9qHR6GrT1nQ",
"outputId": "99cd1696-59c9-426d-98eb-b3ce6df65737"
},
"source": [
"def greetings(name='Joaquín'):\n",
" print('Hello', name)\n",
"\n",
"greetings(name='Cristóbal')"
],
"execution_count": 114,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Hello Cristóbal\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "5YertYi89vpM",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "65b69046-fa15-4cb6-9695-bc58a2a755f3"
},
"source": [
"# función con valor por defecto\n",
"def mysum(x, y=5):\n",
" print(x+y)\n",
"mysum(5)\n",
"mysum(5, 10)"
],
"execution_count": 115,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"10\n",
"15\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "63TQ9DcK9vr0"
},
"source": [
"# con el comando return una función puede retornar un objeto\n",
"def is_positive(x):\n",
" if x>0:\n",
" return True\n",
" else:\n",
" return False\n",
"a = is_positive(1)"
],
"execution_count": 116,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "LOKcyj-yUPBf",
"outputId": "73bba479-4024-4f3d-d7a4-d1c53fef1025"
},
"source": [
"a"
],
"execution_count": 117,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"True"
]
},
"metadata": {},
"execution_count": 117
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "eDd2Rack9vu_",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "0d176d16-bf31-40b7-a80d-607b07acb536"
},
"source": [
"mylist = [1, 2, 3, 4]\n",
"# list -> int\n",
"# Esta funcion suma los valores de una lista dada\n",
"def mysum(x):\n",
" s = 0\n",
" #esto es recurrente sobre blabla\n",
" for value in x:\n",
" s = s+value\n",
" return s\n",
"\n",
"mysum(mylist)"
],
"execution_count": 118,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"10"
]
},
"metadata": {},
"execution_count": 118
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "GanpIJ-O9v0L",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "7a2c8527-5fbd-4bd8-8e38-1e7d91499f82"
},
"source": [
"def promedio(x):\n",
" N = len(x)\n",
" return mysum(x)/N\n",
"\n",
"promedio(mylist)"
],
"execution_count": 119,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2.5"
]
},
"metadata": {},
"execution_count": 119
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "k4G9u2-M-V-d"
},
"source": [
"El **scope** o alcance de una variable se refiere a los lugares en que se puede ver o acceder a una variable."
]
},
{
"cell_type": "code",
"metadata": {
"id": "NjqiEBD99v5Q",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "8cecfc0a-5df8-4445-8e2d-2a02fc794a26"
},
"source": [
"# las variables definidas dentro de una función no tienen impacto en las variables definidas a fuera\n",
"x = 20\n",
"def myfun(y):\n",
" x = y\n",
" return x\n",
"\n",
"print(x)\n",
"myfun(10)\n",
"print(x)"
],
"execution_count": 120,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"20\n",
"20\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "X-_A6MC4-BMl",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "18fd8781-6da9-4e7b-d708-f147fb63cd14"
},
"source": [
"#Notar que pasa si la asigno\n",
"a=0\n",
"print(a)\n",
"a = myfun(10)\n",
"print(a)\n",
"print(x)"
],
"execution_count": 121,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0\n",
"10\n",
"20\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "71xpBndMWEWV"
},
"source": [
"t=10"
],
"execution_count": 122,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "vof16-9G-BPm",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "037176ee-e302-491f-d472-26b64eb3fbef"
},
"source": [
"def my_funct(y):\n",
" return t+y\n",
"\n",
"my_funct(10)"
],
"execution_count": 123,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"20"
]
},
"metadata": {},
"execution_count": 123
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "yTP39-eN-XAF"
},
"source": [
"Con **global** las declaraciones dentro de la función al ejecutarse pueden cambiar al valor original de la variable definida a fuera de la función. En general no se recomiendo el uso de \"global\"."
]
},
{
"cell_type": "code",
"metadata": {
"id": "TdwM_ITA-BSe",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "075085c8-1e19-4acd-fd67-53ce6559349f"
},
"source": [
"x = 20\n",
"def my_funct(y):\n",
" global x\n",
" x = y\n",
" return x\n",
"\n",
"print(x)\n",
"# actualizar x\n",
"my_funct(10)\n",
"print(x)"
],
"execution_count": 124,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"20\n",
"10\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "eg3DqN5kqdji"
},
"source": [
"##3.Programación orientada a objetos (OOP)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ntUgkIPM-12M"
},
"source": [
"1. Clase: Propiedad y comportamiento de un objeto concreto.\n",
"2. Objeto: Instancia de una clase\n",
"3. Atributo: Propiedad del objeto\n",
"4. Método: Lo que un objeto puede hacer\n",
"\n",
"\n",
"\n",
"Más documentación
\n",
"Métodos especiales: https://docs.python.org/3/reference/datamodel.html#special-method-names \n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "nmSSzEZJjMQw"
},
"source": [
"class Book():\n",
"\n",
" #Método constructor: Función para instanciar un objeto.\n",
" def __init__(self, title, author, pages):\n",
" print(\"A book is created\") #mensaje que se muestra en patalla al crear un objeto\n",
" #Atributos de cada objeto\n",
" self.title = title\n",
" self.author = author\n",
" self.pages = pages\n",
" #Métodos especiales\n",
" def __str__(self): #al utilizar la función print() sobre un objeto retorna un string con todos sus atributos de forma:\n",
" return \"Title:%s , author:%s, pages:%s \" %(self.title, self.author, self.pages)\n",
" def __len__(self):#al utilizar la función len() sobre un objeto retorna el número de páginas del libro\n",
" return self.pages\n",
" #método\n",
" def saludar(self, saludo):\n",
" return '{s} {autor}'.format(s=saludo, autor=self.author)"
],
"execution_count": 1,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "Cxo1OpmC_Pkl",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "1c8fba04-43b0-45e0-973f-59887434060c"
},
"source": [
"# instanciar un objeto\n",
"book = Book(\"Machine Learning A Probabilistic Perspective\", \"K. Murphy\", 1000)"
],
"execution_count": 2,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"A book is created\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "sKc2wBso_PnN",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "21ad3bf3-875b-414e-a7b1-03fbddf0fa0c"
},
"source": [
"book"
],
"execution_count": 3,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<__main__.Book at 0x7b2175bcb7c0>"
]
},
"metadata": {},
"execution_count": 3
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "EAInOvfY_PqR",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "2c7d4441-fa1d-4f95-a4e0-5c61bd4cad2d"
},
"source": [
"# acceder a un atributo de un objeto\n",
"book.title"
],
"execution_count": 4,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Machine Learning A Probabilistic Perspective'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 4
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "6ALjzU0s_PtN",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "439de8c2-8038-4181-fb26-90f0c1b0b645"
},
"source": [
"# método especial: print\n",
"print(book)"
],
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Title:Machine Learning A Probabilistic Perspective , author:K. Murphy, pages:1000 \n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "nfcXHWTI_PwD",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "4708673d-a534-47fc-8da9-a6f9b00a8338"
},
"source": [
"# método especial:len\n",
"len(book)"
],
"execution_count": 6,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1000"
]
},
"metadata": {},
"execution_count": 6
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Amh6NCZk_Py5",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"outputId": "ab369fd4-e7fb-4b97-fa0d-614d9de35532"
},
"source": [
"# método normal\n",
"book.saludar('Hola')"
],
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'Hola K. Murphy'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 7
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wljUi-AL_sl2"
},
"source": [
"A efectos de este curso entender la noción de cómo funcionan las clases es lo único que se les pedirá, de esa manera podrán entender como funcionan las librerías que veremos más adelante.\n",
"\n",
"Para profudizar el conocimiento los invito a seguir con los cursos del MDS tomando *MDS7202 - Laboratorio de Programación Cientifica*."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "I0O8Y61VANK-"
},
"source": [
"##4.Librerías más usadas del curso"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6_t_7GtmAuiF"
},
"source": [
"Instalar librerías en python, comandos: `pip` y `conda`\n",
"\n",
"Por ejemplo:\n",
"\n",
"`!pip install numpy`\n",
"\n",
"o\n",
"\n",
"`conda install numpy`\n",
"\n",
"Más documentación:\n",
"\n",
"https://packaging.python.org/tutorials/installing-packages/\n",
"\n",
"https://conda.io/docs/user-guide/tasks/manage-pkgs.html#installing-packages"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Z1QL7KWxArFt"
},
"source": [
"###4.1 Numpy"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5aUF9tvDHb3P"
},
"source": [
"Librería para operaciones numéricas con arreglos(arrays).\n",
"\n",
"\n",
"\n",
"Tutorial en datacamp\n",
"\n",
"\n",
"100 numpy exercises\n",
"\n",
"https://drive.google.com/file/d/1GeqpxhbqXDv1Fq8GshnbdP6oUvpxSQv9/view"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "XAXrYh2u_P1V",
"outputId": "276aa165-6a03-4878-ea0d-ddee90a4643d"
},
"source": [
"!pip install numpy"
],
"execution_count": 8,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (1.23.5)\n"
]
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "7kabOBHtjMcu"
},
"source": [
"import numpy as np"
],
"execution_count": 9,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "LAH1HeGAH2t-",
"outputId": "3f077c2c-4318-4f84-a3ae-c53992fb3119"
},
"source": [
"#transformar lista en array\n",
"l = [1,2,3]\n",
"print(l)\n",
"x = np.asarray(l)\n",
"print(x)"
],
"execution_count": 10,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"[1, 2, 3]\n",
"[1 2 3]\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"#crear un array\n",
"x = np.array([1,2,3])"
],
"metadata": {
"id": "zjWr3GFsPKZ-"
},
"execution_count": 13,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "VtUn-NYrH2xF",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "b651b0a8-7b4e-4836-e14e-b1820663cf07"
},
"source": [
"#largo de un array\n",
"len(x)"
],
"execution_count": 14,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"3"
]
},
"metadata": {},
"execution_count": 14
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "8wza_LJpH20R",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "21b35818-1f20-4818-97e6-f867d8cebe7e"
},
"source": [
"# dimensión del vector\n",
"x.shape"
],
"execution_count": 15,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(3,)"
]
},
"metadata": {},
"execution_count": 15
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "TlaDT4V2H22-",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "2464d072-7b54-44d3-9c32-0182c0b9be5d"
},
"source": [
"# vector fila (1 x N)\n",
"y = np.array([[1, 2, 3]])\n",
"y"
],
"execution_count": 16,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[1, 2, 3]])"
]
},
"metadata": {},
"execution_count": 16
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "dEqGZrlqH251",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "af4c29f2-9c67-4a63-8d4e-d0a0c43164eb"
},
"source": [
"y.shape"
],
"execution_count": 17,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(1, 3)"
]
},
"metadata": {},
"execution_count": 17
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Dnc5f120H282",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "5e6b3a5d-779f-4839-c50d-d1e80bee0705"
},
"source": [
"# vector columna (N x 1)\n",
"# transponer y\n",
"z = y.T\n",
"z.shape"
],
"execution_count": 18,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(3, 1)"
]
},
"metadata": {},
"execution_count": 18
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vrsoLRpPH2_b",
"outputId": "a6f28c87-5989-4f91-b26e-168a020357de"
},
"source": [
"#matriz de dos filas y tres columnas\n",
"matriz = np.array([[1, 2, 3], [4, 5, 6]])\n",
"matriz"
],
"execution_count": 19,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[1, 2, 3],\n",
" [4, 5, 6]])"
]
},
"metadata": {},
"execution_count": 19
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "YGIBdIJGH3CE",
"outputId": "ff7de2ce-62d9-4763-f8b4-bae80f15883d"
},
"source": [
"# indexación (posicion_fila, posicion_columna)\n",
"matriz[0,0]"
],
"execution_count": 20,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1"
]
},
"metadata": {},
"execution_count": 20
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "PqFdQHL7Id1g",
"outputId": "681e6dd5-40f1-4e33-a8b4-75e25cc6d545"
},
"source": [
"matriz[0][0]"
],
"execution_count": 21,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1"
]
},
"metadata": {},
"execution_count": 21
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "zCWATK4uId4Y",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "4fbb5c23-3607-4e0e-daed-e7ed355d3eba"
},
"source": [
"# primera fila\n",
"matriz[0]"
],
"execution_count": 22,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([1, 2, 3])"
]
},
"metadata": {},
"execution_count": 22
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Bzop0FFZId7f",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "1ed28bf4-ad0d-40c5-d254-328bde50d693"
},
"source": [
"# primera columna\n",
"\n",
"matriz[:,0]"
],
"execution_count": 23,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([1, 4])"
]
},
"metadata": {},
"execution_count": 23
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Jy6DCPycId-j",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "d2d6a313-b9c6-4f39-f16d-0dbefb0b2fe1"
},
"source": [
"# largo de la matriz = número de filas\n",
"len(matriz)"
],
"execution_count": 24,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2"
]
},
"metadata": {},
"execution_count": 24
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "eskx0rBHIeBX",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "a95e89c0-da7f-496f-ce9b-b5f8e7cda80d"
},
"source": [
"# dimensión de la matriz\n",
"matriz.shape"
],
"execution_count": 25,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(2, 3)"
]
},
"metadata": {},
"execution_count": 25
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "hEtP-RPIIeEY",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "8e60e9b0-69d3-4ef8-abc5-6463931be1ae"
},
"source": [
"# producto punto\n",
"x = np.array([1,2,3])\n",
"y = np.array([2,2,2])\n",
"\n",
"np.dot(x, y)"
],
"execution_count": 27,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"12"
]
},
"metadata": {},
"execution_count": 27
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "bBHVNLpxIeKg",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "4f0cd6d5-d2d4-433a-c623-c93ea858f4c1"
},
"source": [
"matriz"
],
"execution_count": 28,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[1, 2, 3],\n",
" [4, 5, 6]])"
]
},
"metadata": {},
"execution_count": 28
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "iFPHOYMnIeNI",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "3d30613b-5eaa-4ae1-eec9-b3ab48e83d4e"
},
"source": [
"# producto matricial, la dimensión de las matrices debe ser: n1 x m y m x n2\n",
"np.dot(matriz, matriz.T)"
],
"execution_count": 29,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[14, 32],\n",
" [32, 77]])"
]
},
"metadata": {},
"execution_count": 29
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "jD9QD8zcKMqH",
"outputId": "a1a87668-cfde-46fe-abd5-ee4c81896273"
},
"source": [
"#Se pueden aplicar condiciones sobre los arreglos\n",
"array = np.arange(1,10)\n",
"array"
],
"execution_count": 30,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([1, 2, 3, 4, 5, 6, 7, 8, 9])"
]
},
"metadata": {},
"execution_count": 30
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "CkwP-oB9KXde",
"outputId": "2aed442a-1287-4690-9d68-820bf89f496c"
},
"source": [
"condicion = array>4\n",
"condicion"
],
"execution_count": 31,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([False, False, False, False, True, True, True, True, True])"
]
},
"metadata": {},
"execution_count": 31
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "79rEc0lQKXgW",
"outputId": "a2c4ca37-5c75-4108-e94e-2a7b23caed59"
},
"source": [
"array[condicion]"
],
"execution_count": 32,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([5, 6, 7, 8, 9])"
]
},
"metadata": {},
"execution_count": 32
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "EbMt6Z0UKXjJ",
"outputId": "a22894a4-7d06-4be7-ed54-54fe3f4cece2"
},
"source": [
"array[array>5]"
],
"execution_count": 33,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([6, 7, 8, 9])"
]
},
"metadata": {},
"execution_count": 33
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "az4QMkJGKXlB",
"outputId": "754d6bc9-9228-4894-95bf-68139b4660fb"
},
"source": [
"array[array>=5]=0\n",
"array"
],
"execution_count": 34,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([1, 2, 3, 4, 0, 0, 0, 0, 0])"
]
},
"metadata": {},
"execution_count": 34
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Z7T3HVFBK2Lh"
},
"source": [
"#matrices de ceros\n",
"ceros = np.zeros(3)\n",
"ceros2d= np.zeros((3,4))"
],
"execution_count": 35,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Fs-dsLxWK2N-",
"outputId": "184d53c2-7e72-4e89-be77-ff28ea166d06"
},
"source": [
"#matriz identidad\n",
"np.eye(5)"
],
"execution_count": 36,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([[1., 0., 0., 0., 0.],\n",
" [0., 1., 0., 0., 0.],\n",
" [0., 0., 1., 0., 0.],\n",
" [0., 0., 0., 1., 0.],\n",
" [0., 0., 0., 0., 1.]])"
]
},
"metadata": {},
"execution_count": 36
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "mmVcDP8SMSnJ",
"outputId": "21c458bc-156d-4989-a084-829f7319d74b"
},
"source": [
"#vector denso:\n",
"# np.linspace(lim inf, lim sup, cantidad de elementos)\n",
"x = np.linspace(0, 10, 6)\n",
"x"
],
"execution_count": 37,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([ 0., 2., 4., 6., 8., 10.])"
]
},
"metadata": {},
"execution_count": 37
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "cTZSfuUzIePt",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "45bfeaec-2a16-46aa-f724-6d4177c28fb4"
},
"source": [
"# logaritmo natural\n",
"np.log(1)"
],
"execution_count": 41,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0.0"
]
},
"metadata": {},
"execution_count": 41
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "1-XXvXzaIv-n",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "0f68a47c-80f6-4963-97b3-ba33df751315"
},
"source": [
"# exponencial\n",
"np.exp(1)"
],
"execution_count": 42,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2.718281828459045"
]
},
"metadata": {},
"execution_count": 42
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "ZIzI1TfPIwBo",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "81151857-1cb0-45ce-8f7d-d7962b371d6f"
},
"source": [
"# número pi\n",
"np.pi"
],
"execution_count": 43,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"3.141592653589793"
]
},
"metadata": {},
"execution_count": 43
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "9ErCLLcfIwEj",
"outputId": "473c173d-4397-40d9-9be7-0c7d9b06c682"
},
"source": [
"# promedio\n",
"x=np.array([3,5,7,9,11])\n",
"x.mean()"
],
"execution_count": 44,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"7.0"
]
},
"metadata": {},
"execution_count": 44
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "SIUGbuzbIwG5",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "41a5c29c-01ac-4bd1-a95c-4a61fa370365"
},
"source": [
"# desviación estándar\n",
"x.std()"
],
"execution_count": 45,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"2.8284271247461903"
]
},
"metadata": {},
"execution_count": 45
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "CKwo0uM6IwJc",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "af6488c3-a58a-4955-a042-e77d72ba70a2"
},
"source": [
"# mínimo\n",
"x.min()"
],
"execution_count": 46,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"3"
]
},
"metadata": {},
"execution_count": 46
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "TG9L89myLVRQ",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "2a880840-8e47-4f66-a927-bfa9280d76c8"
},
"source": [
"# máximo\n",
"x.max()"
],
"execution_count": 47,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"11"
]
},
"metadata": {},
"execution_count": 47
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "uhEaP7diLVT4",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "2d5e07dc-b187-45f9-a265-186ac98ea1c8"
},
"source": [
"print(\"mínimo de 'a': \", x.min())\n",
"print(\"máximo de 'a': \", x.max())\n",
"print(\"promedio de'a': \", x.mean())\n",
"print(\"desviación de 'a': \", x.std())"
],
"execution_count": 48,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"mínimo de 'a': 3\n",
"máximo de 'a': 11\n",
"promedio de'a': 7.0\n",
"desviación de 'a': 2.8284271247461903\n"
]
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "tv3v8qwfLbgu"
},
"source": [
"###4.2 Matplotlib\n",
"\n",
"Librería para graficar\n",
"\n",
"Tutorial datacamp\n",
"\n",
"\n",
"\n",
"Documentación\n",
"\n",
"https://matplotlib.org"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "B0LCuG79Lv5g"
},
"source": [
"**Disclosure:** Puede que durante el curso veamos implementaciones con otras librerías como seaborn o pyplot, esta es la librería más usada y por eso la veremos en esta aux. De todas maneras si en sus entregas usan otra librería de graficos, es perfectamente válido."
]
},
{
"cell_type": "code",
"metadata": {
"id": "UvGuY1OpLVWh"
},
"source": [
"import matplotlib.pyplot as plt"
],
"execution_count": 49,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 472
},
"id": "u741CH4OMM5y",
"outputId": "b971234f-bd7c-400b-d913-8b9599c49595"
},
"source": [
"#Grafico simple\n",
"x = np.linspace(0, 10, 500)\n",
"y = np.sin(x)\n",
"\n",
"# plot\n",
"plt.plot(x,y, label=\"sin\")\n",
"\n",
"# leyenda\n",
"plt.legend()\n",
"\n",
"# titulo y etiquetas\n",
"plt.title(\"Título\")\n",
"plt.xlabel(\"Eje x\")\n",
"plt.ylabel(\"Eje y\")\n",
"\n",
"plt.show()"
],
"execution_count": 50,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "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T09HdnY2dDod0tPTkZ6e3qwmUnR0NDZs2ADAsNhz8eLFeOmll/DTTz/h6NGjmDNnDkJDQzFjxgwAwIABAzB16lQsWLAAqamp2Lt3LxYtWoSZM2d2eCccERER2TebWeC9bNkyfPrpp6Z/Dx8+HACwfft2TJo0CQCQkZGByspK0zFPPvkkampqsHDhQlRUVGDcuHHYvHkznJ2dTcd88cUXWLRoESZPngyZTIbbbrsN77zzTve8KSIiIrJ6NldnyRqxzhIREZHt6ejnt81MwxERERFJgckSERERURuYLBERERG1gckSERERURuYLBERERG1gckSERERURuYLBERERG1gckSERERURuYLBERERG1wWbanVgzYxF0tVotcSRERETUUcbP7faamTBZMoOqqioAQFhYmMSREBERUWdVVVXBy8ur1a+zN5wZ6PV65OXlwcPDA4IgmO28arUaYWFhyMnJYc85C+LPufvwZ909+HPuHvw5dw9L/pxFUURVVRVCQ0Mhk7W+MokjS2Ygk8nQs2dPi53f09OTf4jdgD/n7sOfdffgz7l78OfcPSz1c25rRMmIC7yJiIiI2sBkiYiIiKgNTJasmEqlwvLly6FSqaQOxa7x59x9+LPuHvw5dw/+nLuHNfycucCbiIiIqA0cWSIiIiJqA5MlIiIiojYwWSIiIiJqA5MlIiIiojYwWbJiq1evRkREBJydnREXF4fU1FSpQ7IrK1aswKhRo+Dh4YHAwEDMmDEDGRkZUodl91599VUIgoDFixdLHYrdyc3NxezZs+Hn5wcXFxcMHjwYBw4ckDosu6LT6fDss88iMjISLi4u6N27N1588cV2e4tR+3bt2oUbb7wRoaGhEAQBP/zwQ7Ovi6KIZcuWISQkBC4uLkhISEBmZma3xMZkyUqtX78eS5YswfLly3Hw4EEMHToUiYmJKCoqkjo0u7Fz50489NBD2LdvH7Zu3YrGxkZMmTIFNTU1Uodmt/bv34/3338fQ4YMkToUu1NeXo6xY8fCyckJv/76K06cOIE333wTPj4+UodmV1577TW89957ePfdd3Hy5Em89tpreP3117Fq1SqpQ7N5NTU1GDp0KFavXt3i119//XW88847WLNmDVJSUuDm5obExETU19dbPjiRrNLo0aPFhx56yPRvnU4nhoaGiitWrJAwKvtWVFQkAhB37twpdSh2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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 472
},
"id": "bGWVMolfMM8x",
"outputId": "da38e4ef-2b37-4fb9-f55e-77430c62c820"
},
"source": [
"#Dos graficos en la misma figura\n",
"y = x**2\n",
"y2 = x**3\n",
"\n",
"plt.plot(x,y, 'r')\n",
"\n",
"plt.title('grafico')\n",
"plt.xlabel('ejeX')\n",
"plt.ylabel('ejeY')\n",
"\n",
"plt.plot(x,y2,'g')\n",
"\n",
"plt.legend(('rojo','verde'))\n",
"\n",
"plt.show()"
],
"execution_count": 51,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
""
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAHHCAYAAABeLEexAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABXMElEQVR4nO3dd3gU9cLF8e+m94QASQgECIh0KdICKCqRIqKIDQ2IyhUvglKUdpUqAoIVCwjXK6BgV1QQEFEpivQiRXqHJEAggfTszvtH3qwEIiaQZDa75/M88+zuzOzu2VWzx5nfzFgMwzAQERERcWFuZgcQERERMZsKkYiIiLg8FSIRERFxeSpEIiIi4vJUiERERMTlqRCJiIiIy1MhEhEREZenQiQiIiIuT4VIREREXJ4KkYgIkJOTw7Bhw4iKisLNzY1u3boBYLFYGDt2rKnZRKTkeZgdQETEEfzvf/9j6tSpDBo0iKZNm1K1alWzI4lIKbLoWmYiItCjRw9Wr17NsWPH8s3PyMjAw8MDDw/9/6OIM9MuMxFxOjabjYyMjCI9JzExkZCQkMvm+/j4qAyJuAAVIhFxaL/88gvNmjXDx8eHmjVr8t577zF27FgsFot9HYvFwoABA5g3bx7169fH29ubJUuWAPDKK6/QunVrypcvj6+vLzfeeCNffPGF/bmHDh3CYrHw888/s2PHDiwWCxaLhV9++cX+2peOITp+/Dh9+vQhMjISb29voqOj6devH1lZWfZ1Dhw4wP33309oaCh+fn60atWKRYsWldwXJSLXRP/bIyIOa/PmzXTq1IlKlSoxbtw4rFYr48ePp2LFipet+9NPP/HZZ58xYMAAKlSoQPXq1QF48803ueuuu4iLiyMrK4tPPvmE+++/n4ULF9KlSxcqVqzIhx9+yEsvvcSFCxeYNGkSAHXr1i0w04kTJ2jRogXnzp2jb9++1KlTh+PHj/PFF1+QlpaGl5cXCQkJtG7dmrS0NJ555hnKly/PnDlzuOuuu/jiiy+45557Suw7E5GrozFEIuKw7rrrLpYvX87evXuJjIwEYN++fdStW5ecnBzy/nxZLBbc3Nz4448/qFevXr7XSE9Px9fX1/44Ozubpk2bEhYWxvLly+3zb7nlFk6fPs327dvzPd9isTBmzBj7VqLevXvz0UcfsXbtWpo1a5ZvXcMwsFgsDB48mDfeeINVq1bRtm1bAC5cuMANN9yAYRjs378fNzdtoBdxJPovUkQcktVq5ccff6Rbt272MgRw3XXX0blz58vWb9eu3WVlCMhXhs6ePUtycjI33XQTmzZtKnImm83GggUL6Nq162VlCLDvxvv+++9p0aKFvQwBBAQE0LdvXw4dOsTOnTuL/N4iUrJUiETEISUmJpKens5111132bKC5kVHRxf4OgsXLqRVq1b4+PgQGhpKxYoVmT59OsnJyUXOdOrUKVJSUmjQoMEV1zt8+DC1a9e+bH7ebrjDhw8X+b1FpGSpEImIU7h4S1CeVatWcdddd+Hj48O7777L999/z7Jly3j44YfRaAERuZgGVYuIQwoLC8PHx4d9+/ZdtqygeQX58ssv8fHxYenSpXh7e9vnf/DBB1eVqWLFigQFBV02zuhS1apVY/fu3ZfN//PPP+3LRcSxaAuRiDgkd3d3YmNjWbBgASdOnLDP37dvH4sXLy70a1gsFqxWq33eoUOHWLBgwVVlyrukx3fffceGDRsuW5631emOO+5g3bp1rFmzxr4sNTWVmTNnUr169QLHOomIuVSIRMRhjR07lpycHNq0acOUKVOYNGkS7dq1+8cxPHm6dOlCWloanTp1YsaMGYwfP56WLVsWOAapsCZOnEhYWBjt2rVj8ODBzJw5k3HjxtGgQQP7uKQRI0YQHh5O586dGT16NG+88QZt27bl4MGDvPbaazrCTMQBaZeZiDisG2+8kcWLF/Pcc88xatQooqKiGD9+PLt27bLvfrqS2267jffff5/JkyczaNAgoqOjefnllzl06BDbtm27qkyVK1dm7dq1jBo1innz5pGSkkLlypXp3Lkzfn5+AISHh/Pbb78xfPhw3nrrLTIyMrjhhhv47rvv6NKly1W9r4iULJ2HSETKnG7durFjxw727t1rdhQRcRLabisiDi09PT3f47179/L9999zyy23mBNIRJySthCJiEOrVKkSjz76KDVq1ODw4cNMnz6dzMxMNm/eTK1atcyOJyJOQmOIRMShderUiY8//pj4+Hi8vb2JiYlh4sSJKkMiUqy0hUhERERcnsYQiYiIiMtTIRIRERGXpzFEhWCz2Thx4gSBgYH2q1mLiIiIYzMMg/PnzxMZGfmPJ0RVISqEEydOEBUVZXYMERERuQpHjx6lSpUqV1xHhagQAgMDgdwvNCgo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AfDII4+wdetW1q9fj5eXl8kJRaQ4aAuRiDgVm83GpEmTiI6OxtfXl0aNGvHFF18ABe8y2759O507dyYgIIDw8HB69erF6dOn7cuvv/56Jk+ezNNPP83Jkyf55ptv+OSTT5g7d67KkIgTUSESEacyadIk5s6dy4wZM9ixYweDBw+mZ8+erFix4rJ1z507x2233UaTJk3YsGEDS5YsISEhgQceeCDfek8//TSNGjWiV69e9O3bl9GjR9OoUaPS+kgiUgq0y0xEnEZmZiahoaH8+OOPxMTE2Of/61//Ii0tjYkTJxIdHc3mzZtp3LgxEyZMYNWqVSxdutS+7rFjx4iKimL37t1cf/319vl//vkndevWpWHDhmzatAkPD49S/WwiUrL0X7SIOI19+/aRlpbG7bffnm9+VlYWTZo0uWz9rVu38vPPPxMQEHDZsv379+crRP/73//w8/Pj4MGDHDt2jOrVqxd7fhExjwqRiDiNCxcuALBo0SIqV66cb5m3tzdWq/Wy9bt27crLL7982WtVqlTJfv+3337j9ddf54cffmDChAn06dOHH3/8EYvFUgKfQkTMoEIkIk6jXr16eHt7c+TIEdq1a3fZ8kOHDuV73LRpU7788kuqV6/+t7vA0tLSePTRR+nXrx+33nor0dHRNGzYkBkzZtCvX7+S+BgiYgINqhYRpxEYGMhzzz3H4MGDmTNnDvv372fTpk289dZbzJkz57L1+/fvT1JSEg899BDr169n//79LF26lMcee8y+NWnkyJEYhsHkyZMBqF69Oq+88grDhg27rGCJSNmlQdUi4lQMw2DatGlMnz6dAwcOEBISQtOmTfnPf/5D1apV8w2qBti7dy/Dhw/n559/JjMzk2rVqtGpUydee+01Vq5cSfv27fnll19o27Ztvvfp2LEjOTk52nUm4iRUiETEZezevZs6deqwd+9errvuOrPjiIgD0S4zEXEJSUlJfPHFFwQFBREVFWV2HBFxMBpULSIuoU+fPmzcuJHp06fj7e1tdhwRcTDaZSYiIiIuT7vMRERExOWpEImIiIjLUyESERERl6dCJCIiIi5PhUhERERcngqRiIiIuDwVIhEREXF5KkQiIiLi8lSIRERExOX9HxR9yKy78bQ+AAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "_eRgvwBmNFgi"
},
"source": [
"Para ver implementaciones más complejas les dejo dos links que visito harto:\n",
"\n",
"\n",
"\n",
"* [¿Como tener dos rangos distintos en eje y?](https://cmdlinetips.com/2019/10/how-to-make-a-plot-with-two-different-y-axis-in-python-with-matplotlib/)\n",
"* [Mi biblia para plots](https://cmdlinetips.com/2019/10/how-to-make-a-plot-with-two-different-y-axis-in-python-with-matplotlib/)\n",
"\n",
"Para todo lo demás está Stackoverflow y Chat GPT\n"
]
},
{
"cell_type": "markdown",
"source": [
"#### Plotly\n",
"\n",
"Una librería que se está utilizando mucho por sus funcionalidades e interactividad es la librería plotly. La cual nos permite transformar los gráficos anteriores"
],
"metadata": {
"id": "DvhXOy_9Ad3z"
}
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"\n",
"px.line(x=x,y=y)"
],
"metadata": {
"id": "Gkl9cOQwAoDQ",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"outputId": "a5fced96-74b8-4594-c068-cd3f5feba895"
},
"execution_count": 52,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"\n",
"\n",
"\n",
" \n",
"\n",
""
]
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VMYPEZy_OOsL"
},
"source": [
"###4.3 Pandas\n",
"\n",
"Es LA librería de Python especializada en el manejo y análisis de estructuras de datos. Por ende a lo largo del semestre la usaremos bastaaante por lo que a continuación veremos SOLO una pincelada de las caracteristicas generales. No obstante en la próxima aux la veremos muuuucho más en detalle\n",
"\n",
"\n",
"HYPE MODE ON"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7HJEDHA2Ossr"
},
"source": [
"####Series"
]
},
{
"cell_type": "code",
"metadata": {
"id": "SNAL91bpMM_n"
},
"source": [
"# importar las librerias a utilizar\n",
"import numpy as np\n",
"import pandas as pd"
],
"execution_count": 53,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "pXBL7Ww_MNEy",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "63e6c06f-1ea7-4477-eb54-959a91e1c3a9"
},
"source": [
"etiquetas = ['a', 'b', 'c']\n",
"datos = [1,2,3]\n",
"serie_1 = pd.Series(data = datos, index = etiquetas)\n",
"serie_1"
],
"execution_count": 54,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"a 1\n",
"b 2\n",
"c 3\n",
"dtype: int64"
]
},
"metadata": {},
"execution_count": 54
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "QgLE-ntHMNHx",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "44171636-3ec6-41c5-f916-6769bc429768"
},
"source": [
"serie_1['a']"
],
"execution_count": 55,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1"
]
},
"metadata": {},
"execution_count": 55
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "zeT36IPUMNKd",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "cef506de-0a06-4f2b-a8b2-181cb3cacdd3"
},
"source": [
"array = np.arange(5,8)\n",
"etiqueta = ['venta1', 'venta2', 'venta3']\n",
"serie1 = pd.Series(array, etiqueta)\n",
"serie1"
],
"execution_count": 56,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"venta1 5\n",
"venta2 6\n",
"venta3 7\n",
"dtype: int64"
]
},
"metadata": {},
"execution_count": 56
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "0P_adxoBMNS3",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "bc55575a-444d-4da1-ae93-23341d064237"
},
"source": [
"serie1['venta1']"
],
"execution_count": 57,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"5"
]
},
"metadata": {},
"execution_count": 57
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "sP-voxLTMNWA",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "1a2d35e2-8e92-44b6-9dae-15938abc2283"
},
"source": [
"serie1[0]"
],
"execution_count": 58,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"5"
]
},
"metadata": {},
"execution_count": 58
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "JvjOk5daMNYx",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "35facc56-b729-4daa-a591-9dbd610008c8"
},
"source": [
"datos2 = ['informatica', 300, 'impresora', 400]\n",
"pd.Series(datos2)"
],
"execution_count": 59,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0 informatica\n",
"1 300\n",
"2 impresora\n",
"3 400\n",
"dtype: object"
]
},
"metadata": {},
"execution_count": 59
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "KIDIVLoiMNbr",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "80797f53-a521-4d41-9929-7e1fc9a9619d"
},
"source": [
"serie1= pd.Series([1,2,3,4], ['ventas1','ventas2','ventas3', 'ventas4'])\n",
"serie2= pd.Series([4,8,5], ['ventas1','ventas2','ventas3'])\n",
"serie_suma = serie1 + serie2\n",
"serie_suma"
],
"execution_count": 60,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"ventas1 5.0\n",
"ventas2 10.0\n",
"ventas3 8.0\n",
"ventas4 NaN\n",
"dtype: float64"
]
},
"metadata": {},
"execution_count": 60
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "rSimuZTlOv1J"
},
"source": [
"####Dataframes"
]
},
{
"cell_type": "code",
"metadata": {
"id": "OUtDT0acMNeO"
},
"source": [
"#Podemos crear nuestro DF\n",
"#Opcion 1\n",
"filas = ['ventas1', 'ventas2', 'ventas 3']\n",
"columnas = ['zonaA', 'zonaB', 'zonaC']\n",
"datos = [[123,421,256], [234,541,257], [120,451,258]]\n",
"\n",
"dataframe = pd.DataFrame(datos, filas, columnas)"
],
"execution_count": 61,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "zNxvhAdlLVZT",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 143
},
"outputId": "960a4daa-5189-49f8-dee9-abc29595ced5"
},
"source": [
"#Opcion 2\n",
"dic_ventas = {\n",
" 'zonaA':[123,421,256],\n",
" 'zonaB':[234,541,257],\n",
" 'zonaC':[120,451,258]\n",
"}\n",
"\n",
"dataframe_2 = pd.DataFrame(data=dic_ventas,index=filas)\n",
"dataframe_2"
],
"execution_count": 62,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" zonaA zonaB zonaC\n",
"ventas1 123 234 120\n",
"ventas2 421 541 451\n",
"ventas 3 256 257 258"
],
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" | \n",
" zonaA | \n",
" zonaB | \n",
" zonaC | \n",
" \n",
" \n",
" \n",
" \n",
" ventas1 | \n",
" 123 | \n",
" 234 | \n",
" 120 | \n",
" \n",
" \n",
" ventas2 | \n",
" 421 | \n",
" 541 | \n",
" 451 | \n",
" \n",
" \n",
" ventas 3 | \n",
" 256 | \n",
" 257 | \n",
" 258 | \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n"
]
},
"metadata": {},
"execution_count": 62
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Jg9Ql9_tPmHB"
},
"source": [
"\n",
"\n",
"También podemos llamar un dataset de un archivo csv, excel u otros formatos con el comando\n",
"\n",
"```\n",
"df = pd.read_csv('Archivo_i.csv')\n",
"```\n",
"o\n",
"```\n",
"df = pd.read_xlsx('Archivo_i.xlsx')\n",
"```\n",
"\n",
"Sin embargo, esas implementaciones las veremos en detalle más adelante."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "4kag0uAMPAaN"
},
"source": [
"#####Operaciones sobre df"
]
},
{
"cell_type": "code",
"metadata": {
"id": "Z7g1c0RWLVbq",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 112
},
"outputId": "fc7f7c51-2c6a-4309-fc3b-a575350653ec"
},
"source": [
"#Seleccionar\n",
"dataframe.loc[['ventas1', 'ventas2']]"
],
"execution_count": 63,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" zonaA zonaB zonaC\n",
"ventas1 123 421 256\n",
"ventas2 234 541 257"
],
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" | \n",
" zonaA | \n",
" zonaB | \n",
" zonaC | \n",
" \n",
" \n",
" \n",
" \n",
" ventas1 | \n",
" 123 | \n",
" 421 | \n",
" 256 | \n",
" \n",
" \n",
" ventas2 | \n",
" 234 | \n",
" 541 | \n",
" 257 | \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n"
]
},
"metadata": {},
"execution_count": 63
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "t_DIy4YgPIr6",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 143
},
"outputId": "58720233-1df5-45d9-a871-1762fca9dadb"
},
"source": [
"dataframe[['zonaA', 'zonaC']]"
],
"execution_count": 64,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" zonaA zonaC\n",
"ventas1 123 256\n",
"ventas2 234 257\n",
"ventas 3 120 258"
],
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" | \n",
" zonaA | \n",
" zonaC | \n",
" \n",
" \n",
" \n",
" \n",
" ventas1 | \n",
" 123 | \n",
" 256 | \n",
" \n",
" \n",
" ventas2 | \n",
" 234 | \n",
" 257 | \n",
" \n",
" \n",
" ventas 3 | \n",
" 120 | \n",
" 258 | \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n"
]
},
"metadata": {},
"execution_count": 64
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "u7NJZsKGPIup",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "73ee22ab-ead3-48da-a8f6-722d21c87f4f"
},
"source": [
"dataframe.loc['ventas1','zonaA']"
],
"execution_count": 66,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"123"
]
},
"metadata": {},
"execution_count": 66
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "oaFGZE3MPIxV",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 143
},
"outputId": "e5db2b9d-3434-4d37-8078-717c13054ff7"
},
"source": [
"dataframe"
],
"execution_count": 67,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" zonaA zonaB zonaC\n",
"ventas1 123 421 256\n",
"ventas2 234 541 257\n",
"ventas 3 120 451 258"
],
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" | \n",
" zonaA | \n",
" zonaB | \n",
" zonaC | \n",
" \n",
" \n",
" \n",
" \n",
" ventas1 | \n",
" 123 | \n",
" 421 | \n",
" 256 | \n",
" \n",
" \n",
" ventas2 | \n",
" 234 | \n",
" 541 | \n",
" 257 | \n",
" \n",
" \n",
" ventas 3 | \n",
" 120 | \n",
" 451 | \n",
" 258 | \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n"
]
},
"metadata": {},
"execution_count": 67
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "69cF_qdsPI0Q",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 143
},
"outputId": "2a7b0d5c-89da-4a92-f3e1-22295baca819"
},
"source": [
"#Crear nuevas columnas\n",
"dataframe['VentasTotales'] = [0,0,0]\n",
"dataframe"
],
"execution_count": 68,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" zonaA zonaB zonaC VentasTotales\n",
"ventas1 123 421 256 0\n",
"ventas2 234 541 257 0\n",
"ventas 3 120 451 258 0"
],
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" | \n",
" zonaA | \n",
" zonaB | \n",
" zonaC | \n",
" VentasTotales | \n",
" \n",
" \n",
" \n",
" \n",
" ventas1 | \n",
" 123 | \n",
" 421 | \n",
" 256 | \n",
" 0 | \n",
" \n",
" \n",
" ventas2 | \n",
" 234 | \n",
" 541 | \n",
" 257 | \n",
" 0 | \n",
" \n",
" \n",
" ventas 3 | \n",
" 120 | \n",
" 451 | \n",
" 258 | \n",
" 0 | \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n"
]
},
"metadata": {},
"execution_count": 68
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "xx-oqjMBPPuR",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 143
},
"outputId": "d48dc580-6558-4f89-a06f-a03147662941"
},
"source": [
"dataframe['VentasHoy'] = 0\n",
"dataframe"
],
"execution_count": 69,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" zonaA zonaB zonaC VentasTotales VentasHoy\n",
"ventas1 123 421 256 0 0\n",
"ventas2 234 541 257 0 0\n",
"ventas 3 120 451 258 0 0"
],
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" | \n",
" zonaA | \n",
" zonaB | \n",
" zonaC | \n",
" VentasTotales | \n",
" VentasHoy | \n",
" \n",
" \n",
" \n",
" \n",
" ventas1 | \n",
" 123 | \n",
" 421 | \n",
" 256 | \n",
" 0 | \n",
" 0 | \n",
" \n",
" \n",
" ventas2 | \n",
" 234 | \n",
" 541 | \n",
" 257 | \n",
" 0 | \n",
" 0 | \n",
" \n",
" \n",
" ventas 3 | \n",
" 120 | \n",
" 451 | \n",
" 258 | \n",
" 0 | \n",
" 0 | \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n"
]
},
"metadata": {},
"execution_count": 69
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "zqd8KecVPI2s",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 143
},
"outputId": "b4fb81f2-3ed2-45ba-ca88-f2dda7dc7a10"
},
"source": [
"#Sumar columnas\n",
"dataframe.loc[:,'VentasTotales'] = dataframe.loc[:,'zonaA']+dataframe.loc[:,'zonaB']+dataframe.loc[:,'zonaC']\n",
"dataframe"
],
"execution_count": 76,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" zonaA zonaB zonaC VentasTotales VentasHoy\n",
"ventas1 123 421 256 800 0\n",
"ventas2 234 541 257 1032 0\n",
"ventas 3 120 451 258 829 0"
],
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" | \n",
" zonaA | \n",
" zonaB | \n",
" zonaC | \n",
" VentasTotales | \n",
" VentasHoy | \n",
" \n",
" \n",
" \n",
" \n",
" ventas1 | \n",
" 123 | \n",
" 421 | \n",
" 256 | \n",
" 800 | \n",
" 0 | \n",
" \n",
" \n",
" ventas2 | \n",
" 234 | \n",
" 541 | \n",
" 257 | \n",
" 1032 | \n",
" 0 | \n",
" \n",
" \n",
" ventas 3 | \n",
" 120 | \n",
" 451 | \n",
" 258 | \n",
" 829 | \n",
" 0 | \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n"
]
},
"metadata": {},
"execution_count": 76
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "pZ4DaeKbPI4_",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 143
},
"outputId": "5df0c965-e183-4986-9239-c76221846ddb"
},
"source": [
"#Botar columnas\n",
"dataframe.drop('VentasTotales', axis=1, inplace = True)\n",
"dataframe"
],
"execution_count": 77,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" zonaA zonaB zonaC VentasHoy\n",
"ventas1 123 421 256 0\n",
"ventas2 234 541 257 0\n",
"ventas 3 120 451 258 0"
],
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" | \n",
" zonaA | \n",
" zonaB | \n",
" zonaC | \n",
" VentasHoy | \n",
" \n",
" \n",
" \n",
" \n",
" ventas1 | \n",
" 123 | \n",
" 421 | \n",
" 256 | \n",
" 0 | \n",
" \n",
" \n",
" ventas2 | \n",
" 234 | \n",
" 541 | \n",
" 257 | \n",
" 0 | \n",
" \n",
" \n",
" ventas 3 | \n",
" 120 | \n",
" 451 | \n",
" 258 | \n",
" 0 | \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n"
]
},
"metadata": {},
"execution_count": 77
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "XBjQnSzGPe6B",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 112
},
"outputId": "9c108286-328b-4e1d-cc86-01c9740e37f9"
},
"source": [
"dataframe.drop('ventas2',inplace = True)\n",
"dataframe"
],
"execution_count": 78,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" zonaA zonaB zonaC VentasHoy\n",
"ventas1 123 421 256 0\n",
"ventas 3 120 451 258 0"
],
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" | \n",
" zonaA | \n",
" zonaB | \n",
" zonaC | \n",
" VentasHoy | \n",
" \n",
" \n",
" \n",
" \n",
" ventas1 | \n",
" 123 | \n",
" 421 | \n",
" 256 | \n",
" 0 | \n",
" \n",
" \n",
" ventas 3 | \n",
" 120 | \n",
" 451 | \n",
" 258 | \n",
" 0 | \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n"
]
},
"metadata": {},
"execution_count": 78
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "znKaKithPe8d",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "1e31a2c0-2d2b-4bd0-e33d-dcdd64c46221"
},
"source": [
"dataframe.shape"
],
"execution_count": 79,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(2, 4)"
]
},
"metadata": {},
"execution_count": 79
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "cSNVNqebPe_h",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 49
},
"outputId": "95318116-df65-4a18-956e-eea419663a65"
},
"source": [
"#Podemos aplicar condiciones al igual que en numpy\n",
"dataframe.loc[dataframe.loc[:,'zonaA']>200]"
],
"execution_count": 82,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Empty DataFrame\n",
"Columns: [zonaA, zonaB, zonaC, VentasHoy]\n",
"Index: []"
],
"text/html": [
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n",
" | \n",
" zonaA | \n",
" zonaB | \n",
" zonaC | \n",
" VentasHoy | \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
" \n",
" \n",
"\n",
"\n",
"\n",
" \n",
"\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" \n"
]
},
"metadata": {},
"execution_count": 82
}
]
}
]
} | | | | | | |