Format en Python 3
Format en Python 3
Format en Python 3
• Inicio
• Blog
• Cursos Premium
• Contacto
En esta entrada vamos a ver la función format en python 3.- (exclusiva a partir de esta
versión), la cual nos será muy útil para ordenar los datos de salida de nuestras
aplicaciones!. Suponiendo que quieres dar como salida de tu programa una tabla con los
resultados ordenados. Pues con esta función se te pondrá muy fácil!!
Antes pido disculpas porque he dejado de lado este blog un poquillo, verás a los
programadores en estas épocas nuestras madres/ abuelas nos envían a desenredar las luces
del arbolito! Diablos!!
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# format.py
#
Nombre = input(str("Ingresa tu nombre \n")) #Solicitamos datos de entrada
print ("Tu nombre es {0}".format(Nombre)) #Formateamos la salida
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# format.py
#
Nombre = input(str("Ingresa tu nombre \n"))
Edad = int(input("Bien, ahora ingresa tu edad \n"))
NombreMascota = input(str("Ingresa el nombre de tu mascota \n"))
print ("Tu nombre es {0} y tienes {1} años. Tu mascota se llama {2}".format(Nombre,
Edad, NombreMascota))
Como puedes apreciar colocamos las llaves donde se mostrará el contenido de la
variable y dentro de ellas un número que corresponde con el orden de la variable
dentro de la función format.
Estos números de identificación nos permiten repetir el uso de la variable indicando cual de
ellas. También podemos colocar las llaves sin identificador, pero siempre se corresponderá
con el orden en el que presentemos las variables dentro de .format()
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# format.py
#
a = 'abra'
b = 'cad'
print('{0}{1}{0}'.format(a, b))
Resultado: ‘abracadabra’
No es magia, es format en python!!!!
‘a’ toma el valor de {0} y ‘b’ el valor de {1}, por lo que podemos repetirlos.
Los identificadores también nos van a permitir ordenar la salida en la función format en
python. Por ejemplo para alinear a la derecha, izquierda o centrado! en otras características.
Veamos cómo hacerlo:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# format.py
#
a = 'abra'
b = 'cad'
print('{0:<5}{1:^5}{0:>5}'.format(a, b))
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# format.py
#
for x in range(1,11):
print ('{3}{0:2d}{3} {3}{1:3d}{3} {3}{2:4d}{3}'.format(x, x * x, x * x * x, '|'))
Resultado:
Si te fijas el bucle for está creando un rango del 1 al 10 para ‘x’ y dentro de los paréntesis
de format hacemos el cálculo, primero presentamos la ‘x’ sola. Lo que nos genera la primer
columna con los números del 1 al 10.
Analizando el código de esta manera (por colores) se nos va a hacer más comprensible. El
indicador {3} en azul corresponde al carácter ‘|’ que forma las columnas.
Los numeros 0, 1, 2 en verde corresponden al orden de los elementos dentro de format (‘x’
para 0), (‘x*x’ para 1),(‘x*x*x’ para 3).
Y finalmente luego de los dos puntos encontramos el 2d, 3d, 4d que corresponden a la
cantidad de caracteres para indicar la alineación de los elementos según la cantidad de
cifras de los números. La letra ‘d’ se utiliza para indicar que son datos enteros, en el
caso de datos de texto (string) se utiliza ‘s’
Las listas son mutables, las cadenas no. Por lo que si convertimos una cadena en lista
podremos modificarla. Y luego volver a convertirla en cadena.
Pillate ahora este ejemplo, tenemos una lista con los alumnos y sus notas de todo el año.
Queremos imprimir estos datos en una tabla para que se nos vea mas presentable. Pues lo
hacemos así, checa:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# format.py
#
ListasAlumnos = [['Juan', 'Carmelo', 5, 7, 9, 7], ['Laura', 'Jazmine', 7, 8, 5, 6.66],
['Dario', 'Villalobos', 5, 6, 3, 4.66], ['Marito', 'Tasolo', 4, 7, 9, 6.666],
['Esteban', 'Quito', 9, 9, 8, 8.66]]
Tabla = """\
+---------------------------------------------------------------------+
| Nombre Apellido Primero Segundo Tercero Promedio anual|
|---------------------------------------------------------------------|
{}
+---------------------------------------------------------------------+\
"""
Tabla = (Tabla.format('\n'.join("| {:<8} {:<10} {:>8} {:>6} {:>7} {:>23} |".format(*fila)
for fila in ListasAlumnos)))
print (Tabla)
Resultado:
Ahora vamos a aclarar este código como siempre. Primeramente hacer hincapié en las listas
que tenemos con las notas de los alumnos, las mismas respetan el orden de los elementos,
como ves comienzan por el nombre y terminan con el promedio anual. Eso se debe respetar
porque no indicamos el orden dentro del format.
Como ves asignamos a la variable tabla el formato de la tabla, correspondiente a una fila.
Comienza con el salto de línea para que al repetir el bucle for imprima una línea por
iteración de lista. Luego le damos el formato a los 6 elementos de cada listas ordenándolos
en la tabla para finalmente crear un bucle for que va iterando la Lista e imprimiendo fila
por fila dentro de la tabla que joineamos.
Esto es la tabla:
Tabla.format(formatodelafila(incluidoJOIN) .format(*fila) for fila in listaAlumnos))
Analiza el código por parte, y lo veras tu mismo. Porque aquí join está convirtiendo la lista
en una cadena y uniendola al resto de la tabla imprimiendo la fila dentro de ella, más
precisamente donde se encuentran las llaves.
A partir de aquí puedes darle una salida más “sublime” a tus programas con format en
python! y que así sea!
Por supuesto puedes jugar con este código y agregarle al usuario una opción de editar la
tabla o agregar un nuevo alumno simplemente a través de un input respetando el orden de
los datos. Luego solo vuelves a imprimir la tabla. No lo hago aquí para no desviarme
demasiado
Manual de Python
La librería Pandas
• Tipos de datos de Pandas
• Atributos de un DataFrame
• Reindexar un DataFrame
• Ordenar un DataFrame
• Agrupación de un DataFrame
• Reestructurar un DataFrame
• Convertir un DataFrame a formato largo
• Define nuevas estructuras de datos basadas en los arrays de la librería NumPy pero
con nuevas funcionalidades.
• Permite leer y escribir fácilmente ficheros en formato CSV, Excel y bases de datos
SQL.
• Permite acceder a los datos mediante índices o nombres para filas y columnas.
• Ofrece métodos para reordenar, dividir y combinar conjuntos de datos.
• Permite trabajar con series temporales.
• Realiza todas estas operaciones de manera muy eficiente.
Dispone de un índice que asocia un nombre a cada elemento del la serie, a través de la cuál
se accede al elemento.
Ejemplo. La siguiente serie contiene las asignaturas de un curso.
, done 𝑛
>>> s[1:3]
Economía 4.5
Programación 8.5
dtype: float64
>>> s['Economía']
4.5
>>> s[['Programación', 'Matemáticas']]
Programación 8.5
Matemáticas 6.0
dtype: float64
• s.apply(f) : Devuelve una serie con el resultado de aplicar la función f a cada uno
de los elementos de la serie s.
Un DataFrame contiene dos índices, uno para las filas y otro para las columnas, y se puede
acceder a sus elementos mediante los nombres de las filas y las columnas.
Los valores asociados a las claves del diccionario deben ser listas del mismo tamaño.
Si las listas anidadas en listas no tienen el mismo tamaño, las listas menores se rellenan
con valores NaN.
Si los diccionarios no tienen las mismas claves, las claves que no aparecen en el diccionario
se rellenan con valores NaN.
Exportación de ficheros
También existen funciones para exportar un DataFrame a un fichero con diferentes
formatos.
Atributos de un DataFrame
Existen varias propiedades o métodos para ver las características de un DataFrame.
Reindexar un DataFrame
Para reordenar los índices de las filas y las columnas de un DataFrame, así como añadir o
eliminar índices, se utiliza el siguiente método:
>>> print(df['sexo']=='M')
0 False
1 True
2 False
...
• df[columna].apply(f) : Devuelve una serie con los valores que resulta de aplicar
la función f a los elementos de la columna con nombre columna del DataFrame df.
• df.count() : Devuelve una serie número de elementos que no son nulos ni NaN en
cada columna del DataFrame df.
• df.sum() : Devuelve una serie con la suma de los datos de las columnas del
DataFrame df cuando los datos son de un tipo numérico, o la concatenación de ellos
cuando son del tipo cadena str.
• df.cumsum() : Devuelve un DataFrame con la suma acumulada de los datos de las
columnas del DataFrame df cuando los datos son de un tipo numérico.
• df.min() : Devuelve una serie con los menores de los datos de las columnas del
DataFrame df.
• df.max() : Devuelve una serie con los mayores de los datos de las columnas del
DataFrame df.
• df.mean() : Devuelve una serie con las media de los datos de las columnas del
DataFrame df cuando los datos son de un tipo numérico.
• df.std() : Devuelve una serie con las desviaciones típicas de los datos de las
columnas del DataFrame df cuando los datos son de un tipo numérico.
• df.describe(include = tipo) : Devuelve un DataFrame con un resumen
estadístico de las columnas del DataFrame df del tipo tipo. Para los datos
numéricos (number) se calcula la media, la desviación típica, el mínimo, el máximo
y los cuartiles de las columnas numéricas. Para los datos no numéricos (object) se
calcula el número de valores, el número de valores distintos, la moda y su
frecuencia. Si no se indica el tipo solo se consideran las columnas numéricas.
• del d[nombre] : Elimina la columna con nombre nombre del DataFrame df.
• df.pop(nombre) : Elimina la columna con nombre nombre del DataFrame df y la
devuelve como una serie.
• df.drop(filas) : Devuelve el DataFrame que resulta de eliminar las filas con los
nombres indicados en la lista filas del DataFrame df.
Ordenar un DataFrame
Para ordenar un DataFrame de acuerdo a los valores de una determinada columna se
utilizan los siguientes métodos:
Agrupación de un DataFrame
En muchas aplicaciones es útil agrupar los datos de un DataFrame de acuerdo a los valores
de una o varias columnas (categorías), como por ejemplo el sexo o el país.
Dividir un DataFrame en grupos
Para dividir un DataFrame en grupos se utiliza el siguiente método:
Una función de agregación toma como argumento una lista y devuelve una único valor.
Algunas de las funciones de agregación más comunes son: