Crear tablas dinámicas (pivot tables) en la hoja de cálculo de Google Drive

Las tablas dinámicas en un software de hojas de cálculo nos permiten ver relaciones entre datos o delimitar grandes conjuntos de datos. Vamos a ver un ejemplo: yo en mi Google Drive tengo una tabla donde guardo los datos de la lista de discos del artículo de Mis 1001 discos indispensables, donde añado algunos datos extra que son los que utilizo para elaborar las gráficas. Voy a generar una tabla dinámica muy simple, que me va a sacar cuántos discos de cada década hay por cada país.

Veamos los pasos a seguir:

Datos de origen
  • Primero seleccionamos las celdas con los datos de origen. Lo recomendable es poner un encabezado a las columnas para trabajar de forma más clara.
  • En el menú superior hacemos click en Datos -> Tabla dinámica.
  • En el panel derecho (el de la imagen) hacemos click en Añadir junto a Filas seleccionamos el valor que queramos tener, repetimos la opreación con Columnas.
  • En el panel lateral hacemos click en Añadir junto a Valores y escogemos el valor que queremos ver en las columnas, junto a las opciones sobre como queremos que se traten dichos datos.
Resultado final

En cualquier momento puedes desplegar el menú de la derecha para agregar o quitar campos y valores. Para ver los detalles de una celda basta también con hacer doble click sobre ella, esto abrirá una visualización detalla de los valores que contiene.

Guías y documentación de LibreOffice

En este blog hemos hablado de LibreOffice más de una vez en la sección de ofimática. Esta vez no vamos a hablar de nada en concreto, simplemente dejo por aquí este enlace. Se trata de un acceso directo a la documentación de LibreOffice en castellano.

Por desgracia de momento no está todo traducido y apenas está disponible al momento de escribir esto la guía de introducción. En caso de necesitar una guía más avanzada puedes recurrir a la documentación en inglés:

Escribir un fichero Excel desde Python

Hace ya unos años, cuando hablábamos mucho de PHP por aquí (mi vida laboral me llevó a tener que centrarme en el SQL y el javascript principalmente) vimos cómo importar y exportar ficheros de Excel con PHP. Pero ¿cómo podemos escribir un fichero de Excel usando Python?

Hay muchas librerías para realizar esta tarea, yo en mi caso he elegido XslxWriter, que podéis descargar desde este enlace. También es muy popular xlrd/xlwt, aunque creo que solo permite exportar en formato xls, pero tiene la parte positiva de permitir importar datos.

Veamos entonces paso a paso, con ejemplos de código, cómo escribir un fichero simple xlsx con Python. Los primeros pasos en nuestro código serán importar la librería, crear un nuevo libro de trabajo y crear una nueva hoja. Lo haríamos así:

import xlsxwriter

libro = xlsxwriter.Workbook('Presupuesto1.xlsx')
hoja = libro.add_worksheet()

El constructor Workbook() nos permite crear un nuevo objeto que representaría un libro de Excel. Es importante destacar que XlsxWriter no nos permite modificar ni leer ficheros de Excel, solo podemos crearlos.

La función add_worksheet() del objeto Workbook nos permite crear nuevas hojas en nuestro libro. Si invocamos esta función sin parámetros creará las hojas con un nombre numerado de forma consecutiva (Sheet1, Sheet2, Sheet3…) pero si le pasamos una cadena esta será el nombre de la hoja.

Ahora, para continuar con el ejemplo, vamos a escribir los datos que queremos mostrar en nuestra hoja de cálculo.

# El presupuesto que pintaremos en la hoja de cálculo
presupuesto = (
    ['Equipos',     4000],
    ['Cable',        100],
    ['Armario',      200],
    ['Switch',        99],
    ['AP',            50],
    ['Router',       150],
    ['Mano de Obra', 350],
)

Ok, tenemos los datos a pintar. Tenemos la librería importada y los objetos creados. ¿Qué nos queda? Unos simples pasos: primero nos posicionamos al inicio del documento, después iteramos sobre la colección de datos pintando cada columna con el método write(), que recibirá la fila, la columna y el valor. Finalmente añadiremos una fila con los totales, calculados ya con una fórmula de sumatorio, y cerraremos el objeto Workbook().

