import pandas as pd import streamlit as st import matplotlib.pyplot as plt import plotly.express as px import plotly.graph_objects as go import seaborn as sns #/Users/donme/Library/Python/3.9/lib/python/site-packages # Dosyaları yükle ihtiyac_data = pd.read_excel("ihtiyac_data.xlsx") norm_fazlasi = pd.read_excel("norm_fazlasi.xlsx") # Streamlit Başlığı st.title("Antalya İli Öğretmen İhtiyacı Ve Norm Fazlası Veri Seti Analizi") # Sekmeler tab1, tab2, tab3, tab4, tab5 = st.tabs(["Veri Keşfi", "Görselleştirme", "Analiz", "Sıralama", "Raporlama"]) numeric_columns = ihtiyac_data.select_dtypes(include=['float64', 'int64']).columns #column = st.selectbox("Histogram için bir sütun seçin", numeric_columns) with tab1: st.header("Veri Keşfi") st.subheader("İhtiyaç Data") st.write(ihtiyac_data) st.write("Veri Kümesi Boyutları:", ihtiyac_data.shape) st.write("Eksik Değer Sayısı:") st.write(ihtiyac_data.isnull().sum()) st.subheader("Norm Fazlası Data") st.write(norm_fazlasi) st.write("Veri Kümesi Boyutları:", norm_fazlasi.shape) st.write("Eksik Değer Sayısı:") st.write(norm_fazlasi.isnull().sum()) with tab2: st.header("Grafiksel Analiz") # Kullanıcıdan grafik boyutlarını alma st.subheader("Grafik Boyutlandırma") width = st.slider("Grafik genişliğini ayarlayın (piksel)", 500, 1500, 1500) # Varsayılan genişlik height = st.slider("Grafik yüksekliğini ayarlayın (piksel)", 300, 900, 700) # Varsayılan yükseklik # Histogram (Plotly) st.subheader("İhtiyaç Histogram Grafiği") if "ihtiyac" in ihtiyac_data.columns: # Sütunun veri setinde mevcut olduğundan emin olun fig = px.histogram( ihtiyac_data, x="ihtiyac", marginal="box", title="Histogram of İhtiyaç", width=width, height=height ) fig.update_layout( xaxis_title="İhtiyaç", yaxis_title="Frequency", hovermode="x" ) st.plotly_chart(fig) else: st.error("Veri setinde 'ihtiyaç' adlı bir sütun bulunamadı.") # Bar Grafiği (Plotly) st.subheader("Kategoriye Göre İhtiyaç Sayısı Grafiği") categorical_columns = ihtiyac_data.select_dtypes(include=['object']).columns bar_column = st.selectbox("Bir Kategori Seçin", categorical_columns) if bar_column: bar_data = ihtiyac_data[bar_column].value_counts().reset_index() bar_data.columns = [bar_column, "Count"] fig = px.bar(bar_data, x=bar_column, y="Count", title=f"Bar Chart of {bar_column}", width=width, height=height) fig.update_layout(xaxis_title=bar_column, yaxis_title="Count", hovermode="x") st.plotly_chart(fig) # Scatter Plot (Plotly) st.subheader("Dağılım Grafiği") x_axis = st.selectbox("X Ekseni için bir sütun seçin", ihtiyac_data.columns, key="scatter_x") y_axis = st.selectbox("Y Ekseni için bir sütun seçin", ihtiyac_data.columns, key="scatter_y") if x_axis and y_axis: fig = px.scatter(ihtiyac_data, x=x_axis, y=y_axis, title=f"Scatter Plot of {x_axis} vs {y_axis}", width=width, height=height) fig.update_traces(marker=dict(size=10, color='rgba(0,100,200,0.5)', line=dict(width=1, color='DarkSlateGrey'))) fig.update_layout(xaxis_title=x_axis, yaxis_title=y_axis, hovermode="closest") st.plotly_chart(fig) with tab3: st.header("Veri Analizi") # Filtreleme st.subheader("Filtreleme") filter_column = st.selectbox("Filtreleme için bir sütun seçin", numeric_columns) if filter_column: min_value, max_value = st.slider("Değer Aralığını Seçin", float(ihtiyac_data[filter_column].min()), float(ihtiyac_data[filter_column].max()), (float(ihtiyac_data[filter_column].min()), float(ihtiyac_data[filter_column].max()))) filtered_data = ihtiyac_data[(ihtiyac_data[filter_column] >= min_value) & (ihtiyac_data[filter_column] <= max_value)] st.write(filtered_data) with tab4: st.header("Sıralama") # Sütuna göre sıralama sort_column = st.selectbox("Sıralamak için bir sütun seçin", numeric_columns) ascending = st.radio("Sıralama Türü", ("Artan", "Azalan")) == "Artan" if sort_column: sorted_data = ihtiyac_data.sort_values(by=sort_column, ascending=ascending) st.write(sorted_data) with tab5: st.header("Raporlama") # Dinamik rapor oluşturma st.subheader("Dinamik Raporlama") selected_columns = st.multiselect("Rapor için sütunları seçin", ihtiyac_data.columns) if selected_columns: st.write(ihtiyac_data[selected_columns]) st.sidebar.title("Hakkında") st.sidebar.info("Bu uygulama,Antalya ili öğretmen ihtiyacı ve norm fazlası veri setleri üzerinden veri analizi,verilerin görselleştirilmesi ve filtrelenmesi gibi işlemlerin yapılabilmesi için tasarlanmıştır")