1 Introducción

El presente trabajo se basa en la exploración y análisis de un conjunto de datos extraído de la aplicación Precios Claros [1]. Dichos datos fueron extraídos mediante un proceso de relevamiento automático utilizando la técnica de web crawling [2]. Este proceso consistió en la generación de consultas a la página web de Precios Claros mediante un script programado en lenguaje Python.

Se realizaron un total de 10 mediciones, cada una de las cuales tomó 3 semanas aproximadamente debido a la gran cantidad de datos disponibles y la cantidad máxima de consultas por día que se pueden hacer al sitio sin ser bloqueado. Estas mediciones corresponden un período de tiempo que abarca desde el 5 de Noviembre de 2018 hasta el 2 de Marzo de 2019.

Este conjunto de datos fue introducido en una base de datos MongoDB y consta de las siguientes colecciones:

Tabla Descripción Cantidad de datos
productos productos relevados por la aplicación 1.000
sucursales sucursales relevadas en los distintos barrios de CABA 837
precios precios por producto y sucursal para cada una de las mediciones + 1,5 millones

Este trabajo presenta un análisis exploratorio de dichos datos organizado de la siguiente manera: en la sección 2 se presentarán los objetivos del análisis; en la sección 3 se detallará el proceso de preparación de datos realizado a fin de poder llevar a cabo los análisis de la sección 4; finalmente, en la sección 5 se elaborarán las conclusiones finales del trabajo proponiendo algunas posibles líneas de trabajo futuro.

2 Objetivo

En presente trabajo se propone dar respuesta a una serie de preguntas organizadas en 3 categorías:

3 Preparación de datos

Se comenzó extrayendo los datos de las 3 colecciones originales y se efectuó una normalización de sus atributos a fin de trabajar con tablas que permitan fácilmente hacer operaciones de join entre ellas y agrupar eficientemente por ids. También se eliminaron los datos de provincia y localidad de la colección de sucursales dado que no era eficiente extraer el barrio por estar dicha información como texto libre.

Dado que contamos con los datos de latitud y longitud para cada sucursal, se descargaron los shapes de los barrios de la página del Gobierno de la Ciudad de Buenos Aires [3]. Estos shapes fueron integrados con los datos de sucursales, y mediante operaciones espaciales, se logró ubicar cada sucursal en un barrio de la ciudad. A su vez, se construyeron los polígonos correspondientes a las comunas uniendo los polígonos de los barrios que las componen.

Barrios y comunas de la Ciudad Autónoma de Buenos Aires

Barrios y comunas de la Ciudad Autónoma de Buenos Aires

Cabe destacar que se encontraron 3 sucursales fuera del polígono de la Ciudad de Buenos Aires, dado que sus domicilios forman parte de partidos aledaños de la Provicia de Buenos Aires. Con dichas sucursales se procedió a buscar el polígono del barrio más cercano para resolver este conflicto. También es importante resaltar que de las 837 sucursales listadas, solamente 175 de ellas presentan datos de precios relevados.

A continuación se crearon tablas para identificar los comercios (o empresas) y las banderas (o unidades de negocio) de dichos comercios. Esto nos permite analizar por separado cada unidad de negocios dado que, como se verá después, la evolución de los precios no es la misma para banderas de la misma empresa. Como resultado, se obtiene el siguiente esquema de tablas:

Tabla Descripción Tipo de objeto
comunas comunas de la Ciudad de Buenos Aires data frame geolocalizado
barrios barrios de la Ciudad de Buenos Aires data frame geolocalizado
productos productos relevados por la aplicación data frame
comercios empresas cuyas sucursales fueron relevadas data frame
banderas unidades de negocio correspondientes a cada empresa data frame
sucursales sucursales relevadas en los distintos barrios de CABA data frame
precios precios por producto y sucursal para cada una de las mediciones data frame

Luego se procedió a analizar la tabla de precios a fin de detectar si había datos atípicos que pudieran entorpecer en análisis. Dado que los precios varían con los productos y con las mediciones (y en menor medida por sucursal), lo que se hizo para evitar esta complicación fue estandarizar los precios mediante el uso de z-score. Se calculó un z-score por producto y otro por producto y medición.

