Spaces:
Running
Running
File size: 2,263 Bytes
f4505cc 1f7ab52 b59b790 a577e2a 715f9f2 a577e2a 715f9f2 a577e2a 715f9f2 a577e2a 1aabc74 a577e2a 1f7ab52 a577e2a 1f7ab52 a577e2a 715f9f2 a577e2a 1f7ab52 a577e2a 715f9f2 a577e2a 715f9f2 a577e2a f60182f 1f7ab52 a577e2a b59b790 6b47695 fa3e758 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
import io
def main():
st.title("Financial Budget Planner 💰")
st.write("Kelola keuanganmu dengan lebih baik!")
# Input pemasukan
income = st.number_input("Masukkan total pemasukan bulanan (Rp)", min_value=0, step=100000)
# Input pengeluaran
st.subheader("Pengeluaran Bulanan")
categories = ["Makanan", "Transportasi", "Hiburan", "Tagihan", "Tabungan", "Lainnya"]
expenses = {}
for category in categories:
expenses[category] = st.number_input(f"{category} (Rp)", min_value=0, step=50000)
# Sisa saldo
remaining_balance = income - sum(expenses.values())
st.subheader("Ringkasan Keuangan")
st.write(f"Total Pengeluaran: Rp {sum(expenses.values()):,}")
st.write(f"Sisa Saldo: Rp {remaining_balance:,}")
# Visualisasi data
if sum(expenses.values()) > 0:
df = pd.DataFrame(expenses.items(), columns=["Kategori", "Jumlah"])
fig, ax = plt.subplots()
ax.pie(df["Jumlah"], labels=df["Kategori"], autopct='%1.1f%%', startangle=90, colors=["#ff9999", "#66b3ff", "#99ff99", "#ffcc99", "#c2c2f0", "#ffb3e6"])
ax.axis('equal')
st.pyplot(fig)
# Rekomendasi tabungan
if income > 0:
save_percentage = 20 if income > 5000000 else 10
recommended_savings = income * save_percentage / 100
st.write(f"💡 Rekomendasi: Sisihkan sekitar **{save_percentage}%** dari pemasukan untuk tabungan: Rp {recommended_savings:,}")
# Notifikasi jika over budget
if remaining_balance < 0:
st.warning("⚠️ Pengeluaran lebih besar dari pemasukan! Pertimbangkan untuk mengurangi pengeluaran.")
# Unduh laporan sebagai CSV
if st.button("Unduh Laporan CSV"):
df = pd.DataFrame(expenses.items(), columns=["Kategori", "Jumlah"])
df.loc[len(df.index)] = ["Total Pengeluaran", sum(expenses.values())]
df.loc[len(df.index)] = ["Pemasukan", income]
df.loc[len(df.index)] = ["Sisa Saldo", remaining_balance]
csv = df.to_csv(index=False).encode("utf-8")
st.download_button("Download CSV", csv, "laporan_keuangan.csv", "text/csv")
if __name__ == "__main__":
main()
|