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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -32
app.py CHANGED
@@ -375,6 +375,25 @@ 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
  def remove_extra_text(message):
379
  if pd.isnull(message):
380
  return ''
@@ -382,53 +401,38 @@ def update_download_link():
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
 
 
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
+ # Сообщения без корректировок
379
+ messages_without_corrections = df[
380
+ (df['Персонализированное сообщение'].notna()) &
381
+ (df['Персонализированное сообщение'].str.strip() != '') &
382
+ ((df['Комментарий'].isna()) | (df['Комментарий'].str.strip() == '')) &
383
+ ((df['Откорректированное сообщение'].isna()) | (df['Откорректированное сообщение'].str.strip() == ''))
384
+ ].copy()
385
+ messages_without_corrections['Сообщение'] = messages_without_corrections['Персонализированное сообщение']
386
+
387
+ # Откорректированные сообщения
388
+ corrected_messages = df[
389
+ (df['Откорректированное сообщение'].notna()) &
390
+ (df['Откорректированное сообщение'].str.strip() != '')
391
+ ].copy()
392
+ corrected_messages['Сообщение'] = corrected_messages['Откорректированное сообщение']
393
+
394
+ # Объединяем сообщения
395
+ messages_df = pd.concat([messages_without_corrections, corrected_messages], ignore_index=True)
396
+
397
  def remove_extra_text(message):
398
  if pd.isnull(message):
399
  return ''
 
401
  return re.sub(r'\n-{6,}\nКоличество знаков: \d+', '', message).strip()
402
 
403
  # Применяем функцию к персонализированным и откорректированным сообщениям
404
+ messages_df['Сообщение'] = messages_df['Сообщение'].apply(remove_extra_text)
 
 
 
 
 
 
 
405
 
406
  # Подсчитываем количество символов
407
+ messages_df['Количество символов'] = messages_df['Сообщение'].str.len()
408
+ mean_characters = messages_df['Количество символов'].mean()
409
+ median_characters = messages_df['Количество символов'].median()
410
 
411
  # Подсчитываем количество предложений
412
+ messages_df['Количество предложений'] = messages_df['Сообщение'].apply(lambda x: len(re.findall(r'[.!?]+', x)))
 
413
 
414
  # График распределения по количеству символов
415
+ character_counts = messages_df['Количество символов'].value_counts().sort_index()
416
  char_count_fig = px.bar(
417
+ x=character_counts.index,
418
+ y=character_counts.values,
419
+ labels={'x': 'Количество символов', 'y': 'Количество сообщений'},
420
  title='Распределение сообщений по количеству символов'
421
  )
422
  char_count_fig.add_vline(
423
+ x=mean_characters,
424
+ line_width=3,
425
+ line_dash="dash",
426
+ line_color="green",
427
  annotation_text=f"Среднее: {mean_characters:.1f}"
428
  )
 
 
 
 
 
 
 
429
 
430
  # График распределения по количеству предложений
431
+ sentence_counts = messages_df['Количество предложений'].value_counts().sort_index()
432
  sentence_count_fig = px.bar(
433
+ x=sentence_counts.index,
434
+ y=sentence_counts.values,
435
+ labels={'x': 'Количество предложений', 'y': 'Количество сообщений'},
436
  title='Распределение сообщений по количеству предложений'
437
  )
438