Tomando como base el z-score de los precios por producto y medición, se buscaron aquellos valores que resultaran ser outliers extremos mediante el método univariado basado en cuartiles (Q1 y Q3) y rango intercuartil. Se consideraron datos atípicos aquellos que estuvieran a una distancia de más de 3 rangos intercuartiles de Q1 o Q3. Con este sencillo método se eliminaron datos muy distorsivos que representaban aproximadamente el 0,4% de la muestra. Debido a que la cantidad de datos restante resultó ser muy elevada, no se efectuó ningún proceso de imputación de datos faltantes por considerarse innecesario.

Boxplots de scores de precios por producto y medición

Boxplots de scores de precios por producto y medición

Finalmente, se procedió a dar inicio a los análisis propuestos en los objetivos a partir de este conjunto de datos normalizado, geolocalizado y con precios estandarizados sin valores ruidosos.

4 Análisis realizados

4.1 Análisis exploratorio inicial

En esta subsección se explora la distribución de los datos relevados, tanto a nivel espacial como a nivel temporal. El propósito es poder determinar si todos los barrios/comunas fueron relevados de forma homogénea y si dichos relevamientos también fueron homogéneos en el tiempo. Tal como se explicó previamente, sabemos a priori que solamente 175 de las 837 sucursales poseen datos relevados para estas 10 mediciones. Este dato nos hace inferir que pueden existir inhomogeneidades en cuanto a las sucursales y cantidad de precios relevados por barrio. Conocer esta información nos permitirá conocer mejor el conjunto de datos con el que estamos trabajando.

4.1.1 ¿Cómo es la distribución espacial de sucursales de acuerdo a la cantidad y tipo de sucursal?

En la figura siguiente se muestran coloreados los barrios y comunas de acuerdo a la cantidad de sucursales relevadas en cada una de las zonas. Es notable observar que hay barrios que no poseen sucursales relevadas. En líneas generales, son barrios del sur de la Ciudad de Buenos Aires. Los barrios que cuentan con mayor cantidad de sucursales relevadas son Palermo y Caballito. A su vez, si agrupamos las sucursales por comuna, se observa claramente que las comunas del norte tienen mayor cantidad de sucursales relevadas que las comunas del sur.

Cantidad de sucursales relevadas de la Ciudad Autónoma de Buenos Aires. Los barrios que aparecen en blanco son aquellos donde no hubo relevamiento de precios.

Cantidad de sucursales relevadas de la Ciudad Autónoma de Buenos Aires. Los barrios que aparecen en blanco son aquellos donde no hubo relevamiento de precios.

También podemos observar que para todas las comunas, la mayoría de las sucursales relevadas corresponden a supermercados. En general, hay un 74% de sucursales que son supermercados y 26% que son hipermercados. Es notable que ninguna de las sucursales relevadas es autoservicio (la tercer tipificación de sucursales según el conjunto de datos provisto). Esa proporción varía por comuna sin patrón aparente, aunque en general la mayoría de las comunas mantiene una relación aproximada de 3 a 1 en cuanto a la cantidad de supermercados por hipermercado relevado.

Proporción de sucursales por tipo para cada comuna de la Ciudad Autónoma de Buenos Aires.

Proporción de sucursales por tipo para cada comuna de la Ciudad Autónoma de Buenos Aires.

4.1.2 ¿Cuál es la cantidad de datos relevados por barrio/comuna? ¿Existe alguna relación con la cantidad de sucursales relevadas?

A continuación se analizó la cantidad de datos relevados por barrio y comuna con el objetivo de ver si se encontraba el mismo patrón que con la cantidad de sucursales o si se había intentado equiparar esta inhomogeneidad relevando más productos en barrios con menor cantidad de sucursales. En la figura siguiente se observa que el patrón de datos relevados es consistentente con el de sucursales relevadas.

Cantidad de datos relevados para la Ciudad Autónoma de Buenos Aires. Los barrios que aparecen en blanco son aquellos donde no hubo relevamiento de precios.

Cantidad de datos relevados para la Ciudad Autónoma de Buenos Aires. Los barrios que aparecen en blanco son aquellos donde no hubo relevamiento de precios.

