Obtención de resultados notables sobre los pedidos de libros en la biblioteca de Seattle para mejorar la calidad de este proceso en base a datos estadísticos
Analizar datos de arriendos de libros de la biblioteca de Seattle, a partir de los datos provistos por esta ciudad de Seattle, Estados Unidos, que buscar, en base a estadísticas obtenibles a partir de esta información, mejorar la calidad de vida de sus ciudadanos.
Utilizar una herramienta de procesamiento masivo de datos para obtener resultados notables sobre un conjunto de datos que tenga una gran cantidad de datos.
Dentro de las preguntas que se quieren responder se encuentran las siguientes:
-
Que se lee en Seattle
-
¿Cuáles son los libros más pedidos mensualmente desde el inicio de los registros de los datos hasta el final de estos?
-
¿Cuáles son los géneros de los libros más solicitados, los autores más leídos y las editoriales más populares?
Como se mencionó anteriormente se trabaja con datos de la iniciativa de datos abiertos de la ciudad de Seattle ( https://data.seattle.gov/ ), en este caso se trabajo con 3 dataset de la biblioteca pública de Seattle:
Este conjunto de datos contiene la información del catálogo que posee la Biblioteca de Seattle, este fue inventariado entre los años 2017 y 2019.
Extraído de Kaggle: https://www.kaggle.com/city-of-seattle/seattle-library-collection-inventory
Contiene
Columna | Tipo |
---|---|
Bibnum | numeric |
Title | String |
Author | String |
ISBN | String |
PublicationYear | String |
Publisher | String |
Subjects | String |
ItemType | String |
ItemCollection | String |
FloatingItem | String |
ItemLocation | String |
ReportDate | Date |
ItemCount | numeric |
Este conjunto contiene la información de la nomenclatura utilizada en el inventario provisto por la biblioteca de Seattle. Extraído de : https://www.kaggle.com/city-of-seattle/seattle-integrated-library-system-ils-dictionary
Columna | Tipo |
---|---|
Code | String |
Description | String |
Code Type | String |
Format Group | String |
Format Subgroup | String |
Category Group | String |
Category Subgroup | String |
Este dataset contiene la información de los checkouts (solicitudes de préstamo) de los items de la biblioteca entre abril del 2005 y octubre 2017.
https://www.kaggle.com/seattle-public-library/seattle-library-checkout-records
Columna | Tipo |
---|---|
UsageClass | String |
CheckoutType | String |
MaterialType | String |
CheckoutYear | numeric |
CheckoutMonth | numeric |
Checkouts | numeric |
Title | String |
Creator | String |
Subjects | String |
Publisher | String |
PublicationYear | String |
Primero se concibieron las consultas a realizar al conjunto de datos, de acuerdo a la complejidad de la consulta y al manejo de la herramienta se escogió dentro del equipo la herramienta de manejo masivo de datos Apache Pig.
Trabajando con el conjunto de datos, se tuvo que investigar sobre la lectura de csv en PIG, pues al abrirlos de la forma tradicional los datos no tenían la cantidad correcta de columnas.
Una de las complicaciones notables fue notar después de una larga espera de los resultados de una consulta, notar que muchos de las entradas de las base de datos estaban duplicadas o mal formateadas generando resultados extraños, por eso tuvimos que pasar por una etapa grande de filtrados de datos.
Nuestro trabajo consistió en realizar joins y agrupaciones entre las tablas de checkouts y el inventario, para poder obtener los elementos/libros más solicitados para préstamos, con esto realizamos diferentes filtros, y agrupaciones, a diferentes niveles para poder obtener estadísticas interesantes de los préstamos, como que es
En primer lugar, se trabajo agrupando los préstamos por mes y año, obteniendo cuantas veces fue pedido cierto libro en cierto mes y año, de esta manera se reduce la cantidad de datos sobre los que trabajar. Además de esto también se cálculo la cantidad de préstamos de cada libro para cada año, y para todo el período.
Luego con esto, se obtuvieron los Top 100 libros para cada mes y año respectivo. Con los cuales se realiza un Join con la tabla de inventario, de modo de conocer sus autores, géneros, colección y editorial. Para luego hacer agrupaciones por autores, y obtener un ranking de autores, al igual que contar los géneros y editorial.
- checkout_group.pig: Agrupa los checkouts por mes y año,
- checkout_top100.pig: Obtiene los 100 libros más pedidos de cada mes.
- checkout_stats.pig: Estadísticas como el número de movimiento de libros y no libros pedidos cada mes.
- join_top100_inventory.pig: Obtiene Ranking de Autores, Ranking mensual de Libros, Ranking de Publisher.
Los resultados de este proyecto corresponden a los chart top 100 de libros para cada mes, además de calcular las librerías con mayor cantidad de aparaciones en este top 100 y los autores más leídos. Sobre estos tops se pueden realizar otras operaciones como ver su género o descripción.
| Tabla Checkouts por libro, mes, año: | 297 MB | | Tabla de Checkout por libro en todo el período | 73 MB | | Top 100 Checkout por libro, mes, año + info del libro | 35 MB | | Tabla Ranking Autores | 20 KB | | Tabla Ranking Publisher | 15 KB |
De acuerdo al conjunto de datos a utilizar en un proyecto de Big Data, es necesario tener un conocimiento previo del área a tratar o bien requerir de los servicios de un experto, pues de esta forma es posible obtener la mejor información posible para mejorar algún sistema o satisfacer las necesidades de un cliente.
El trabajo con gran cantidad de datos utilizando sistemas distribuidos en un clúster pequeño requiere optimizar lo mejor posible las consultas debido al tiempo de espera, que en general es grande, además de examinar los datos con anterioridad para saber a priori que datos están repetidos o tienen campos nulos.