En esta página:
Demo
Continuando con el Capitulo Anterior llamado Como hacer Análisis a los productos de una Tienda de Postres mediante Data Science – Parte 6, en este nuevo Capitulo Nro 7 empezaré filtrando los primeros Datos que deseo consultar de mi archivo ventas.json, así inicio con la parte importante de este Tutorial, el juego de la Ciencia de Datos, vamos con este Capitulo.
Partes
Haciendo Data Science (Ciencia de Datos)
Con la librería Pandas puedo llevar acabo el análisis de mis Datos dentro de Jupyter Notebook con el Lenguaje de Programación Python
En Jupyter Notebook importo la librería Pandas de 2 maneras, uno como librería principal y en la otra la convierto a la variable pd para poder usarla más adelante.
Dentro de cada caja de texto de Jupyter Notebook puedo escribir código Python y para que se ejecute el código que he escrito debo presionar el botón Run que se encuentra en la parte de arriba
Por ejemplo escribo e importo la librería Pandas de la siguiente manera y presiono el botón Run para que se ejecute las 2 líneas y cuando termine de ejecutarse el código, el cursor salta a la siguiente caja de Texto en donde puedo continuar escribiendo código Python
En el código seria así:
1 2 3 4 |
import pandas import pandas as pd |
Carga de Datos
Lo siguiente que haré es leer el archivo ventas.json que contiene los datos que quiero analizar, creo la variable ventas en donde mediante el método pandas.read_json hago una lectura del archivo ventas.json, luego le agrego el parámetro orient=”split” formateo los datos del archivo JSON y por ultimo le agrego la codificación con el parámetro encoding=”utf-8″ (Si no le agregamos el parámetro encoding=”utf-8″) nuestros datos no se visualizarán correctamente
1 2 3 |
ventas = pandas.read_json("ventas.json", orient="split", encoding="utf-8") |
Paso seguido crea una nueva variable llamada datos, dentro de esta variable usaré el método DataFrame de Pandas para crear la estructura de Datos con las Ventas almacenadas en el archivo ventas.json, dentro del método DataFrame paso la variable ventas y añado el parámetro columns en donde especifico las columnas que tiene mi archivo ventas.json
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
/* Contenido del archivo ventas.json */ {"data": [ {"id":"1","producto":"Torta de Chocolate","categoria":"postre","cliente":"Julieta Verónica Vergara Aquino","dni":"42514784","fnacimientocliente":"19-02-1984","precio":"5.50","img":"af_Nnz0Jyn_4QhIPnb.jpeg","created_at":"2019-09-16 09:22:12.314973","updated_at":"2019-09-16 22:22:12.314973"}, {"id":"2","producto":"Limonada","categoria":"bebida","cliente":"Julieta Verónica Vergara Aquino","dni":"42514784","fnacimientocliente":"19-02-1984","precio":"4.50","img":"af_Nnz0Jyn_4QhIPnb_SsbsVPi.jpeg","created_at":"2019-09-16 09:35:35.676923","updated_at":"2019-09-16 22:35:35.676923"}, {"id":"3","producto":"Gelatina de Fresa","categoria":"postre","cliente":"Luis Roberto Torres Gonzales","dni":"46238625","fnacimientocliente":"23-04-1985","precio":"4.50","img":"images_UgZuKKp.png","created_at":"2019-09-16 10:37:45.498348","updated_at":"2019-09-16 22:37:45.498348"}, {"id":"4","producto":"Limonada","categoria":"bebida","cliente":"Luis Roberto Torres Gonzales","dni":"46238625","fnacimientocliente":"23-04-1985","precio":"4.50","img":"images_hIkthkl.png","created_at":"2019-09-16 10:44:53.271815","updated_at":"2019-09-16 22:44:53.271815"}, {"id":"5","producto":"Arroz con Leche","categoria":"postre","cliente":"Maria Rafaela Torres Maldonado","dni":"72632605","fnacimientocliente":"02-03-1980","precio":"3.60","img":"af_0ZtBRQD.jpeg","created_at":"2019-09-16 11:47:48.986866","updated_at":"2019-09-16 22:47:48.986866"}, {"id":"6","producto":"Cafe Americano","categoria":"bebida","cliente":"Maria Rafaela Torres Maldonado","dni":"72632605","fnacimientocliente":"02-03-1980","precio":"2.80","img":"af_jwk4STE.jpeg","created_at":"2019-09-16 11:59:03.943153","updated_at":"2019-09-16 22:50:54.333467"}, {"id":"7","producto":"Pie de Manzana","categoria":"postre","cliente":"Luis Pedro Nuñez Balboa","dni":"76312605","fnacimientocliente":"15-05-2010","precio":"4.50","img":"ann_yuAEAeS.png","created_at":"2019-09-16 12:52:03.898446","updated_at":"2019-09-16 22:52:03.898446"}, {"id":"8","producto":"Jugo de Fresa","categoria":"bebida","cliente":"Luis Pedro Nuñez Balboa","dni":"76312605","fnacimientocliente":"15-05-2010","precio":"3.50","img":"ann_vR37j7W.png","created_at":"2019-09-16 13:52:47.198922","updated_at":"2019-09-16 22:52:47.198922"}, {"id":"9","producto":"Suspiro a la Limeña","categoria":"postre","cliente":"Karina Penélope Rojas Prado","dni":"76322423","fnacimientocliente":"12-08-2003","precio":"3.80","img":"amn_WlKjRre.png","created_at":"2019-09-16 13:54:36.598180","updated_at":"2019-09-16 22:54:36.598180"}, {"id":"10","producto":"Jugo de Papaya","categoria":"bebida","cliente":"Karina Penélope Rojas Prado","dni":"76322423","fnacimientocliente":"12-08-2003","precio":"3.00","img":"amn_Erebcoj.png","created_at":"2019-09-16 14:55:06.337881","updated_at":"2019-09-16 22:55:06.337881"}, {"id":"11","producto":"Gelatina de Fresa","categoria":"postre","cliente":"Marcos Jorge Quiñones Rosado","dni":"72612605","fnacimientocliente":"17-04-1950","precio":"4.50","img":"images_FGx00CU_DY03ZfZ.png","created_at":"2019-09-16 15:56:27.961549","updated_at":"2019-09-16 22:56:27.961549"}, {"id":"12","producto":"Té","categoria":"bebida","cliente":"Marcos Jorge Quiñones Rosado","dni":"72612605","fnacimientocliente":"17-04-1950","precio":"2.50","img":"images_FGx00CU_kFFrzoC.png","created_at":"2019-09-16 15:58:14.925667","updated_at":"2019-09-16 22:58:14.925667"}, {"id":"13","producto":"Arroz con Leche","categoria":"postre","cliente":"Carlos Daniel Posada Rojas","dni":"76814604","fnacimientocliente":"16-03-2009","precio":"3.60","img":"ann_rSaVhUX_udfQ2mw.png","created_at":"2019-09-16 16:59:17.676256","updated_at":"2019-09-16 22:59:17.676256"}, {"id":"14","producto":"Limonada","categoria":"bebida","cliente":"Carlos Daniel Posada Rojas","dni":"76814604","fnacimientocliente":"16-03-2009","precio":"4.50","img":"ann_rSaVhUX_iB76xzg.png","created_at":"2019-09-16 17:59:41.447616","updated_at":"2019-09-16 22:59:41.448616"}, {"id":"15","producto":"Torta de Chocolate","categoria":"postre","cliente":"Daniela Rosa Benavides Arbulú","dni":"76589475","fnacimientocliente":"25-10-1965","precio":"5.50","img":"af_azwua5h_uircadO.jpeg","created_at":"2019-09-16 18:00:27.046224","updated_at":"2019-09-16 23:00:27.046224"}, {"id":"16","producto":"Cafe Americano","categoria":"bebida","cliente":"Daniela Rosa Benavides Arbulú","dni":"76589475","fnacimientocliente":"25-10-1965","precio":"2.80","img":"af_azwua5h_EbYp4dD.jpeg","created_at":"2019-09-16 19:00:49.938533","updated_at":"2019-09-16 23:00:49.938533"}, {"id":"17","producto":"Arroz con Leche","categoria":"postre","cliente":"Juan Carlos Ormeño Saenz","dni":"46528604","fnacimientocliente":"18-07-1985","precio":"3.60","img":"images_BuUI4k0_oUpcSen.png","created_at":"2019-09-16 20:05:45.279426","updated_at":"2019-09-16 23:05:45.279426"}, {"id":"18","producto":"Té","categoria":"bebida","cliente":"Juan Carlos Ormeño Saenz","dni":"46528604","fnacimientocliente":"18-07-1985","precio":"2.50","img":"images_BuUI4k0_55y16j5.png","created_at":"2019-09-16 21:06:06.479639","updated_at":"2019-09-16 23:06:06.479639"}, {"id":"19","producto":"Gelatina de Fresa","categoria":"postre","cliente":"Perina Janeth Dias Portales","dni":"76898659","fnacimientocliente":"25-11-2007","precio":"4.50","img":"amn_JXUIM0g_Zgip831.png","created_at":"2019-09-16 22:06:56.924524","updated_at":"2019-09-16 23:06:56.924524"}, {"id":"20","producto":"Jugo de Fresa","categoria":"bebida","cliente":"Perina Janeth Dias Portales","dni":"76898659","fnacimientocliente":"25-11-2007","precio":"3.50","img":"amn_JXUIM0g_zUDqcFw.png","created_at":"2019-09-16 22:07:24.298089","updated_at":"2019-09-16 23:07:24.298089"} ] } |
Estas columnas como puedes ver en la estructura del archivo JSON son id, producto, cliente, dni, fnacimientocliente, precio, img, created_at y updated_at
Al final escribo la variable datos para que se impriman los datos en una tabla
1 2 3 4 5 6 7 8 9 |
ventas = pandas.read_json("ventas.json", orient="split", encoding="utf-8") datos = pd.DataFrame( ventas, columns = ['id', 'producto', 'cliente', 'dni', 'fnacimientocliente', 'precio', 'img', 'created_at', 'updated_at']) datos |
Entonces debería de mostrarse los datos del archivos ventas.json en una tabla
Jugando con los Datos (Haciendo Ciencia de Datos)
En el capitulo 2 mencione los datos que iba analizar del sistema de ventas de la tienda de Postres, puedes revisarlo en la Parte 2
Datos Ventas Generales: Ventas Generales por la Mañana 9 AM – 12 PM
Para esto haré uso de la columna created_at que es la fecha de una determinada Venta registrada en el Sistema de Ventas de Postres, lo primero que haré es convertir con el método pandas.to_datetime a fechas los datos almacenados en la columna created_at
1 2 3 |
datos['created_at'] = pd.to_datetime(datos['created_at']) |
Luego crearé un Rango de tiempo, como quiero obtener los datos de Ventas Generales por la Mañana de 9 AM a 12 PM, pues creare 2 variables una llamada hi (Hora Inicial) y otra llamada hf (Hora Final) y en cada variable colocó el rango de fechas para los registros que quiero obtener
1 2 3 4 |
hi = '2019-09-16 09:00:00.000000' hf = '2019-09-16 12:00:00.000000' |
Ahora creo una variable llamada filtrar y dentro de ello hago uso de Operadores Lógicos de Python para filtrar las ventas realizadas entre las 9 AM y las 12 PM
1 2 3 |
filtrar = (datos['created_at'] >= hi) & (datos['created_at'] <= hf) |
Creo una variable llamada resultado y dentro de ella voy a obtener el filtrado de los datos usaré el método .loc y le paso el rango de fechas especificado en la variable filtrar
Por ultimo escribo la variable resultado para imprimir las ventas realizadas entre las 9 AM y las 12 PM
1 2 3 4 |
resultado = datos.loc[filtrar] resultado |
En Jupyter Notebook entonces debo de ver los datos filtrados en un tabla con las ventas realizadas entre las 9 AM y las 12 PM
Nota: No olvides presionar el botón Run después de escribir código en una caja de texto.
Ahora voy a imprimir un gráfico con los datos de las ventas realizadas por la mañana (9 AM a 12 PM), para esto importo la librería matplotlib.pyplot y la asigno a una variable a la cual le doy de nombre plot
Luego le configuro un ancho y alto a mi gráfico le daré un ancho de 20 y un alto de 11, estas medidas son en pulgadas
1 2 3 4 |
import matplotlib.pyplot as plot plot.rcParams["figure.figsize"] = 20,11 # ancho: 20 , alto: 11 |
Por ultimo paso la variable resultado a mi gráfico y que imprima las columnas producto y created_at
1 2 3 |
resultado.plot(x="producto", y="created_at") |
Presiono el botón Run y obtengo un gráfico con los datos de las ventas realizadas por la Tardes (9 AM – 12 PM)
A continuación el código completo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import pandas import pandas as pd # Lectura del archivo ventas.json ventas = pandas.read_json("ventas.json", orient="split", encoding="utf-8") datos = pd.DataFrame( ventas, columns = ['id', 'producto', 'cliente', 'dni', 'fnacimientocliente', 'precio', 'img', 'created_at', 'updated_at']) datos # Obtener Ventas realizas de 9AM a 12PM datos['created_at'] = pd.to_datetime(datos['created_at']) hi = '2019-09-16 09:00:00.000000' hf = '2019-09-16 12:00:00.000000' filtrar = (datos['created_at'] >= hi) & (datos['created_at'] <= hf) resultado = datos.loc[filtrar] resultado # Crear un Gráfico Básico (Plot) con los datos Filtrados import matplotlib.pyplot as plot plot.rcParams["figure.figsize"] = 20,11 # ancho: 20 , alto: 11 resultado.plot(x="producto", y="created_at") |
Bueno esto es solo el inicio, hasta aquí has visto que usamos el Lenguaje de Programación Python para hacer Análisis de Datos dentro de Jupyter Notebook, también he filtrado un rango de datos de Ventas de 9 AM a 12 PM y por ultimo he mostrado un Gráfico Básico para visualizar los datos obtenidos.
Ten Paciencia, lo que quiero es que entiendas todo el proceso de como funciona la Ciencia de Datos (Data Science) en una caso similar a la realidad.
Nota (s)
- En el siguiente capitulo terminare con el análisis de los Demás Datos pendientes.
- Más adelante usaré herramientas de Visualización de Datos más especializadas en el área.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.