Análisis exploratorio de datos con Julia
usandoVegaLite
El análisis exploratorio de datos (EDA) es un enfoque estadístico que se utiliza para resumir y visualizar un conjunto de datos para obtener información y descubrir patrones, relaciones y anomalías en los datos.
Es importante realizar este análisis, ya que podemos observar más de cerca los datos antes de elegir realizar más análisis sobre los datos o usarlos en nuestro proyecto. También nos ayudará a elegir un subconjunto adecuado de los datos si es necesario.
También puede identificar cualquier valor faltante o valores NaN (no un número). A veces, los datos no serán adecuados para un análisis posterior, o es posible que podamos reemplazar los valores faltantes o nulos.
Hay varios enfoques para el análisis exploratorio de datos (EDA). He enumerado varios enfoques que creo que son importantes, aunque hay más:
- Análisis univariado:
- Esto implica analizar cada variable para comprender su distribución, tendencia central y dispersión. Las visualizaciones incluyen: histogramas, diagramas de densidad y diagramas de caja.
- Esto implica analizar la relación entre dos variables. Las visualizaciones incluyen: diagramas de dispersión y matrices de correlación.
- Esto implica identificar y manejar los valores faltantes en los datos. Las técnicas pueden incluir la imputación (valores de la media, la mediana o la moda) o, posiblemente, la imputación KNN.
- Esto implica identificar y manejar valores atípicos en los datos. Las técnicas incluyen la inspección visual de los datos, utilizando pruebas estadísticas como puntajes Z o un diagrama de caja y bigotes simple (diagrama de caja).
- Las pruebas estadísticas inferenciales, como las pruebas t, las pruebas ANOVA, etc., se pueden usar para probar hipótesis sobre las relaciones entre variables.
- Análisis univariado
¡Es importante hacer representaciones visuales de los datos que los expliquen mejor!
Obtener los datos
using Plots, DataFrames, PlotThemes, VegaLite, UrlDownload; gr()
url = "https://raw.githubusercontent.com/NicJC/CarSales/main/CarS.csv"
data = urldownload(url) |> DataFrame
Puedo escribir una función para esto
fun(x) = ismissing(x) || (x isa Number && isnan(x) || isnothing(x)) ? 0 : xfun (generic function with 1 method)
fun(data)
ismissing(data)
Hago un resumen de los datos
describe(data)
Análisis exploratorio de datos
using VegaLite
data |>
@vlplot(width=600,
height=200,:bar, x={:Mileage, bin=true}, y="count()",
title="Histogram of Mileage by Make of vehicle",
config={
title={
color=:black
}}, color =:Make )
using VegaLite
data |> @vlplot(
width=500,
height=200,
:area,
transform=[
{density="Mileage",bandwidth=0.2}
],
x={"value:q", title="Mileage"},
y= {"density:q",bin=true}, title="Density plot of Mileage of vehicles",
config={
title={
color=:black
}}
)
using VegaLite
data |> @vlplot(
width=900,
height=300,
mark={:boxplot, extent=1.5},
x="CostPrice:o",
y={:StockID, axis={title="Stock ID"}},
title="Box plots of Stock IDs of vehicles",
config={
title={
color=:black
}}
)
Gráfico de dispersión
using VegaLite
data |>
@vlplot(width=700,
height=220,:point,
x=:Model,
y=:Mileage,
title="Scatter Plot of Cars",
config={
title={
color=:black
}},
color=:Make)
using VegaLite
data |>
@vlplot(
repeat={
row=[:CostPrice, :StockID, :Mileage],
column=[:Mileage, :StockID, :CostPrice]
}
) +
@vlplot(
:point,
selection={
brush={
type=:interval,
resolve=:union,
on="[mousedown[event.shiftKey], window:mouseup] > window:mousemove!",
translate="[mousedown[event.shiftKey], window:mouseup] > window:mousemove!",
zoom="wheel![event.shiftKey]"
},
grid={
type=:interval,
resolve=:global,
bind=:scales,
translate="[mousedown[!event.shiftKey], window:mouseup] > window:mousemove!",
zoom="wheel![!event.shiftKey]"
}
},
x={field={repeat=:column}, type=:quantitative},
y={field={repeat=:row}, type=:quantitative},
color={
condition={
selection=:brush,
field=:Make,
type=:nominal
},
value=:grey
}
)
using VegaLite
data |>
@vlplot(repeat={column=[:CostPrice, :StockID, :Mileage]}) +
@vlplot(
:bar,
x={field={repeat=:column},bin=true,type=:quantitative},
y="count()",
color=:Make
)
using VegaLite
data |>
@vlplot(width=500,
height=200,
:circle,
x={:CostPrice, bin={maxbins=10}},
y={:CostPrice, bin={maxbins=10}},
title="Binned Scatterplot: Cost price of vehicles",
config={
title={
color=:black
}} ,
size="count()"
)
Es muy importante realizar un análisis de datos exploratorio, ya que puede ahorrarle tiempo a largo plazo, ya que es posible que los datos necesiten muchas medidas correctivas antes de poder aplicar fórmulas a los datos o con fines de análisis comercial.
Los valores perdidos son siempre una gran consideración. ¿Cómo manejará su negocio en particular los datos faltantes? ¿Estarán contentos los directores con la imputación media, o sería mejor eliminar toda la observación? Estas decisiones afectarán el resultado final del análisis de datos o del proyecto de ciencia de datos.
¡Espero que hayas disfrutado del artículo!
¡Conectémonos en Linkedin , o github , o sígueme para obtener más artículos sobre Julia, R, Python y estadísticas aplicadas!

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































