vickybelario's picture
Update eda.py
06666d6 verified
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
# Fungsi untuk mengambil data (gunakan @st.cache untuk caching data)
@st.cache_data
def fetch_data():
df = pd.read_csv("laptop_updated.csv")
return df
# Fungsi untuk menjalankan aplikasi
def run():
# Judul aplikasi
st.title('Exploratory Data Analysis')
# Ambil data dengan memanggil fetch_data()
df = fetch_data()
# Tampilkan dataframe
st.write(df)
# Mendapatkan daftar 20 perusahaan dengan jumlah laptop terbanyak
company_list = df['Company'].value_counts().index[:20].tolist()
# Membuat figure dan axis untuk plot
plt.figure(figsize=(9,5))
# Membuat plot batang menggunakan seaborn untuk menghitung rata-rata harga laptop berdasarkan perusahaan
ax = sns.barplot(
x='Company',
y='price',
data=df[df['Company'].isin(company_list)], # Hanya menyertakan perusahaan yang ada dalam daftar company_list
order=company_list, # Mengurutkan perusahaan berdasarkan company_list
palette='Spectral', # Menggunakan palet warna 'Spectral'
errorbar=('ci', False), # Tidak menampilkan error bar
edgecolor="black" # Mengatur warna tepi batang menjadi hitam
)
plt.xticks(rotation=80)
plt.title('Average Price of Laptops by Company')
plt.xlabel('')
plt.ylabel('Price')
st.pyplot(plt)
# Membuat plot
fig, ax = plt.subplots(figsize=(10,5))
# Membuat plot batang menggunakan seaborn untuk menghitung jumlah laptop berdasarkan perusahaan
ax = sns.countplot(x='Company', data=df, palette='mako_r', order=df['Company'].value_counts().index)
ax.set_xticklabels(ax.get_xticklabels(), rotation=80)
plt.title('Number of Laptops by Company')
plt.ylabel('Counts')
plt.xlabel('')
st.pyplot(plt)
# Mendapatkan daftar 5 CPU yang paling umum
cpu_list = df['cpu_name'].value_counts()[:5].index.tolist()
# Mengelompokkan data berdasarkan CPU dan menghitung rata-rata harga
cpu_avg_price = df[df['cpu_name'].isin(cpu_list)].groupby('cpu_name')['price'].mean().sort_values(ascending=False)
cpu_avg_price = cpu_avg_price.reset_index()
plt.figure(figsize=(8,6))
# Membuat plot batang menggunakan seaborn berdasarkan rata-rata harga CPU
ax = sns.barplot(x='cpu_name', y='price', data=cpu_avg_price, palette='viridis')
plt.xticks(rotation=80)
# Menambahkan label pada setiap batang
for container in ax.containers:
ax.bar_label(container)
plt.title('Average Price of Laptop based on Common CPUs')
plt.xlabel('')
plt.ylabel('')
st.pyplot(plt)
# Mendefinisikan warna khusus untuk setiap merek GPU
custom_palette = {'Intel': 'blue', 'Nvidia': 'green', 'AMD': 'red', 'ARM': 'yellow'}
# Membuat daftar warna berdasarkan nilai gpu_brand
colors = [custom_palette.get(brand, 'grey') for brand in df['gpu_brand'].unique()]
# Plotting dengan seaborn
plt.figure(figsize=(10, 6))
sns.barplot(x=df['gpu_brand'], y=df['price'], estimator=np.mean, palette=colors)
plt.xlabel('') # Menghapus label sumbu x
plt.ylabel('') # Menghapus label sumbu y
plt.title('Average Laptop Price by GPU Brand') # Menambahkan judul plot
plt.xticks(rotation='vertical')
st.pyplot(plt)
# Mengelompokkan data berdasarkan jumlah RAM dan menghitung persentase
ram = df.groupby("Ram").size() * 100 / len(df)
ram.name = "percentage"
ram = ram.reset_index()
# Membuat plot pie menggunakan plotly express berdasarkan persentase jumlah RAM
fig = px.pie(ram, names="Ram", values="percentage", title="Amount of RAMs is the Most Common in Laptops")
fig.update_layout({"legend_title": "RAM (GB)"})
st.plotly_chart(fig)
# Membuat subplots
fig, ax = plt.subplots(figsize=(6,5))
# Membuat plot count menggunakan seaborn untuk jenis laptop yang paling umum
ax = sns.countplot(
x='TypeName', # Menggunakan kolom TypeName sebagai sumbu x
data=df, # Menggunakan dataframe df
palette='tab20c', # Memilih palet warna 'tab20c'
order=df['TypeName'].value_counts().index # Mengurutkan berdasarkan jumlah jenis laptop
)
ax.set_xticklabels(ax.get_xticklabels(), rotation=80)
plt.title('Most Common Laptops Type')
plt.xlabel('')
plt.ylabel('Counts')
st.pyplot(plt)
# Menggunakan seaborn untuk membuat bar plot
sns.barplot(
x=df['TypeName'], # Menggunakan kolom TypeName sebagai sumbu x
y=df['price'], # Menggunakan kolom price sebagai sumbu y
palette='plasma' # Memilih palet warna 'plasma'
)
# Menambahkan label sumbu y, judul, dan menghapus label sumbu x
plt.xticks(rotation='vertical')
plt.ylabel('Price')
plt.title('Average Laptop Price by Types')
plt.xlabel('')
st.pyplot(plt)
# Mengambil daftar enam ukuran layar laptop yang paling umum
inches_list = df['Inches'].value_counts().index[:6].tolist()
# Membuat DataFrame baru dengan data hanya untuk ukuran layar yang termasuk dalam inches_list
df_clean = df[df['Inches'].isin(inches_list)]
# Membuat subplot dengan ukuran gambar 6x5 inch
fig, ax = plt.subplots(figsize=(6,5))
# Membuat count plot menggunakan seaborn untuk menghitung jumlah laptop berdasarkan ukuran layar
ax = sns.countplot(x='Inches', data=df_clean, palette='cool')
ax.set_xticklabels(ax.get_xticklabels(), rotation=80)
plt.title('Most Common Laptop Screen Size')
plt.ylabel('')
st.pyplot(plt)
# Mengelompokkan data berdasarkan sistem operasi dan menghitung jumlahnya
operating_systems = df.groupby("OpSys").size().sort_values(ascending=False)
operating_systems.name = "Jumlah laptop"
operating_systems = operating_systems.reset_index()
# Membuat plot batang menggunakan plotly express
fig = px.bar(operating_systems, x="Jumlah laptop", y="OpSys", color="OpSys", title="Most Used Operating Systems in Laptops")
fig.update_yaxes(title_text='')
fig.update_xaxes(title_text='')
fig.update_layout(legend_title_text='Operating Systems')
st.plotly_chart(fig)
# Mengelompokkan data berdasarkan sistem operasi dan menghitung rata-rata harga
operating_systems = df.groupby("OpSys")['price'].mean().sort_values(ascending=False)
operating_systems.name = "Rata-rata harga"
operating_systems = operating_systems.reset_index()
# Membuat plot batang menggunakan plotly express
fig = px.bar(operating_systems, x="Rata-rata harga", y="OpSys", color="OpSys", title="Average Price of Laptops based on Operating Systems")
fig.update_yaxes(title_text='')
fig.update_xaxes(title_text='')
fig.update_layout(legend_title_text='Operating Systems')# Mengubah judul legend
st.plotly_chart(fig)
# Panggil fungsi run() untuk menjalankan aplikasi
if __name__ == '__main__':
run()