Skip to content

Instantly share code, notes, and snippets.

@javifelices
Created October 26, 2020 21:39
Show Gist options
  • Save javifelices/9a2a3b47c76caf46cfffe1a3e1fbc4ab to your computer and use it in GitHub Desktop.
Save javifelices/9a2a3b47c76caf46cfffe1a3e1fbc4ab to your computer and use it in GitHub Desktop.
Created on Skills Network Labs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <a href=\"https://cocl.us/PY0101EN_edx_add_top\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Ad/TopAd.png\" width=\"750\" align=\"center\">\n",
" </a>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<a href=\"https://cognitiveclass.ai/\">\n",
" <img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Ad/CCLog.png\" width=\"200\" align=\"center\">\n",
"</a>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h1>Conjuntos en Python</h1>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p><strong>¡Bienvenido!</strong> En este cuaderno aprenderás acerca del uso de conjuntos con el Lenguaje de Programación Python. Al final del laboratorio, sabrás lo básico sobre operaciones con conjuntos, adema de qué son, y las operaciones lógicas que puedes hacer con ellos.</p> "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2>Tabla de Contenido</h2>\n",
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
" <ul>\n",
" <li>\n",
" <a href=\"#set\">Conjuntos</a>\n",
" <ul>\n",
" <li><a href=\"content\">Contenido de un Conjunto</a></li>\n",
" <li><a href=\"op\">Operaciones con Conjuntos</a></li>\n",
" <li><a href=\"logic\">Operacion Lógicas con Conjuntos</a></li>\n",
" </ul>\n",
" </li>\n",
" <li>\n",
" <a href=\"#quiz\">Cuestionario sobre conjuntos</a>\n",
" </li>\n",
" </ul>\n",
" <p>\n",
" Tiempo Estimado: <strong>20 min</strong>\n",
" </p>\n",
"</div>\n",
"\n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"set\">Conjuntos</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"content\">Contenido de un Conjunto</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Un conjunto es una colección de objetos únicos en Python. Un conjunto se define usando llaves de apertura y cierre <b>{}</b>. Python removerá automáticamente elementos duplicados."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Crear un conjunto\n",
"\n",
"set1 = {\"pop\", \"rock\", \"soul\", \"hard rock\", \"rock\", \"R&B\", \"rock\", \"disco\"}\n",
"set1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"El proceso de mapeado se muestra en la siguiente figura:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%202/Images/SetsUnique.png\" width=\"1100\" />"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"También se puede crear un conjunto a partir de una lista:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"# Convertir una lista en un conjunto\n",
"\n",
"album_list = [ \"Michael Jackson\", \"Thriller\", 1982, \"00:42:19\", \\\n",
" \"Pop, Rock, R&B\", 46.0, 65, \"30-Nov-82\", None, 10.0]\n",
"album_set = set(album_list) \n",
"album_set"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Vamos a crear un conjunto de géneros musicales:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Convertir una lista en un conjunto\n",
"\n",
"music_genres = set([\"pop\", \"pop\", \"rock\", \"folk rock\", \"hard rock\", \"soul\", \\\n",
" \"progressive rock\", \"soft rock\", \"R&B\", \"disco\"])\n",
"music_genres"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"op\">Operaciones con Conjuntos</h3> "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Vamos a revisar las operaciones con conjuntos que nos ayudaran a modificarlo. Considera el conjunto <b>A</b>:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Conjunto de ejemplo\n",
"\n",
"A = set([\"Thriller\", \"Back in Black\", \"AC/DC\"])\n",
"A"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Podemos agregar un elemento al conjunto mediante el método <code>add()</code>:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Agregar un elemento al conjunto\n",
"\n",
"A.add(\"NSYNC\")\n",
"A"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Si agregamos el mismo elemento dos veces nada cambiara debido a que no puede haber elemento duplicados en un conjunto:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Trata de agregar un elemento duplicado al conjunto\n",
"\n",
"A.add(\"NSYNC\")\n",
"A"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Podemos borrar un elemento del conjunto mediante el método <code>remove</code>:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Remover un elemento del conjunto\n",
"\n",
"A.remove(\"NSYNC\")\n",
"A"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Podemos verificar si existe un elemento especifico dentro del conjunto con el comando <code>in</code>:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Verificar si existe un elemento en el conjunto\n",
"\n",
"\"AC/DC\" in A"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3 id=\"logic\">Operacion Lógicas con Conjuntos</h3>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Recuerda que puedes revisar la diferencia entre dos conjuntos, así como la diferencia simétrica, intersección y unión:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Considera estos dos conjuntos:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Conjuntos de ejemplo\n",
"\n",
"album_set1 = set([\"Thriller\", 'AC/DC', 'Back in Black'])\n",
"album_set2 = set([ \"AC/DC\", \"Back in Black\", \"The Dark Side of the Moon\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%202/Images/SetsSamples.png\" width=\"650\" />"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"# Imprimir dos conjuntos\n",
"\n",
"album_set1, album_set2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Como los dos conjuntos contienen <b>AC/DC</b> y <b>Back in Black</b> podemos representar estos elementos en común en la intersección de dos círculos."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%202/Images/SetsLogic.png\" width = \"650\" />"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Para encontrar la intersección de dos conjuntos usaremos <code>&</code>:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Encontrar las intersecciones\n",
"\n",
"intersection = album_set1 & album_set2\n",
"intersection"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Puedes encontrar los elementos que únicamente están dentro de <code>album_set1</code> usando el método <code>difference</code>:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Encuentra la diferencia en set1 pero no en set2\n",
"\n",
"album_set1.difference(album_set2) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Solo tienes que considerar los elementos en <code>album_set1</code>; todos los de <code>album_set2</code>, incluyendo los de la intersección, no están incluidos."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%202/Images/SetsLeft.png\" width=\"650\" />"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Los elementos que pertenecen a <code>album_set2</code> pero no en <code>album_set1</code> esta dado por:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"album_set2.difference(album_set1) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%202/Images/SetsRight.png\" width=\"650\" />"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Puedes encontrar la intersección de <code>album_list1</code> y <code>album_list2</code> con el método <code>intersection</code>:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Usar el método intersection para encontrar la intersección entre of album_list1 y album_list2\n",
"\n",
"album_set1.intersection(album_set2) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lo siguiente corresponde a la intersección de los dos círculos:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%202/Images/SetsIntersect.png\" width=\"650\" />"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La unión es la suma de todos los elementos de ambos conjuntos, se representa pintando los dos círculos:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img src = \"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Chapter%202/Images/SetsUnion.png\" width=\"650\" />"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La unión esta dada por:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"jupyter": {
"outputs_hidden": true
}
},
"outputs": [],
"source": [
"# Encontrar la unión de los dos conjuntos\n",
"\n",
"album_set1.union(album_set2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Se puede averiguar si un conjunto es un súper conjunto o un sub conjunto de otro, respectivamente, de la siguiente forma:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Revisar si es un super conjunto\n",
"\n",
"set(album_set1).issuperset(album_set2) "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Revisar si es un sub conjunto\n",
"\n",
"set(album_set2).issubset(album_set1) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Este es un ejemplo donde <code>issubset()</code> y <code>issuperset()</code> regresan un valor verdadero:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Revisar si es un sub conjunto\n",
"\n",
"set({\"Back in Black\", \"AC/DC\"}).issubset(album_set1) "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Revisar si es un super conjunto\n",
"\n",
"album_set1.issuperset({\"Back in Black\", \"AC/DC\"}) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"quiz\">Cuestionario sobre conjuntos</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Transformar la lista <code>['rap','house','electronic music', 'rap']</code> en un conjunto:"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'electronic music', 'house', 'rap'}"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"set(['rap','house','electronic music', 'rap'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Haz doble click <b>aquí</b> para ver la solución.\n",
"<!-- Your answer is below:\n",
"set(['rap','house','electronic music','rap'])\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Considera que la lista <code>A = [1, 2, 2, 1]</code> y el conjunto <code>B = set([1, 2, 2, 1])</code> suman <code>sum(A) = sum(B)</code>"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A = [1, 2, 2, 1]\n",
"B = set([1, 2, 2, 1])\n",
"sum(A)\n",
"sum(B)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Haz doble click <b>aquí</b> para ver la solución.\n",
"\n",
"<!-- Your answer is below:\n",
"A = [1, 2, 2, 1] \n",
"B = set([1, 2, 2, 1])\n",
"print(\"the sum of A is:\", sum(A))\n",
"print(\"the sum of B is:\", sum(B))\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Crea un nuevo conjunto <code>album_set3</code> que sea la unión de <code>album_set1</code> y <code>album_set2</code>:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'AC/DC', 'Back in Black', 'The Dark Side of the Moon', 'Thriller'}"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Escribe abajo tu código y presiona Shift+Enter para ejecutarlo\n",
"\n",
"album_set1 = set([\"Thriller\", 'AC/DC', 'Back in Black'])\n",
"album_set2 = set([ \"AC/DC\", \"Back in Black\", \"The Dark Side of the Moon\"])\n",
"album_set3 = album_set1.union(album_set2)\n",
"album_set3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Haz doble click <b>aquí</b> para ver la solución.\n",
"\n",
"<!-- Your answer is below:\n",
"album_set3 = album_set1.union(album_set2)\n",
"album_set3\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Averigua si <code>album_set1</code> es un subconjunto de <code>album_set3</code>:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"album_set1.issubset(album_set3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Haz doble click <b>aquí</b> para ver la solución.\n",
"\n",
"<!-- Your answer is below:\n",
"album_set1.issubset(album_set3)\n",
"-->"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>\n",
"<h2>¡El último ejercicio!</h2>\n",
"<p>Felicidades, has completado tu primera lección y practica de laboratorio en Python. Sin embargo, hay algo mas que debes saber. La comunidad en Ciencia de Datos te alienta a compartir tu trabajo. La mejor forma de hacerlo es a través de GitHub. Al compartir tus cuadernos en GitHub, además de construir una reputación entre la comunidad de los científicos de datos, también te ayudará en el proceso de encontrar un trabajo. Incluso si este fuera tu primer material de trabajo, nunca es tarde para fomentar buenos hábitos. Por favor lee y analiza <a href=\"https://cognitiveclass.ai/blog/data-scientists-stand-out-by-sharing-your-notebooks/\" target=\"_blank\">este artículo</a> para aprender a compartir tu trabajo.\n",
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<div class=\"alert alert-block alert-info\" style=\"margin-top: 20px\">\n",
"<h2>¡Obtén gratis IBM Watson Studio!</h2>\n",
" <p><a href=\"https://cocl.us/PY0101EN_edx_add_bbottom\"><img src=\"https://s3-api.us-geo.objectstorage.softlayer.net/cf-courses-data/CognitiveClass/PY0101EN/Ad/BottomAd.png\" width=\"750\" align=\"center\"></a></p>\n",
"</div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h3>Acerca de los Autores:</h3> \n",
"<p><a href=\"https://www.linkedin.com/in/joseph-s-50398b136/\" target=\"_blank\">Joseph Santarcangelo</a> es un Científico de Datos en IBM, además posee un doctorado en Ingeniería Eléctrica. Su trabajo de investigación se centra en el uso de Aprendizaje Automático (Machine Learning), Procesamiento de Señales y Visión Artificial para determinar el impacto de los videos en el proceso cognitivo. Joseph trabaja en IBM desde la terminación de su doctorado.</p>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Otros colaboradores: <a href=\"www.linkedin.com/in/jiahui-mavis-zhou-a4537814a\">Mavis Zhou</a>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<hr>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<p>Copyright &copy; 2018 IBM Developer Skills Network. This notebook and its source code are released under the terms of the <a href=\"https://cognitiveclass.ai/mit-license/\">MIT License</a>.</p>"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python",
"language": "python",
"name": "conda-env-python-py"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.11"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment