/ Data science

Intro a Python para Data Science (Listas en python)

Como vimos en el capítulo anterior Python básico para Data Science, en python tenemos diferentes tipos de datos como los float, boolean, int, string. Pero en Data Science necesitamos trabajar con muchísimos datos a la vez y para esto necesitamos una forma sencilla de manipular cientos de datos en una sola movida, por que sería mala práctica crear mil variables para mil datos diferentes, por eso tenemos las listas, que nos sirven para almacenar esos mil datos diferentes y asignarlos a una sola variable de una manera bien sencilla.

1. Creación de listas y conceptos básicos:

Para crear una lista simplemente abrimos dos corchetes y separamos los valores por , ej: [12,25,36] con esto no tenemos que crear tres variables diferente, sino que asignamos esa lista a una sola variable: mi_lista = [15,25,36], cabe mencionar que las listas a diferencia de los arrays en otros lenguajes como Golang pueden almacenar diferentes tipos de tados ej: familia = ['Herman', 1.84,'Manuel',160] en este ejemplo hemos declarado una variable familia con el nombre de dos personas que serían strings y dos números diferentes uno tipo float y un int. Hay que mencionar que las listas son de tipo list que son datos compuestos, porque pueden almacenar otros datos no son un array como en otros lenguajes, pero esos conceptos avanzados los veremos después.

Cabe mencionar que las listas pueden almacenar otras listas también como en el siguiente ejemplo:

productos = ['leche','cereal','huevos','atún']
precios = [25,20,24.5,12.25]
despensa = [productos,precios]

Ejercicio crea 5 variables diferentes que se llamen así: karate, jujitsu, lucha, muay_thai, box y asígnales los valores que tu consideres entre el 0 y el 10 luego crea una lista que se llame mma_skills con las variables anteriormente creadas y luego imprime la lista por consola, todo esto lo haces desde un archivo que se llame 01_python_lists.py.

Podrás notar que se ha imprimido una serie de números, pero solo eso no tienen ningún sentido, el elemento karate de la lista solo nos despliega un número, pero en consola no sabríamos a qué se refiere, así que vamos a agregar otro tipo de datos a la misma lista.

Ejercicio En la misma lista anterior vamos a anteponer un string antes de cada elemento que nos indique a qué se refiere cada número cuando lo imprimimos por consola ej: ['karate: ', karate], luego de hacerlo vuelves a imprimir la lista por consola.

Hemos creado una lista que contiene strings y varios datos de tipo int, recuerda que las listas en python pueden almacenar cualquier tipo de dato python a la vez, aunque no es muy común pero se puede ej: a = [1, 3, 4, 2] b = [[1, 2, 3], [4, 5, 7]] c = [1 + 2, "a" * 5, 3].

2. Obteniendo elementos de una lista (subconjunto):

Como todo lo demás en python, esto también es pan comido, así que vamos a la explicación, para obtener un elemento de las listas tenemos que indicar el nombre de la lísta y entre corchetes colocar el número del índice del elemento, teniendo en cuenta que se empieza contando del cero 0 1 2 3 etc.

karate = 10
jujitsu = 2
lucha = 5
muay_thai = 8
box = 8

mma_skills = ['karate:',karate,'jujitsu: ',jujitsu,'lucha: ',lucha,'muay thai: ',muay_thai, 'box: ', box]

print(mma_skills[1])

>>10 

#nos mostraría el 10 porque estamos pidiendo la posición **1** y comenzamos contando desde el cero, y como 10 es el valor de la variable karate y esa variable está en el índice. 1

Si quisiéramos obtener datos desde el último elemento o de atrás para adelante como le quieras llamar, lo hacemos colocando índice negativo, pero la lista toma el primer elemento como 0 así que el último pasaría a ser el -1 el penúltimo -2 y así relativamente hasta terminar la lista.

karate = 10
jujitsu = 2
lucha = 5
muay_thai = 8
box = 8

mma_skills = ['karate:',karate,'jujitsu: ',jujitsu,'lucha: ',lucha,'muay thai: ',muay_thai, 'box: ', box]

print(mma_skills[-1])

>>8 

#nos mostraría el 8 porque estamos pidiendo la posición **-1** y comenzamos contando desde el cero y cero en este caso sería el string karate luego el -1 sería el int 8 que es el valor de la variable box 

3. Cortar listas (slicing)

Así como podemos seleccionar datos específicos de una lista podemos recortar un fragmento de la lista y hacerla más corta, y python lo hace súper fácil, veamos cómo hacerlo simplemente agarramos nuestra lista y entre los corchetes colocamos el número del índice que queremos de primero seguido de dos puntos y después el índice que con el que queremos que termine, teniendo en cuenta que el primero es incluyente y el segundo no.

lista[inicio:fin] así de sencillo es como cortamos un pedazo de la lista, en base a nuestro ejemplo anterior supongamos que solo queremos traer la palabra jujitsu y el valor de la variable jujitsu hacemos lo siguiente: mma_skills[2:4]. ¿Pero porqué 4 en el segundó índice?, porque como el segundo no es incluyente si escribimos 3 que sería el índice de la variable jujitsu no lo incliuiría, así que ponemos 4 que es el valor del string lucha para que no lo incluya y nos seleccione el valor del índice anterior que sería el entero que contiene la variable jujitsu.

Cuando cortamos una lista y se la asignamos a una variable automáticamente se está creando una lista nueva.

Sin embargo, también es posible no especificar estos índices. Si no especifica el índice de inicio, Python se da cuenta de que desea comenzar su segmento al comienzo de su lista. Si no especifica el índice final, la porción llegará hasta el último elemento de su lista.

slicing = mma_skills[2:] #imprimirá desde el string jujitsu hasta el final
slicing_2 = mma_skills[:4] #imprimirá hasta el valor de la variable jujitsu

4. Obtener una lista de una lista (Subjuntar):

Ya viste que una lista de Python puede contener prácticamente cualquier cosa; incluso otras listas! Para subconjuntar listas de listas, puede usar la misma técnica que antes: corchetes. Prueba el siguiente código en tu consola y verás a lo que me refiero:

x = [["a", "b", "c"],
     ["d", "e", "f"],
     ["g", "h", "i"]]
x[2][0] #el resultado es g porque el 2 indica que lista elige y el 0 el elemento de esa lista que eligió.
x[2][:2] #el resultado es h porque el 2 indica que lista elige y el :2 hasta que elemento va a hacer slice

5. Manipular listas:

En las listas podemos agregar, modificar y eliminar elementos de una manera muy sencilla como todo lo demás que hemos visto, los ejemplos que voy a usar a continuación son super básicos pero en base a todo lo que hemos visto puedes hacer maravillas, lo dejo a tu imaginación.

#modificando elementos:
x = ["a", "b", "c", "d"]
x[1] = "r" #selecciona el indice 1 y remplaza el valor por 'r'
x[2:] = ["s", "t"] # selecciona 'c' y 'd' y lo cambia por 's' y 't'
#agregando elementos:
x = ["a", "b", "c", "d"]
y = x + ["e", "f"] #el resultado será a,b,c,d,e,f
#eliminando elementos:
x = ["a", "b", "c", "d"]
del(x[1]) #con la función del tu borras elementos en este caso la letra 'b'

Presta atención aquí: ¡tan pronto como eliminas un elemento de una lista, los índices de los elementos que vienen después del elemento eliminado cambian todos!

6. Funcionamiento interno de una lista:

Cuando tienes una lista por ejemplo x = ["a", "b", "c", "d"] y creas otra lista llamada x_copy y le asignas la lista x original y modificas algún elemento de x_copy y luego mandas a imprimir las dos listas, te darás cuenta que se modificaron las dos, esto es porque las dos están apuntando a la misma lista almacenada en memoria. ej:

x = ["a", "b", "c", "d"]
x_copy = x
x_copy[1] = 'j'
print(x_copy)
print(x)

Para que esto no suceda tienes que crear una copia explícita de la lista por medio de las siguientes dos opciones: usando la función list list() o haciendo un corte de la lista completa con un slice [:] ej:

x = ["a", "b", "c", "d"]
x_copy = x[:]#con esto haces un slice completo de la lista x
# x_copy = list(x) funciona de la misma manera usando la función list
x_copy[1] = 'j'
print(x_copy)
print(x)

Material complementario de la lección lo puedes encontrar en la sección 1.5 del libro Python notes for profesionals de goalkicker.com, Dudas, respuestas y sugerencias en la caja de comentarios ¡¡PLEASE!!

¿Aún crees que la universidad es buena opción para estudiar? Compara con Teamtreehouse → ¡haciendo clic aquí!

Orlando Morales

Orlando Morales

Arquitecto web, Data scientist freelance y amante de las Artes Marciales, me encanta siempre aprender, emprender y luchar por mejorar mi estilo de vida mientras disfruto de lo que hago.

Leer más