Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
379 |
-
|
380 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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(
|
391 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
392 |
|
393 |
-
#
|
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,
|