Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -22,6 +22,7 @@ def safe_div(a: pd.Series, b: pd.Series) -> pd.Series:
|
|
| 22 |
return (a / b.replace(0, np.nan)).fillna(0)
|
| 23 |
|
| 24 |
def compute_ratios(df: pd.DataFrame) -> pd.DataFrame:
|
|
|
|
| 25 |
for col in [c for c in df.columns if c != "Periyot"]:
|
| 26 |
df[col] = pd.to_numeric(df[col], errors="coerce").fillna(0)
|
| 27 |
|
|
@@ -29,36 +30,34 @@ def compute_ratios(df: pd.DataFrame) -> pd.DataFrame:
|
|
| 29 |
tl = df["Kısa Vadeli Yükümlülükler"] + df["Uzun Vadeli Yükümlülükler"]
|
| 30 |
|
| 31 |
df["Cari Oran"] = safe_div(df["Dönen Varlıklar"], df["Kısa Vadeli Yükümlülükler"])
|
| 32 |
-
df["Asit Test Oranı"] = safe_div(
|
| 33 |
-
df["Dönen Varlıklar"] - df["Stoklar"] - df["Diğer Dönen Varlıklar"],
|
| 34 |
-
df["Kısa Vadeli Yükümlülükler"])
|
| 35 |
df["Nakit Oranı"] = safe_div(df["Nakit ve Nakit Benzerleri"], df["Kısa Vadeli Yükümlülükler"])
|
| 36 |
-
df["Faaliyet Kar Marjı"] = safe_div(df["FAALİYET KARI (ZARARI)"]*100, df["Satış Gelirleri"])
|
| 37 |
-
df["Brüt Kar Marjı (%)"] = safe_div(df["Ticari Faaliyetlerden Brüt Kar (Zarar)"]*100,
|
| 38 |
-
|
| 39 |
-
df["
|
| 40 |
-
df["Aktif Karlılık (%)"] = safe_div(df["Dönem Net Kar/Zararı"]*100, ta)
|
| 41 |
df["Aktif Devir Hızı"] = safe_div(df["Satış Gelirleri"], ta)
|
| 42 |
df["Dönen Varlıklar Devir Hızı"] = safe_div(df["Dönen Varlıklar"], df["Satış Gelirleri"])
|
| 43 |
df["Stok Devir Hızı"] = -safe_div(df["Satışların Maliyeti (-)"], df["Stoklar"])
|
| 44 |
-
df["Finansal Kaldıraç"] = safe_div(tl, ta)*100
|
| 45 |
df["Kısa Vade Borç / Aktif"] = safe_div(df["Kısa Vadeli Yükümlülükler"], ta)
|
| 46 |
df["Kısa Vade Borç / Özsermaye"] = safe_div(df["Kısa Vadeli Yükümlülükler"], df["Özkaynaklar"])
|
| 47 |
df["Kısa Vade Borç / Toplam Borç"] = safe_div(df["Kısa Vadeli Yükümlülükler"], tl)
|
| 48 |
df["Özsermaye / Aktif"] = safe_div(df["Özkaynaklar"], ta)
|
| 49 |
-
df["Duran Varlıklar / Aktif "] = safe_div(df["Duran Varlıklar"]*100, ta)
|
| 50 |
-
df["Dönen Varlıklar / Aktif (%)"] = safe_div(df["Dönen Varlıklar"]*100, ta)
|
| 51 |
df["Özsermaye / Maddi Duran Varlıklar"] = safe_div(df["Özkaynaklar"], df["Maddi Duran Varlıklar"])
|
| 52 |
df["Finansman Gider / Net Satış"] = safe_div(df["Finansman Giderleri"], df["Satış Gelirleri"])
|
| 53 |
-
df["Esas Faaliyet Karı / Kısa Vadeli Borç"] = safe_div(
|
| 54 |
-
|
| 55 |
-
df["ROCE Oranı"] = safe_div(df["FAALİYET KARI (ZARARI)"]*100, ta)
|
| 56 |
|
|
|
|
| 57 |
X1 = safe_div(df["Dönen Varlıklar"] - df["Kısa Vadeli Yükümlülükler"], ta)
|
| 58 |
X2 = safe_div(df["Geçmiş Yıllar Kar/Zararları"] + df["Dönem Net Kar/Zararı"], ta)
|
| 59 |
X3 = safe_div(df["SÜRDÜRÜLEN FAALİYETLER VERGİ ÖNCESİ KARI (ZARARI)"], ta)
|
| 60 |
X4 = safe_div(df["Özkaynaklar"], tl)
|
| 61 |
X5 = safe_div(df["Satış Gelirleri"], ta)
|
|
|
|
| 62 |
df["Altman Z-Skoru"] = 1.2*X1 + 1.4*X2 + 3.3*X3 + 0.6*X4 + X5
|
| 63 |
|
| 64 |
Z1 = safe_div(df["Dönem Net Kar/Zararı"], ta)
|
|
@@ -66,12 +65,17 @@ def compute_ratios(df: pd.DataFrame) -> pd.DataFrame:
|
|
| 66 |
Z3 = safe_div(df["Dönen Varlıklar"], df["Kısa Vadeli Yükümlülükler"])
|
| 67 |
df["Zmijewski Skoru"] = -4.3 - 4.5*Z1 + 5.7*Z2 - 0.004*Z3
|
| 68 |
|
|
|
|
|
|
|
|
|
|
| 69 |
L6 = safe_div(safe_div(df["Nakit ve Nakit Benzerleri"], df["Kısa Vadeli Yükümlülükler"]), tl)
|
| 70 |
L7 = safe_div(tl, ta)
|
| 71 |
df["L Model Skoru"] = (-0.113*X1 + 0.238*X2 - 0.052*X3 - 0.051*X4 +
|
| 72 |
0.011*X5 + 0.729*L6 - 0.639*L7)
|
|
|
|
| 73 |
return df
|
| 74 |
|
|
|
|
| 75 |
# ------------------------ MODEL EĞİTİMİ ------------------------
|
| 76 |
df = pd.read_csv("refined_data.csv")
|
| 77 |
df["Görüs Tipi"] = df["Görüs Tipi"].apply(
|
|
|
|
| 22 |
return (a / b.replace(0, np.nan)).fillna(0)
|
| 23 |
|
| 24 |
def compute_ratios(df: pd.DataFrame) -> pd.DataFrame:
|
| 25 |
+
# Tüm sayısal sütunları güvenli şekilde float'a çevir, boşlukları temizle
|
| 26 |
for col in [c for c in df.columns if c != "Periyot"]:
|
| 27 |
df[col] = pd.to_numeric(df[col], errors="coerce").fillna(0)
|
| 28 |
|
|
|
|
| 30 |
tl = df["Kısa Vadeli Yükümlülükler"] + df["Uzun Vadeli Yükümlülükler"]
|
| 31 |
|
| 32 |
df["Cari Oran"] = safe_div(df["Dönen Varlıklar"], df["Kısa Vadeli Yükümlülükler"])
|
| 33 |
+
df["Asit Test Oranı"] = safe_div(df["Dönen Varlıklar"] - df["Stoklar"] - df["Diğer Dönen Varlıklar"], df["Kısa Vadeli Yükümlülükler"])
|
|
|
|
|
|
|
| 34 |
df["Nakit Oranı"] = safe_div(df["Nakit ve Nakit Benzerleri"], df["Kısa Vadeli Yükümlülükler"])
|
| 35 |
+
df["Faaliyet Kar Marjı"] = safe_div(df["FAALİYET KARI (ZARARI)"] * 100, df["Satış Gelirleri"])
|
| 36 |
+
df["Brüt Kar Marjı (%)"] = safe_div(df["Ticari Faaliyetlerden Brüt Kar (Zarar)"] * 100, df["Satış Gelirleri"])
|
| 37 |
+
df["Net Kar Marjı"] = safe_div(df["Dönem Net Kar/Zararı"] * 100, df["Satış Gelirleri"])
|
| 38 |
+
df["Aktif Karlılık (%)"] = safe_div(df["Dönem Net Kar/Zararı"] * 100, ta)
|
|
|
|
| 39 |
df["Aktif Devir Hızı"] = safe_div(df["Satış Gelirleri"], ta)
|
| 40 |
df["Dönen Varlıklar Devir Hızı"] = safe_div(df["Dönen Varlıklar"], df["Satış Gelirleri"])
|
| 41 |
df["Stok Devir Hızı"] = -safe_div(df["Satışların Maliyeti (-)"], df["Stoklar"])
|
| 42 |
+
df["Finansal Kaldıraç"] = safe_div(tl, ta) * 100
|
| 43 |
df["Kısa Vade Borç / Aktif"] = safe_div(df["Kısa Vadeli Yükümlülükler"], ta)
|
| 44 |
df["Kısa Vade Borç / Özsermaye"] = safe_div(df["Kısa Vadeli Yükümlülükler"], df["Özkaynaklar"])
|
| 45 |
df["Kısa Vade Borç / Toplam Borç"] = safe_div(df["Kısa Vadeli Yükümlülükler"], tl)
|
| 46 |
df["Özsermaye / Aktif"] = safe_div(df["Özkaynaklar"], ta)
|
| 47 |
+
df["Duran Varlıklar / Aktif "] = safe_div(df["Duran Varlıklar"] * 100, ta)
|
| 48 |
+
df["Dönen Varlıklar / Aktif (%)"] = safe_div(df["Dönen Varlıklar"] * 100, ta)
|
| 49 |
df["Özsermaye / Maddi Duran Varlıklar"] = safe_div(df["Özkaynaklar"], df["Maddi Duran Varlıklar"])
|
| 50 |
df["Finansman Gider / Net Satış"] = safe_div(df["Finansman Giderleri"], df["Satış Gelirleri"])
|
| 51 |
+
df["Esas Faaliyet Karı / Kısa Vadeli Borç"] = safe_div(df["Net Faaliyet Kar/Zararı"], df["Kısa Vadeli Yükümlülükler"])
|
| 52 |
+
df["ROCE Oranı"] = safe_div(df["FAALİYET KARI (ZARARI)"] * 100, ta)
|
|
|
|
| 53 |
|
| 54 |
+
# Ek hesaplamalar için ara değişkenler
|
| 55 |
X1 = safe_div(df["Dönen Varlıklar"] - df["Kısa Vadeli Yükümlülükler"], ta)
|
| 56 |
X2 = safe_div(df["Geçmiş Yıllar Kar/Zararları"] + df["Dönem Net Kar/Zararı"], ta)
|
| 57 |
X3 = safe_div(df["SÜRDÜRÜLEN FAALİYETLER VERGİ ÖNCESİ KARI (ZARARI)"], ta)
|
| 58 |
X4 = safe_div(df["Özkaynaklar"], tl)
|
| 59 |
X5 = safe_div(df["Satış Gelirleri"], ta)
|
| 60 |
+
|
| 61 |
df["Altman Z-Skoru"] = 1.2*X1 + 1.4*X2 + 3.3*X3 + 0.6*X4 + X5
|
| 62 |
|
| 63 |
Z1 = safe_div(df["Dönem Net Kar/Zararı"], ta)
|
|
|
|
| 65 |
Z3 = safe_div(df["Dönen Varlıklar"], df["Kısa Vadeli Yükümlülükler"])
|
| 66 |
df["Zmijewski Skoru"] = -4.3 - 4.5*Z1 + 5.7*Z2 - 0.004*Z3
|
| 67 |
|
| 68 |
+
S1, S2, S3, S4 = X1, X3, safe_div(df["SÜRDÜRÜLEN FAALİYETLER VERGİ ÖNCESİ KARI (ZARARI)"], df["Kısa Vadeli Yükümlülükler"]), X5
|
| 69 |
+
df["Springate Skoru"] = 1.03 * S1 + 3.07 * S2 + 0.66 * S3 + 0.4 * S4
|
| 70 |
+
|
| 71 |
L6 = safe_div(safe_div(df["Nakit ve Nakit Benzerleri"], df["Kısa Vadeli Yükümlülükler"]), tl)
|
| 72 |
L7 = safe_div(tl, ta)
|
| 73 |
df["L Model Skoru"] = (-0.113*X1 + 0.238*X2 - 0.052*X3 - 0.051*X4 +
|
| 74 |
0.011*X5 + 0.729*L6 - 0.639*L7)
|
| 75 |
+
|
| 76 |
return df
|
| 77 |
|
| 78 |
+
|
| 79 |
# ------------------------ MODEL EĞİTİMİ ------------------------
|
| 80 |
df = pd.read_csv("refined_data.csv")
|
| 81 |
df["Görüs Tipi"] = df["Görüs Tipi"].apply(
|