Para reforzar este argumento, también se calculó la proporción de precios relevados sobre la cantidad de sucursales. Se observa que en general esa proporción es más o menos constante, excepto en dos comunas del sur de la Ciudad de Buenos Aires, donde es menor. De todos modos, este patrón es mucho más regular y no parece haber un gradiente notorio como en los casos anteriores (para sucursales y precios).

Proporción de datos sobre sucursales relevadas para la Ciudad Autónoma de Buenos Aires.

Proporción de datos sobre sucursales relevadas para la Ciudad Autónoma de Buenos Aires.

4.1.3 ¿Son uniformes en cuanto a duración los períodos de medición? ¿Y con respecto a la cantidad de datos?

Finalmente, para cerrar la etapa de análisis exploratorio, se analizó la distribución temporal de mediciones. El período de análisis abarca casi 4 meses completos, iniciándose el 5 de Noviembre de 2018 y finalizando el 2 de Marzo de 2019. Esto nos permite realizar una aproximación razonable y considerar los meses completos desde Noviembre de 2018 a Febrero de 2019 para realizar luego una comparación contra estadísticas oficiales.

Duración de períodos de medición y cantidad de datos relevados en cada uno de ellos.

Duración de períodos de medición y cantidad de datos relevados en cada uno de ellos.

En la figura anterior se presentan rectángulos correspondientes a cada medición. El ancho de cada barra es proporcional al tiempo de duración de la medición asociada. A su vez, el alto de las mismas denota la cantidad de precios relevados en cada medición. Se observa que en general cada medición tiene aproximadamente la misma cantidad de precios relevados, a excepción de la sexta. En relación a la duración de las mediciones, se observa que es bastante inhomogénea y que además los intervalos de tiempo entre ellas también es inhomogéneo. Por ejemplo, entre el inicio de la quinta y la séptima medición, hay casi un mes de diferencia, lo que representa el 25% del intervalo relevado. Esto puede deberse probablemente al período vacacional. Esta información será de considerada al momento de analizar variaciones de precios o comparaciones con estadísticas oficiales.

4.2 Ranking de precios

En esta subsección se exploran los precios a lo largo de todo el período de análisis. El objetivo es encontrar patrones que nos permitan detectar precios más altos o más bajos independientemente del porcentaje evolutivo de los mismos. Se explorarán las sucursales con precios más altos y bajos de la Ciudad de Buenos Aires y luego se realizará el mismo análisis a nivel de unidades de negocios. Finalmente, se explorará el nivel de precios a nivel de comunas para tratar de encontrar algún patrón emergente.

En el análisis de precios a nivel de sucursales, se utilizó el z-score de los precios por producto para todo el período. Esto nos permite comparar precios de productos diferentes en todo el intervalo de tiempo. Para los análisis de precios por comercio y por comuna, se utilizó el z-score de precios por producto y por medición. Esto nos permite comparar el precio de productos diferentes y su evolución a lo largo de cada medición.

4.2.1 ¿Cuáles son las sucursales con precios más altos y más bajos a lo largo de todo el período?

Las tablas que se muestran a continuación muestran las 5 sucursales con precios más altos y bajos, respectivamente, a lo largo de todo el período de análisis. Esta información podería resultar de interés para el consumidor, dado que permitiría modificar hábitos de compra. También motiva un posterior análisis por comercio. Como ya se observa en las siguientes tablas, las sucursales con precios más bajos son unidades de negocio de INC S.A., mientras que las que tienen precios más elevados son de Jumbo Retail Argentina S.A.

Sucursales con precios más bajos:

Razón social Bandera Domicilio Z-score (mediana)
INC S.A. Market Olazábal 4734 -0.651
INC S.A. Market Av. Rivadavia 999 -0.632
INC S.A. Hipermercado Carrefour Av. La Plata 1768 -0.619
INC S.A. Hipermercado Carrefour Av. Gral. Paz 12950 -0.592
INC S.A. Market Av. Raúl Scalabrini Ortíz 1840 -0.592

Sucursales con precios más elevados:

Razón social Bandera Domicilio Z-score (mediana)
Jumbo Retail Argentina S.A. Disco Uriburu P. Jose Evaristo 1230 0.750
Jumbo Retail Argentina S.A. Jumbo E.R. Dellpiane E/ Lanteri Y Peñaloz 0 0.746
Jumbo Retail Argentina S.A. Disco Arcos Ing Antonio 1914 0.743
Jumbo Retail Argentina S.A. Disco Cuba 1714 0.742
Jumbo Retail Argentina S.A. Disco Esmeralda 1365 0.742