# Nos posicionamos en la primera columna de la primera fila
row = 0
col = 0

# Iteramos los datos para ir pintando fila a fila
for concepto, precio in (presupuesto):
    hoja.write(row, col,     concepto)
    hoja.write(row, col + 1, precio)
    row += 1

#Pintamos la fila de totales
hoja.write(row, 0, 'Total:')
hoja.write(row, 1, '=SUM(B1:B7)')

#Cerramos el libro
libro.close()


Numerar de forma automática los títulos en Libre Office Writer

Seguimos con las entradas sobre ofimática, que es uno de los temas que van a tener una ampliación en el blog en los próximos meses. ¿Cómo podemos numerar de forma automática los títulos en Libre Office Writer?

Vamos a empezar creando un documento sin trastear en los estilos, poniendo la lista de títulos como simples líneas. Después aplicaremos estilos para tener tres niveles:

Texto ejemplo

Si seleccionamos el título y pulsamos F11 abriremos el menú de Estilos y Formato.

Menú estilos

Tras eso seleccionamos el texto que queremos formatear para el primer nivel y le damos estilos.

Configurando estilos

El el botón de la derecha desplegamos el menú y elegimos Nuevo Estilo a Partir de Selección. Ahí crearemos el estilo para el Título A (le he puesto A ya que Título 1 es uno de los predeterminados por el sistema).

Nuevo eStilo
Pulsamos este botón situado a la derecha y elegimos Nuevo Estilo desde Selección

Repetimos esa operación para definir un estilo para los tres niveles de título que queremos (en tu caso tantos como quieras anidar, claro).

Títulos

Y finalmente aplicamos esos estilos al resto de líneas. Nos quedará en principio algo así.

Títulos formateados

El siguiente punto es crear un esquema de numeración. Nos vamos a Herramientas->Numeración de Capítulos y desde ahí vamos a la pestaña Numeración. Configuraremos así el primer nivel: En Estilo de párrafo seleccionamos el estilo de párrafo Título A, en Número ponemos el formato de numeración que queremos usar, en Estilo de Carácter lo he dejado en ninguno. Los campos Antes y Después nos permiten elegir un carácter que poner precediendo o antecediendo al número y finalmente tenemos Empezar En donde decidimos desde qué numero se empieza a contar.

Esquema Numeración

Aplicamos estilos a los tres niveles de título y, si queremos definir una sangría podemos hacerlo desde la pestaña Posición.

Una vez acabado y aceptado la numeración se aplicará directamente a los títulos que hemos configurado en el documento. El resultado final sería algo así:

Resultado final

Calcular media, mediana y moda con Libre Office Calc

Bueno, ayer veíamos cuales eran las definiciones y diferencias entre media, mediana y moda y hoy vamos a ver cómo aplicarlas en Libre Office Calc. Para ello he puesto 15 valores numéricos distintos en una hoja:

Ejemplo con varios valores

Para calcular la mediana tenemos la función MEDIANA(),que recibe como parámetros un conjunto de valores. En el ejemplo de la imagen habríamos hecho =MEDIANA(A1:A15) para que la calcule entre los valores de esas celdas.

Para la media tenemos dos funciones PROMEDIO() y PROMEDIOA(). ¿Qué las diferencia? Que PROMEDIO() ignorará lo valores que no sean numéricos mientras que PROMEDIOA() los tomará como un 0.

Finalmente para la moda también tenemos dos funciones: MODA.UNO() y MODA.VARIOS(). Como ya sabéis puede haber varias modas en un conjunto de valores. La función MODA.UNO() nos devuelve un valor, el inferior, y si no hay repeticiones envía un erorr. La función MODA.VARIOS() devuelve una matriz con todas las modas si la usamos en una fórmula matricial, en caso contrario se comporta como MODA.UNO().

