Update app.py
Browse files
app.py
CHANGED
@@ -16,21 +16,38 @@ def calculate_correlations(file_obj):
|
|
16 |
except pd.errors.ParserError as e:
|
17 |
return {"error": f"Ошибка парсинга файла: {e}"}
|
18 |
|
|
|
|
|
|
|
19 |
|
20 |
-
|
21 |
-
|
22 |
-
return {"error": "Столбец 'Soon ' не найден в файле."}
|
23 |
|
|
|
|
|
24 |
|
25 |
-
|
|
|
26 |
try:
|
27 |
-
df['
|
28 |
-
df['
|
29 |
except AttributeError:
|
30 |
-
return {"error": "Ошибка преобразования столбца '
|
|
|
|
|
|
|
|
|
31 |
|
32 |
-
#
|
|
|
|
|
|
|
|
|
|
|
33 |
|
|
|
|
|
|
|
34 |
|
35 |
return {
|
36 |
"correlation_review": correlation_review,
|
@@ -38,11 +55,8 @@ def calculate_correlations(file_obj):
|
|
38 |
"correlation_expert": correlation_expert
|
39 |
}
|
40 |
|
41 |
-
|
42 |
except Exception as e:
|
43 |
-
return {"error": f"Неизвестная ошибка: {e}"}
|
44 |
-
|
45 |
-
|
46 |
|
47 |
iface = gr.Interface(
|
48 |
fn=calculate_correlations,
|
|
|
16 |
except pd.errors.ParserError as e:
|
17 |
return {"error": f"Ошибка парсинга файла: {e}"}
|
18 |
|
19 |
+
# НОВЫЕ НАЗВАНИЯ СТОЛБЦОВ
|
20 |
+
if 'оценка' not in df.columns:
|
21 |
+
return {"error": "Столбец 'оценка' не найден"}
|
22 |
|
23 |
+
if 'коментарий' not in df.columns:
|
24 |
+
return {"error": "Столбец 'коментарий' не найден"}
|
|
|
25 |
|
26 |
+
if 'статус' not in df.columns:
|
27 |
+
return {"error": "Столбец 'статус' не найден"}
|
28 |
|
29 |
+
|
30 |
+
# Преобразование 'оценка'
|
31 |
try:
|
32 |
+
df['оценка'] = df['оценка'].astype(str).str.replace(' из 5', '')
|
33 |
+
df['оценка'] = pd.to_numeric(df['оценка'].astype(str).str.replace(',', '.'), errors='coerce')
|
34 |
except AttributeError:
|
35 |
+
return {"error": "Ошибка преобразования столбца 'оценка'. Проверьте формат данных."}
|
36 |
+
|
37 |
+
# 1. Оценка и наличие отзыва (коментарий)
|
38 |
+
df['has_review'] = df['коментарий'].notna().astype(int)
|
39 |
+
correlation_review = df['оценка'].corr(df['has_review'])
|
40 |
|
41 |
+
# 2. Оценка и тип размещения (приблизительно)
|
42 |
+
accommodation_types = ['кемпер', 'палатка', 'бунгало', 'мобильный дом']
|
43 |
+
correlation_accommodation = {}
|
44 |
+
for acc_type in accommodation_types:
|
45 |
+
df[acc_type] = df['коментарий'].apply(lambda x: 1 if isinstance(x, str) and re.search(acc_type, x, re.IGNORECASE) else 0)
|
46 |
+
correlation_accommodation[acc_type] = df['оценка'].corr(df[acc_type])
|
47 |
|
48 |
+
# 3. Оценка и статус эксперта
|
49 |
+
df['is_expert'] = df['статус'].apply(lambda x: 1 if isinstance(x, str) and 'местный эксперт' in x.lower() else 0)
|
50 |
+
correlation_expert = df['оценка'].corr(df['is_expert'])
|
51 |
|
52 |
return {
|
53 |
"correlation_review": correlation_review,
|
|
|
55 |
"correlation_expert": correlation_expert
|
56 |
}
|
57 |
|
|
|
58 |
except Exception as e:
|
59 |
+
return {"error": f"Неизвестная ошибка: {e}"}
|
|
|
|
|
60 |
|
61 |
iface = gr.Interface(
|
62 |
fn=calculate_correlations,
|