4.2.2 ¿Cuáles son las empresas con precios más altos y más bajos?

La información anterior sirve como disparador para preguntarnos cuáles son los comercios con precios más altos y bajos. A fin de responder esta pregunta, se elabora un mapa de calor. En el eje de las abcisas se muestran las 10 mediciones realizadas y en el de las ordenadas, las 11 unidades de negocios cuyas sucursales fueron relevadas (existen en realidad 15 unidades de negocio, pero tal como se explicó previamente, la mayoría de las sucursales listadas no poseen datos de precios para el período de análisis).

Luego se elaboró un ranking del 1 (precios más bajos) al 11 (precios más elevados) utilizando la mediana de los z-score de los precios de los productos para cada sucursal en cada medición. Como se observa, Supermercados DIA es el comercio que más veces aparece liderando el ranking de los precios más bajos. Sin embargo, lo siguen de cerca (e incluso lo superan en algunas mediciones) Hipermercados Carrefour y Carrefour Market. Por el contrario, los comercios con precios más elevados son las 3 unidades de negocios de Jumbo Retail Argentina (Jumbo, Disco y Vea).

Ranking de precios por comercios a lo largo del período de relevamiento (valores más bajos de ranking indican comercios con precios más baratos)

Ranking de precios por comercios a lo largo del período de relevamiento (valores más bajos de ranking indican comercios con precios más baratos)

4.2.3 ¿Cuáles son las comunas con precios más altos y más bajos?

Por último, para finalizar esta subsección, se elabora un ranking de precios por comuna y medición. El análisis es análogo al de precios por comercio y medición. En vez de agrupar las sucursales por unidad de negocio, en este caso se agrupan por la comuna a la que pertenencen. En líneas generales se observa que las comunas del norte de la Ciudad de Buenos Aires tienen precios más elevados que aquellas ubicadas en la zona sur, aunque con excepciones. Es notable observar que la Comuna 6, correspondiente al barrio de Caballito resulta ser aquella que tiene las sucursales con precios más elevados de acuerdo a los datos relevados.

Scores de precios por comuna a lo largo del período de relevamiento

Scores de precios por comuna a lo largo del período de relevamiento

4.3 Evolución temporal de precios

Para realizar los siguientes análisis se consideró la variación de precios de cada producto en cada sucursal. Esto se debe a que el mismo producto puede tener distintos precios en distintas sucursales. De acuerdo a exploraciones iniciales, esta evolución es nula de una medición a otra en la gran mayoría de los casos, lo cual no aporta mucha información. Tampoco es posible realizar un análisis utilizando los z-score calculados, dado que el porcentaje de variación de dichos scores no guarda relación con la variación porcentual de los precios.

Por tal motivo, se decidió evaluar la evolucón de precios de punta a punta. Es decir, se compara el precio de un producto en una sucursal en la primera medición contra el precio del mismo producto en la misma sucursal para la última medición. Por supuesto, existen casos de sucursales y productos que no cuentan con datos en algunas de las dos mediciones (la primera o la última). Pero la cantidad de casos es lo suficientemente baja (7,7% de los casos) como para que eso impida realizar un análisis como el propuesto.

4.3.1 ¿Es consistente la evolución de precios con los datos del IPC informado por el Gobierno de la Ciudad de Buenos Aires? ¿Hay alguna diferencia según el tipo de sucursal?

Para el siguiente análisis se obtuvieron los datos del Indice de Precios al Consumidor del Gobierno de la Ciudad de Buenos Aires (IPC GCBA). El IPC GBCA calcula evoluciones de precios para distintas categorías. En este análisis se compararon los valores de los precios relevados contra los valores del IPC GCBA Nivel General [4] e IPC GCBA Alimentos [5].

En el primer boxplot se observa que tanto la media como la mediana de las evoluciones de precios calculadas en base a los relevamientos son levemente inferiores a los valores reportados por el IPC. Esto puede deberse a que tanto en el caso de IPC Nivel General como IPC Alimentos, los productos considerados son distintos a los relevados en este conjunto de datos. Aún así, la evolución de precios para el período analizado parece guardar relación con la información publicada por el Gobierno de la Ciudad de Buenos Aires.

