Zero Shot
commit
4d0472f136
|
@ -0,0 +1,6 @@
|
||||||
|
# Python
|
||||||
|
**/Lib
|
||||||
|
**/Scripts
|
||||||
|
**/etc
|
||||||
|
**/pyvenv.cfg
|
||||||
|
**/share
|
|
@ -0,0 +1,16 @@
|
||||||
|
# Mini Hackathon: Data Visualizer & Analyzer
|
||||||
|
Aufgabe: "List Data Visualizer & Analyzer” -> 70 Minuten
|
||||||
|
Nutze LLMs und erstelle eine kleine Webanwendung (zum Beispiel mit Streamlit oder einem anderen
|
||||||
|
Framework deiner Wahl), die eine Liste von numerischen Daten vom Benutzer akzeptiert und folgende
|
||||||
|
Funktionen bereitstellt:
|
||||||
|
1. Statistische Analyse: Zeige grundlegende Statistiken der eingegebenen Daten (Durchschnitt, Median,
|
||||||
|
Standardabweichung, etc.).
|
||||||
|
1. Visualisierung: Erstelle mindestens zwei verschiedene Diagramme, die die Daten visualisieren (z.B.
|
||||||
|
Histogramm, Boxplot, etc.).
|
||||||
|
1. Interaktive Filter: Ermögliche es dem Benutzer, Filter auf die Daten anzuwenden (z.B. Werte über/unter
|
||||||
|
einem bestimmten Schwellenwert anzeigen).
|
||||||
|
1. Dynamische Updates: Die Visualisierungen und Analysen sollten sich dynamisch aktualisieren, wenn
|
||||||
|
der Benutzer die Liste ändert.
|
||||||
|
Bonus (für die besonders Schnellen):
|
||||||
|
• Implementiere eine Funktion, die automatisch Ausreißer in den Daten erkennt und markiert.
|
||||||
|
• Erweitere die Anwendung um die Möglichkeit, Daten aus einer CSV-Datei hochzuladen und zu analysieren.
|
|
@ -0,0 +1,76 @@
|
||||||
|
import streamlit as st
|
||||||
|
import pandas as pd
|
||||||
|
import numpy as np
|
||||||
|
import plotly.express as px
|
||||||
|
|
||||||
|
st.title("List Data Visualizer & Analyzer")
|
||||||
|
|
||||||
|
# Seitenleiste für die Dateneingabe
|
||||||
|
st.sidebar.header("Dateneingabe")
|
||||||
|
|
||||||
|
datenquelle = st.sidebar.radio("Datenquelle auswählen:", ("Manuelle Eingabe", "CSV-Datei hochladen"))
|
||||||
|
|
||||||
|
if datenquelle == "Manuelle Eingabe":
|
||||||
|
dateneingabe = st.sidebar.text_area("Gib Zahlen ein, getrennt durch Kommas:", value="1,2,3,4,5")
|
||||||
|
try:
|
||||||
|
datenliste = [float(x.strip()) for x in dateneingabe.split(",") if x.strip()]
|
||||||
|
df = pd.DataFrame(datenliste, columns=['Werte'])
|
||||||
|
except ValueError:
|
||||||
|
st.error("Bitte gib eine gültige Liste von Zahlen ein.")
|
||||||
|
st.stop()
|
||||||
|
elif datenquelle == "CSV-Datei hochladen":
|
||||||
|
hochgeladene_datei = st.sidebar.file_uploader("Wähle eine CSV-Datei aus", type="csv")
|
||||||
|
if hochgeladene_datei is not None:
|
||||||
|
df = pd.read_csv(hochgeladene_datei)
|
||||||
|
# Annahme: Die Daten stehen in der ersten Spalte
|
||||||
|
df = df.iloc[:, [0]]
|
||||||
|
df.columns = ['Werte']
|
||||||
|
else:
|
||||||
|
st.warning("Bitte lade eine CSV-Datei hoch.")
|
||||||
|
st.stop()
|
||||||
|
|
||||||
|
# Interaktive Filter
|
||||||
|
st.sidebar.header("Datenfilter")
|
||||||
|
min_wert = float(df['Werte'].min())
|
||||||
|
max_wert = float(df['Werte'].max())
|
||||||
|
filterbereich = st.sidebar.slider('Wertebereich auswählen:', min_wert, max_wert, (min_wert, max_wert))
|
||||||
|
gefilterter_df = df[(df['Werte'] >= filterbereich[0]) & (df['Werte'] <= filterbereich[1])]
|
||||||
|
|
||||||
|
# Statistische Analyse
|
||||||
|
st.header("Statistische Analyse")
|
||||||
|
st.write(f"**Anzahl:** {gefilterter_df['Werte'].count()}")
|
||||||
|
st.write(f"**Mittelwert:** {gefilterter_df['Werte'].mean()}")
|
||||||
|
st.write(f"**Median:** {gefilterter_df['Werte'].median()}")
|
||||||
|
st.write(f"**Standardabweichung:** {gefilterter_df['Werte'].std()}")
|
||||||
|
|
||||||
|
# Ausreißererkennung (mithilfe der 1.5*IQR-Regel)
|
||||||
|
Q1 = gefilterter_df['Werte'].quantile(0.25)
|
||||||
|
Q3 = gefilterter_df['Werte'].quantile(0.75)
|
||||||
|
IQR = Q3 - Q1
|
||||||
|
untere_grenze = Q1 - 1.5 * IQR
|
||||||
|
obere_grenze = Q3 + 1.5 * IQR
|
||||||
|
ausreisser = gefilterter_df[(gefilterter_df['Werte'] < untere_grenze) | (gefilterter_df['Werte'] > obere_grenze)]
|
||||||
|
|
||||||
|
# Visualisierungen
|
||||||
|
st.header("Datenvisualisierungen")
|
||||||
|
|
||||||
|
# Histogramm
|
||||||
|
st.subheader("Histogramm")
|
||||||
|
fig1 = px.histogram(gefilterter_df, x='Werte', nbins=20, title='Histogramm')
|
||||||
|
st.plotly_chart(fig1)
|
||||||
|
|
||||||
|
# Boxplot
|
||||||
|
st.subheader("Boxplot")
|
||||||
|
fig2 = px.box(gefilterter_df, y='Werte', points="all", title='Boxplot mit Ausreißern')
|
||||||
|
st.plotly_chart(fig2)
|
||||||
|
|
||||||
|
# Ausreißer anzeigen
|
||||||
|
if not ausreisser.empty:
|
||||||
|
st.subheader("Erkannte Ausreißer")
|
||||||
|
st.write(ausreisser)
|
||||||
|
else:
|
||||||
|
st.subheader("Keine Ausreißer erkannt")
|
||||||
|
|
||||||
|
# Gefilterte Daten anzeigen
|
||||||
|
st.header("Gefilterte Daten")
|
||||||
|
st.write(gefilterter_df)
|
|
@ -0,0 +1,101 @@
|
||||||
|
x,y
|
||||||
|
0.0,2.5777634568920975
|
||||||
|
0.10101010101010101,2.7797836589122995
|
||||||
|
0.20202020202020202,2.9818038609325015
|
||||||
|
0.30303030303030304,3.1838240629527035
|
||||||
|
0.40404040404040403,3.3858442649729055
|
||||||
|
0.5050505050505051,3.587864466993108
|
||||||
|
0.6060606060606061,3.7898846690133094
|
||||||
|
0.7070707070707071,3.991904871033512
|
||||||
|
0.8080808080808081,4.193925073053713
|
||||||
|
0.9090909090909091,4.395945275073916
|
||||||
|
1.0101010101010102,4.597965477094118
|
||||||
|
1.1111111111111112,4.79998567911432
|
||||||
|
1.2121212121212122,5.002005881134521
|
||||||
|
1.3131313131313131,5.204026083154724
|
||||||
|
1.4141414141414141,5.406046285174926
|
||||||
|
1.5151515151515151,5.608066487195128
|
||||||
|
1.6161616161616161,5.810086689215329
|
||||||
|
1.7171717171717171,6.012106891235532
|
||||||
|
1.8181818181818181,6.214127093255734
|
||||||
|
1.9191919191919191,6.416147295275936
|
||||||
|
2.0202020202020203,6.618167497296138
|
||||||
|
2.121212121212121,6.82018769931634
|
||||||
|
2.2222222222222223,7.022207901336542
|
||||||
|
2.323232323232323,7.224228103356744
|
||||||
|
2.4242424242424243,7.426248305376946
|
||||||
|
2.525252525252525,7.628268507397148
|
||||||
|
2.6262626262626263,7.83028870941735
|
||||||
|
2.727272727272727,8.03230891143755
|
||||||
|
2.8282828282828283,8.234329113457754
|
||||||
|
2.929292929292929,8.436349315477955
|
||||||
|
3.0303030303030303,8.638369517498157
|
||||||
|
3.131313131313131,8.84038971951836
|
||||||
|
3.2323232323232323,9.04240992153856
|
||||||
|
3.3333333333333335,9.244430123558764
|
||||||
|
3.4343434343434343,9.446450325578965
|
||||||
|
3.5353535353535355,9.648470527599168
|
||||||
|
3.6363636363636362,9.85049072961937
|
||||||
|
3.7373737373737375,10.05251093163957
|
||||||
|
3.8383838383838382,10.254531133659773
|
||||||
|
3.9393939393939394,10.456551335679976
|
||||||
|
4.040404040404041,10.658571537700178
|
||||||
|
4.141414141414141,10.860591739720379
|
||||||
|
4.242424242424242,11.062611941740581
|
||||||
|
4.343434343434343,11.264632143760783
|
||||||
|
4.444444444444445,11.466652345780986
|
||||||
|
4.545454545454545,11.668672547801187
|
||||||
|
4.646464646464646,11.870692749821389
|
||||||
|
4.747474747474747,12.072712951841591
|
||||||
|
4.848484848484849,12.274733153861794
|
||||||
|
4.94949494949495,12.476753355881996
|
||||||
|
5.05050505050505,12.678773557902197
|
||||||
|
5.151515151515151,12.8807937599224
|
||||||
|
5.252525252525253,13.082813961942602
|
||||||
|
5.353535353535354,13.284834163962804
|
||||||
|
5.454545454545454,13.486854365983005
|
||||||
|
5.555555555555555,13.688874568003207
|
||||||
|
5.656565656565657,13.89089477002341
|
||||||
|
5.757575757575758,14.092914972043612
|
||||||
|
5.858585858585858,14.294935174063813
|
||||||
|
5.959595959595959,14.496955376084015
|
||||||
|
6.0606060606060606,14.698975578104218
|
||||||
|
6.161616161616162,14.90099578012442
|
||||||
|
6.262626262626262,15.10301598214462
|
||||||
|
6.363636363636363,15.305036184164823
|
||||||
|
6.4646464646464645,15.507056386185026
|
||||||
|
6.565656565656566,15.709076588205228
|
||||||
|
6.666666666666667,15.911096790225432
|
||||||
|
6.767676767676767,16.113116992245633
|
||||||
|
6.8686868686868685,16.315137194265834
|
||||||
|
6.96969696969697,16.517157396286034
|
||||||
|
7.070707070707071,16.71917759830624
|
||||||
|
7.171717171717171,16.92119780032644
|
||||||
|
7.2727272727272725,17.123218002346643
|
||||||
|
7.373737373737374,17.325238204366844
|
||||||
|
7.474747474747475,17.527258406387045
|
||||||
|
7.575757575757575,17.729278608407245
|
||||||
|
7.6767676767676765,17.93129881042745
|
||||||
|
7.777777777777778,18.133319012447654
|
||||||
|
7.878787878787879,18.335339214467854
|
||||||
|
7.979797979797979,18.537359416488055
|
||||||
|
8.080808080808081,18.73937961850826
|
||||||
|
8.181818181818182,18.94139982052846
|
||||||
|
8.282828282828282,19.14342002254866
|
||||||
|
8.383838383838384,19.345440224568865
|
||||||
|
8.484848484848484,19.547460426589065
|
||||||
|
8.585858585858587,19.74948062860927
|
||||||
|
8.686868686868687,19.95150083062947
|
||||||
|
8.787878787878787,20.15352103264967
|
||||||
|
8.88888888888889,20.355541234669875
|
||||||
|
8.98989898989899,20.557561436690076
|
||||||
|
9.09090909090909,20.759581638710277
|
||||||
|
9.191919191919192,20.96160184073048
|
||||||
|
9.292929292929292,21.16362204275068
|
||||||
|
9.393939393939394,21.365642244770886
|
||||||
|
9.494949494949495,21.567662446791086
|
||||||
|
9.595959595959595,21.769682648811287
|
||||||
|
9.696969696969697,21.97170285083149
|
||||||
|
9.797979797979798,22.17372305285169
|
||||||
|
9.8989898989899,22.375743254871896
|
||||||
|
10.0,22.577763456892097
|
|
Loading…
Reference in New Issue