fruitpicker01 commited on
Commit
28e81e9
·
verified ·
1 Parent(s): b33f4f3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -9
app.py CHANGED
@@ -375,32 +375,64 @@ def update_download_link():
375
  contributor_pie_fig = px.pie(values=contributor_counts.values, names=contributor_counts.index, title='Наиболее активные контрибьюторы')
376
  date_message_fig = px.bar(x=date_counts.index, y=date_counts.values, labels={'x': 'Дата', 'y': 'Количество сообщений'}, title='Количество добавленных сообщений по датам')
377
 
378
- # 1. Распределение сообщений по количеству символов
379
- clean_df['Количество символов'] = clean_df['Откорректированное сообщение'].fillna(clean_df['Персонализированное сообщение']).str.len()
380
- character_counts = clean_df['Количество символов'].value_counts().sort_index()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
381
  mean_characters = clean_df['Количество символов'].mean()
382
  median_characters = clean_df['Количество символов'].median()
383
 
 
 
 
 
 
 
384
  char_count_fig = px.bar(
385
  x=character_counts.index,
386
  y=character_counts.values,
387
  labels={'x': 'Количество символов', 'y': 'Количество сообщений'},
388
  title='Распределение сообщений по количеству символов'
389
  )
390
- char_count_fig.add_vline(x=mean_characters, line_width=3, line_dash="dash", line_color="green", annotation_text=f"Среднее: {mean_characters:.1f}")
391
- char_count_fig.add_vline(x=median_characters, line_width=3, line_dash="dash", line_color="red", annotation_text=f"Медиана: {median_characters:.1f}")
 
 
 
 
 
 
 
 
 
 
 
 
392
 
393
- # 2. Распределение сообщений по количеству предложений
394
- clean_df['Количество предложений'] = clean_df['Откорректированное сообщение'].fillna(clean_df['Персонализированное сообщение']).str.split('[.!?]').str.len()
395
  sentence_counts = clean_df['Количество предложений'].value_counts().sort_index()
396
-
397
  sentence_count_fig = px.bar(
398
  x=sentence_counts.index,
399
  y=sentence_counts.values,
400
  labels={'x': 'Количество предложений', 'y': 'Количество сообщений'},
401
  title='Распределение сообщений по количеству предложений'
402
  )
403
-
 
404
  return (
405
  f"[Скачать базу сообщений]({link})",
406
  total_messages_display_value,
 
375
  contributor_pie_fig = px.pie(values=contributor_counts.values, names=contributor_counts.index, title='Наиболее активные контрибьюторы')
376
  date_message_fig = px.bar(x=date_counts.index, y=date_counts.values, labels={'x': 'Дата', 'y': 'Количество сообщений'}, title='Количество добавленных сообщений по датам')
377
 
378
+ def remove_extra_text(message):
379
+ if pd.isnull(message):
380
+ return ''
381
+ # Удаляем строки вида "------\nКоличество знаков: число"
382
+ return re.sub(r'\n-{6,}\nКоличество знаков: \d+', '', message).strip()
383
+
384
+ # Применяем функцию к персонализированным и откорректированным сообщениям
385
+ clean_df['Персонализированное сообщение'] = clean_df['Персонализированное сообщение'].apply(remove_extra_text)
386
+ clean_df['Откорректированное сообщение'] = clean_df['Откорректированное сообщение'].fillna('').apply(remove_extra_text)
387
+
388
+ # Если есть откорректированное сообщение, используем его; иначе — персонализированное
389
+ clean_df['Сообщение'] = clean_df['Откорректированное сообщение'].where(
390
+ clean_df['Откорректированное сообщение'].str.strip() != '',
391
+ clean_df['Персонализированное сообщение']
392
+ )
393
+
394
+ # Подсчитываем количество символов
395
+ clean_df['Количество символов'] = clean_df['Сообщение'].str.len()
396
  mean_characters = clean_df['Количество символов'].mean()
397
  median_characters = clean_df['Количество символов'].median()
398
 
399
+ # Подсчитываем количество предложений
400
+ # Используем регулярное выражение для более точного разделения предложений
401
+ clean_df['Количество предложений'] = clean_df['Сообщение'].apply(lambda x: len(re.findall(r'[.!?]', x)))
402
+
403
+ # График распределения по количеству символов
404
+ character_counts = clean_df['Количество символов'].value_counts().sort_index()
405
  char_count_fig = px.bar(
406
  x=character_counts.index,
407
  y=character_counts.values,
408
  labels={'x': 'Количество символов', 'y': 'Количество сообщений'},
409
  title='Распределение сообщений по количеству символов'
410
  )
411
+ char_count_fig.add_vline(
412
+ x=mean_characters,
413
+ line_width=3,
414
+ line_dash="dash",
415
+ line_color="green",
416
+ annotation_text=f"Среднее: {mean_characters:.1f}"
417
+ )
418
+ char_count_fig.add_vline(
419
+ x=median_characters,
420
+ line_width=3,
421
+ line_dash="dash",
422
+ line_color="red",
423
+ annotation_text=f"Медиана: {median_characters:.1f}"
424
+ )
425
 
426
+ # График распределения по количеству предложений
 
427
  sentence_counts = clean_df['Количество предложений'].value_counts().sort_index()
 
428
  sentence_count_fig = px.bar(
429
  x=sentence_counts.index,
430
  y=sentence_counts.values,
431
  labels={'x': 'Количество предложений', 'y': 'Количество сообщений'},
432
  title='Распределение сообщений по количеству предложений'
433
  )
434
+
435
+
436
  return (
437
  f"[Скачать базу сообщений]({link})",
438
  total_messages_display_value,