Aquí os dejo una captura con los resultados. Podéis ver que PROMEDIO() y PROMEDIOA() dan resultado distintos porque la celda A10 tiene un valor textual en lugar de uno numérico:

Resultados

 

Diferencia entre media, mediana y moda

La media, la mediana y la moda son términos estadísticos que se usan para la comprensión de tendencias centrales cuando analizamos un conjunto de valores.

La media aritmética o promedio es especialmente útil cuando tratamos con distribuciones regulares. Se calcula mediante la suma de todos los valores observados dividida entre el número de observaciones. Pierde utilidad cuando se trata de distribuciones muy irregulares, con mucha diferencia. El ejemplo clásico de esto: si yo me como un pollo y tú no comes nada la media es que nos hemos comido medio pollo por cabeza.

La mediana es el valor numérico central de un conjunto de números, y es más útil cuando tratamos con distribuciones irregulares. Para su cálculo necesitamos ordenar toda la serie de valores de menor a mayor. Tras esto, en caso de que el número total de valores sea par, la mediana se calcula sacando el promedio de los dos valores centrales. En el caso de que sea una cantidad impar de valores la mediana será directamente el valor central.

Finalmente la moda es la incidencia más repetida en un conjunto de valores. Esto implica que puede haber más de una moda. Es útil cuando lo relevante es conocer el valor más común.

Veamos un ejemplo: imaginemos que tenemos un grupo de cinco amigas y vamos a calcular la media, mediana y moda de sus salarios anuales. Una cobra 12.000 euros, otra 15.000, otra 300.000 y hay dos que cobran 18.000.

La media sería el resultado de (12.000+15.000+300.000+18.000+18.000)/5, que es 72.600 euros. Como ves, al haber un valor tan alejado del resto dispara la media muchísimo.

Para la mediana vamos a ordenar los valores: 12.000|15.000|18.000|18.000|300.000. Al ser impar ya nos quedamos con el valor central, que sería 18.000 euros.

Finalmente para la moda miramos cual es el valor más repetido, que son también 18.000 euros ya que está dos veces en la lista.

Si crees que esto no es útil para el día a día piénsalo mejor, comprender bien estos conceptos nos permite abordar de forma más crítica muchas informaciones económicas que nos dan desde la prensa o desde los gobiernos.

Cómo combinar correspondencia en Libre Office Writer

Libre Office Writer, al igual que otros procesadores de texto, nos da la opción de “Combinar Correspondencia“, esto es redactar un modelo de carta y rellenar parte del texto con información extraída desde una base de datos. Cierto es que hoy por hoy ya no es una opción tan popular pues cada vez se usa menos el correo postal, pero todavía hay muchas comunicaciones que se hacen por carta.

He creado un modelo de carta genérico donde he dejado espacio para insertar los campos de la base de datos, poniendo el nombre que tendrá ese campo en mi fuente para no liarme:

Ejemplo carta

Y también he creado una hora con Calc que me servirá como fuente de datos:

Ejemplo calc

Ahora nos vamos a Insertar->Campos->Otros y en la ventana que se nos abre vamos a la pestaña Base de Datos. Buscamos nuestro documento en Añadir Archivo de Base de datos y lo vinculamos. En este caso estamos usando un fichero .ods de Calc, pero podríamos usar un CSV o una base de datos de Base:

Cargando datos

Tras esto vamos a ir cambiando los espacios que dejamos antes por los campos de la base de datos. Lo que hacemos es seleccionar la palabra que dejamos como espacio, volvemos a Insertar->Campos->Otros y seleccionamos el campo con el que queremos sustituir esa palabra, dándole finalmente a Insertar (por ejemplo, cambiamos la palabra Nombre en el texto por el campo Nombre de la base de datos)

Cambiando campos

El resultado final será algo así:

Resultado final

Ahora ya solo nos queda imprimir. Ojo, la función de exportar a PDF directamente no funciona bien, tenéis que darle a Imprimir. Allí podréis confirmar el origen de los datos y seleccionar la salida entre Impresora o a Archivo, por lo que podéis elegir lo que prefiráis según el uso que le queráis dar.

Imprimiendo