Explorative Datenanalyse mit Julia
verwendenVegaLite
Exploratory Data Analysis (EDA) ist ein statistischer Ansatz zur Zusammenfassung und Visualisierung eines Datensatzes, um Erkenntnisse zu gewinnen und Muster, Beziehungen und Anomalien in den Daten zu entdecken.
Es ist wichtig, diese Analyse durchzuführen, da wir uns die Daten genauer ansehen können, bevor wir uns für eine weitere Analyse der Daten oder deren Verwendung in unserem Projekt entscheiden. Es hilft uns bei Bedarf auch bei der Auswahl einer geeigneten Teilmenge der Daten.
Sie können auch fehlende Werte oder NaN-Werte (keine Zahl) identifizieren. Manchmal sind die Daten für eine weitere Analyse nicht geeignet oder wir können fehlende Werte oder Nullen ersetzen.
Es gibt verschiedene Ansätze zur explorativen Datenanalyse (EDA). Ich habe mehrere Ansätze aufgelistet, die ich für wichtig halte, obwohl es noch mehr gibt:
- Univariate Analyse:
- Dazu gehört die Analyse jeder Variablen, um deren Verteilung, zentrale Tendenz und Ausbreitung zu verstehen. Zu den Visualisierungen gehören: Histogramme, Dichtediagramme und Boxplots.
- Dabei wird der Zusammenhang zwischen zwei Variablen analysiert. Zu den Visualisierungen gehören: Streudiagramme und Korrelationsmatrizen.
- Dabei geht es darum, fehlende Werte in den Daten zu identifizieren und zu behandeln. Zu den Techniken können Imputation (Mittelwert, Median oder Moduswerte) oder möglicherweise KNN-Imputation gehören.
- Dabei geht es darum, Ausreißer in den Daten zu identifizieren und zu behandeln. Zu den Techniken gehören die visuelle Überprüfung der Daten, die Verwendung statistischer Tests wie Z-Scores oder eines einfachen Box- und Whisker-Plots (Boxplot).
- Inferenzstatistische Tests wie t-Tests, ANOVA-Tests usw. können verwendet werden, um Hypothesen über Beziehungen zwischen Variablen zu testen.
- Univariate Analyse
Es ist wichtig, visuelle Darstellungen der Daten zu erstellen, die die Daten am besten erklären!
Die Daten abrufen
using Plots, DataFrames, PlotThemes, VegaLite, UrlDownload; gr()
url = "https://raw.githubusercontent.com/NicJC/CarSales/main/CarS.csv"
data = urldownload(url) |> DataFrame
Ich kann dafür eine Funktion schreiben
fun(x) = ismissing(x) || (x isa Number && isnan(x) || isnothing(x)) ? 0 : xfun (generic function with 1 method)
fun(data)
ismissing(data)
Ich erstelle eine Zusammenfassung der Daten
describe(data)
Explorative Datenanalyse
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
}}
)
Streudiagramm
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 ist sehr wichtig, eine explorative Datenanalyse durchzuführen, da Sie dadurch auf lange Sicht Zeit sparen können, da die Daten möglicherweise zahlreiche Korrekturmaßnahmen benötigen, bevor Formeln auf die Daten oder für Geschäftsanalysezwecke angewendet werden können.
Fehlende Werte sind immer ein großes Problem. Wie wird Ihr Unternehmen mit fehlenden Daten umgehen? Werden die Regisseure mit der Mittelzurechnung zufrieden sein oder wäre es besser, die gesamte Beobachtung zu entfernen? Diese Entscheidungen wirken sich auf das Endergebnis der Datenanalyse oder des datenwissenschaftlichen Projekts aus.
Ich hoffe, Ihnen hat der Artikel gefallen!
Vernetzen Sie sich auf Linkedin oder Github oder folgen Sie mir für weitere Artikel über Julia, R, Python und angewandte Statistiken!

![Was ist überhaupt eine verknüpfte Liste? [Teil 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































