boompack commited on
Commit
a567382
·
verified ·
1 Parent(s): 605c319

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -27
app.py CHANGED
@@ -4,21 +4,12 @@ import re
4
 
5
  def calculate_correlations(file_obj):
6
  try:
7
- # Попробуем разные разделители
8
- try:
9
- df = pd.read_csv(file_obj.name, encoding='utf-8')
10
- except pd.errors.ParserError:
11
- try:
12
- df = pd.read_csv(file_obj.name, sep=';', encoding='utf-8')
13
- except pd.errors.ParserError:
14
- try:
15
- df = pd.read_csv(file_obj.name, sep='\t', encoding='utf-8')
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": "Столбец 'коментарий' не найден"}
@@ -26,28 +17,29 @@ def calculate_correlations(file_obj):
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,
@@ -58,6 +50,8 @@ def calculate_correlations(file_obj):
58
  except Exception as e:
59
  return {"error": f"Неизвестная ошибка: {e}"}
60
 
 
 
61
  iface = gr.Interface(
62
  fn=calculate_correlations,
63
  inputs=gr.File(type="filepath", label="CSV файл с отзывами"),
 
4
 
5
  def calculate_correlations(file_obj):
6
  try:
7
+ # ... (код для чтения CSV с разными разделителями - без изменений) ...
8
+
9
+
10
+ # НОВЫЕ НАЗВАНИЯ СТОЛБЦОВ С ПРОБЕЛАМИ
11
+ if ' оценка время ответа ' not in df.columns: # С пробелами
12
+ return {"error": "Столбец ' оценка время ответа ' не найден"}
 
 
 
 
 
 
 
 
 
13
 
14
  if 'коментарий' not in df.columns:
15
  return {"error": "Столбец 'коментарий' не найден"}
 
17
  if 'статус' not in df.columns:
18
  return {"error": "Столбец 'статус' не найден"}
19
 
20
+ if ' хозяйка ответ' not in df.columns: # С пробелами
21
+ return {"error": "Столбец ' хозяйка ответ' не найден"}
22
+
23
 
24
+
25
+ # Преобразование ' оценка время ответа '
26
  try:
27
+ df[' оценка время ответа '] = df[' оценка время ответа '].astype(str).str.replace(' из 5', '')
28
+ df[' оценка время ответа '] = pd.to_numeric(df[' оценка время ответа '].astype(str).str.replace(',', '.'), errors='coerce')
29
  except AttributeError:
30
+ return {"error": "Ошибка преобразования столбца ' оценка время ответа '. Проверьте формат данных."}
31
+
32
+ # ... (далее везде использовать ' оценка время ответа ', 'коментарий', 'статус', ' хозяйка ответ') ...
33
 
34
  # 1. Оценка и наличие отзыва (коментарий)
35
  df['has_review'] = df['коментарий'].notna().astype(int)
36
+ correlation_review = df[' оценка время ответа '].corr(df['has_review']) # <- здесь
37
 
38
  # 2. Оценка и тип размещения (приблизительно)
39
+ # ... (здесь тоже)
 
 
 
 
40
 
41
  # 3. Оценка и статус эксперта
42
+ # ... (и здесь)
 
43
 
44
  return {
45
  "correlation_review": correlation_review,
 
50
  except Exception as e:
51
  return {"error": f"Неизвестная ошибка: {e}"}
52
 
53
+ # ... (остальной код без изменений)
54
+
55
  iface = gr.Interface(
56
  fn=calculate_correlations,
57
  inputs=gr.File(type="filepath", label="CSV файл с отзывами"),