Comparación de incrementos porcentuales registrados en los productos relevados contra valores de IPC (GCBA) publicados para el período Noviembre-2018 a Febrero de 2019. Se ha comparado la variación de precio de cada producto en cada sucursal entre la primera y la última medición.

Comparación de incrementos porcentuales registrados en los productos relevados contra valores de IPC (GCBA) publicados para el período Noviembre-2018 a Febrero de 2019. Se ha comparado la variación de precio de cada producto en cada sucursal entre la primera y la última medición.

Incrementos porcentuales registrados en los productos relevados agrupados por tipo de sucursal. Se ha comparado la variación de precio de cada producto en cada sucursal entre la primera y la última medición.

Incrementos porcentuales registrados en los productos relevados agrupados por tipo de sucursal. Se ha comparado la variación de precio de cada producto en cada sucursal entre la primera y la última medición.

Además, se desagregó el cálculo de evolución de precios para analizar si existen diferencias de acuerdo al tipo de sucursal (supermercados e hipermercados). Tal como se observa en la figura anterior, no existen diferencias notables que muestren una variación diferente de precios entre supermercados e hipermercados.

4.3.2 ¿Cuál fue la evolución porcentual de precios por comuna?

Luego se procedió a analizar la evolución de precios por comuna. En este caso no se observa un boxplot por comuna sino los valores de la media y la mediana escalados en un mapa (que resulta más fácil de asimilar para el ojo humano). El aumento de precios por comuna es aparentemente homogéneo, registrándose leves incremento superiores en las comunas del sur de la Ciudad de Buenos Aires y en el barrio de Caballito (si consideramos la media en vez de la mediana).

Incrementos porcentuales registrados en los productos relevados agrupados por comuna. Se ha comparado la variación de precio de cada producto en cada sucursal entre la primera y la última medición. Se presentan los valores de media y mediana para cada comuna.

Incrementos porcentuales registrados en los productos relevados agrupados por comuna. Se ha comparado la variación de precio de cada producto en cada sucursal entre la primera y la última medición. Se presentan los valores de media y mediana para cada comuna.

4.3.3 ¿Cuál fue la evolución de precios según la empresa?

A continuación se realizó el mismo tipo de análisis que con las comunas pero a nivel de empresas y sus unidades de negocios (banderas). En el siguiente gráfico se indican las medias y medianas del porcentaje de incremento que se observaron en los precios para cada una de las unidades de negocio.

Se observa, por ejemplo, que Supermercados DIA (que es la unidad de negocios que más veces consiguió el primer puesto en el ranking de comercios más baratos) fue la empresas que más aumentó los precios, mientras que Hipermercados Carrefour fue la que menos los aumentó. Esta información es consistente con el gráfico de ranking de precios, ya que Supermercados DIA pasa del puesto número 1 al número 3 en dicho ranking y lo inverso le sucede a Hipermercados Carrefour.

Incrementos porcentuales registrados en los productos relevados agrupados por comercio. Se ha comparado la variación de precio de cada producto en cada sucursal entre la primera y la última medición. Se presentan los valores de media y mediana para cada unidad de negocios.

Incrementos porcentuales registrados en los productos relevados agrupados por comercio. Se ha comparado la variación de precio de cada producto en cada sucursal entre la primera y la última medición. Se presentan los valores de media y mediana para cada unidad de negocios.

4.3.4 ¿Cuáles fueron los productos cuya evolución fue máxima, mínima y más estable?

Para dar fin a esta serie de análisis, se muestra un gráfico con las medias de los incrementos de precios para ciertos productos seleccionados. Son exactamente 15 productos que se clasifican en 3 categorías: productos con variación máxima, productos con variación mínima y productos con variación más estable. Las primeras categorías reflejan productos cuyo aumento de precios fue máxima o mínima respectivamente. La última, refleja productos cuyo valor absoluto de variación de precio es la más cercana a cero.

Sería muy confuso elaborar un gráfico como el que se muestra para los 1.000 productos relevados. La intención, sin embargo, es brindar un panorama que pueda derivar en algún análisis futuro interesante. En efecto, se observa por ejemplo que existen dos desodorantes antitranspirantes de Rexona, uno de los cuales disminuyó notablemente su precio, y otro cuyo precio aumentó a más del doble. Algo similar ocurre con la gaseosa Sprite Zero de Lima-Limón: el producto de 1.5Lts. aumentó su precio en casi un 70%, mientras que la versión de 2.25Lts. lo disminuyó casi 12%. Esta simple observación da lugar a pensar que sería posible encontrar productos sustitutos que se podrían presentar al consumidor a fin de poder satisfacer una misma necesidad a un menor precio.

Incrementos porcentuales registrados en los productos. Se muestran 3 categorías y 5 productos por cada una de ellas: productos con máxima o mayor variación, productos más estables (con variación más cercana a 0) y productos con mínima o menor variación.

Incrementos porcentuales registrados en los productos. Se muestran 3 categorías y 5 productos por cada una de ellas: productos con máxima o mayor variación, productos más estables (con variación más cercana a 0) y productos con mínima o menor variación.

5 Conclusiones

De los análisis realizados sobre el conjunto de datos propuesto, lo primero que podemos resaltar es que hay una disparidad importante en la cantidad de datos relevados por comuna, así como también en las sucursales. De las 837 que figuran en el listado original, solamente 175 fueron relevadas y no hay ningún autoservicio que provea datos. A fin de poder sacar conclusiones más precisas, sería bueno poder contar con más datos para el sur de la Ciudad de Buenos Aires o al menos que no haya barrios con datos faltantes.

En segundo lugar resultan interesantes los resultados referidos al ranking de precios. Se observa que hay comercios que tienen de forma permanente los precios más bajos (Supermercados DIA, Hipermercados Carrefour o Carrefour Market) y otros que siempre tienen los precios más altos (Jumbo, Disco o Vea). También se encuentran patrones espaciales en cuanto a la distribución de precios. La Comuna 6 (Caballito) resulta ser siempre la que tiene precios más elevados y, en general, se observa que algunas comunas del sur suelen mantener precios más bajos. Como dato de interés, se proveen tablas con las sucursales con precios más baratos y caros.

Con respecto a la evolución de precios, el incremento porcentual es consistente con los datos provistos por el IPC GCBA para el período de estudio. Dicha evolución resulta ser casi la misma en hipermercados que en supermercados, aunque a nivel espacial pareciera que las comunas del sur sufrieron un impacto levemente más elevado que las del norte. A nivel de comercios, Supermercados DIA fue la empresa que más aumentó los precios, mientras que Hipermercados Carrefour fue quien menos los aumentó (permitiendo que esta última termine liderando el ranking de precios más bajos al final del período de estudio).

Finalmente, el último análisis correspondiente a evolución de precios por producto nos permite ver que existe una posible línea de estudio futura en relación a la identificación de productos sustitutos. Dado que hay productos similares que varían su precio de forma muy diferente (el caso del desodorante Rexona o la gaseosa Sprite Zero Lima Limón mencionados anteriormente), es de interés para el consumidor conocer este tipo de información.

Sin embargo, esto requería identificar qué productos son sustitutos de otros. En algunos casos esto es posible dado que el uso de un producto o su sustituto es generalmente indiferente para cualquier individuo de la población. Pero hay otros productos (vinos, gaseosas, cervezas, etc.) en donde el gusto del consumidor es relevante a efectos de la clasificación de un producto como sustituo de otro. Para dicho análisis se debería contar con información de hábitos de consumo para segmentos definidos de la población. Pero como se mencionó anteriormente, este análisis está fuera del alcance de este trabajo y se menciona solamente como una propuesta de trabajo futuro.

6 Referencias

[1] Precios Claros (https://www.preciosclaros.gob.ar)

[2] Patil Y, Patil S. Review of Web Crawlers with Specification and Working, 2016 (https://www.ijarcce.com/upload/2016/january-16/IJARCCE%2052.pdf)

[3] Límites y ubicación geográfica de los barrios de la Ciudad, Buenos Aires Ciudad (https://data.buenosaires.gob.ar/dataset/barrios)

[4] https://www.estadisticaciudad.gob.ar/eyc/?p=27386

[5] https://www.estadisticaciudad.gob.ar/eyc/?p=28444