Habrastatistics: como vive Habr sen tempos de frikis

Ola Habr.

Este artigo é unha continuación lóxica da clasificación Os mellores artigos de Habr para 2018. E aínda que aínda non rematou o ano, como sabedes, no verán houbo cambios nas normas, polo tanto, fíxose interesante ver se isto afectaba algo.

Habrastatistics: como vive Habr sen tempos de frikis

Ademais das estatísticas reais, proporcionarase unha valoración actualizada dos artigos, así como algún código fonte para aqueles que estean interesados ​​no seu funcionamento.

Para os que estean interesados ​​no que pasou, a continuación está baixo o corte. Os que estean interesados ​​nunha análise máis detallada das seccións do sitio tamén poden mirar seguinte parte.

Datos iniciais

Esta clasificación non é oficial e non teño ningunha información privilegiada. Como podes ver facilmente mirando a barra de enderezos do teu navegador, todos os artigos de Habré teñen numeración continua. Logo é unha cuestión de técnica, simplemente lemos todos os artigos seguidos nun ciclo (nun fío e con pausas, para non cargar o servidor). Os propios valores obtivéronse mediante un analizador sinxelo en Python (as fontes están dispoñibles aquí) e gardou nun ficheiro csv algo así:

2019-08-11T22:36Z,https://habr.com/ru/post/463197/,"Blazor + MVVM = Silverlight наносит ответный удар, потому что древнее зло непобедимо",votes:11,votesplus:17,votesmin:6,bookmarks:40,views:5300,comments:73
2019-08-11T05:26Z,https://habr.com/ru/news/t/463199/,"В NASA испытали систему автономного управления одного микроспутника другим",votes:15,votesplus:15,votesmin:0,bookmarks:2,views:1700,comments:7

Procesamento

Para a análise empregaremos Python, Pandas e Matplotlib. Os que non estean interesados ​​nas estatísticas poden saltar esta parte e ir directamente aos artigos.

Primeiro cómpre cargar o conxunto de datos na memoria e seleccionar os datos para o ano desexado.

import pandas as pd
import datetime
import matplotlib.dates as mdates
from matplotlib.ticker import FormatStrFormatter
from pandas.plotting import register_matplotlib_converters


df = pd.read_csv("habr.csv", sep=',', encoding='utf-8', error_bad_lines=True, quotechar='"', comment='#')
dates = pd.to_datetime(df['datetime'], format='%Y-%m-%dT%H:%MZ')
df['datetime'] = dates
year = 2019
df = df[(df['datetime'] >= pd.Timestamp(datetime.date(year, 1, 1))) & (df['datetime'] < pd.Timestamp(datetime.date(year+1, 1, 1)))]

print(df.shape)

Resulta que este ano (aínda que aínda non está rematado) no momento de redactar este artigo publicáronse 12715 artigos. A modo de comparación, para todo o 2018 - 15904. En xeral, moito - isto é duns 43 artigos por día (e isto é só cunha valoración positiva; cantos artigos totais descargados foron negativos ou eliminados, só se pode adiviñar). ou estimación aproximada das lagoas entre os identificadores).

Imos seleccionar os campos necesarios do conxunto de datos. Como métricas usaremos o número de visualizacións, comentarios, valores de valoración e número de marcadores.

def to_float(s):
    # "bookmarks:22" => 22.0
    num = ''.join(i for i in s if i.isdigit())
    return float(num)

def to_int(s):
    # "bookmarks:22" => 22
    num = ''.join(i for i in s if i.isdigit())
    return int(num)

def to_date(dt):
    return dt.date() 

date = dates.map(to_date, na_action=None)
views = df["views"].map(to_int, na_action=None)
bookmarks = df["bookmarks"].map(to_int, na_action=None)
votes = df["votes"].map(to_float, na_action=None)
votes_up = df["up"].map(to_float, na_action=None)
votes_down = df["down"].map(to_float, na_action=None)
comments = df["comments"].map(to_int, na_action=None)

df['date'] = date
df['views'] = views
df['votes'] = votes
df['bookmarks'] = bookmarks
df['up'] = votes_up
df['down'] = votes_down

Agora os datos foron engadidos ao conxunto de datos e podemos utilizalos. Agrupemos os datos por día e tomemos os valores medios.

g = df.groupby(['date'])
days_count = g.size().reset_index(name='counts')
year_days = days_count['date'].values
grouped = g.median().reset_index()
grouped['counts'] = days_count['counts']
counts_per_day = grouped['counts'].values
counts_per_day_avg = grouped['counts'].rolling(window=20).mean()
view_per_day = grouped['views'].values
view_per_day_avg = grouped['views'].rolling(window=20).mean()
votes_per_day = grouped['votes'].values
votes_per_day_avg = grouped['votes'].rolling(window=20).mean()
bookmarks_per_day = grouped['bookmarks'].values
bookmarks_per_day_avg = grouped['bookmarks'].rolling(window=20).mean()

Agora o interesante é que podemos mirar os gráficos.

Vexamos o número de publicacións sobre Habré en 2019.

import matplotlib.pyplot as plt

plt.rcParams["figure.figsize"] = (16, 8)
fig, ax = plt.subplots()

plt.bar(year_days, counts_per_day, label='Articles/day')
plt.plot(year_days, counts_per_day_avg, 'g-', label='Articles avg/day')
plt.xticks(rotation=45)
ax.xaxis.set_major_formatter(mdates.DateFormatter("%d-%m-%Y"))  
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=1))
plt.legend(loc='best')
plt.tight_layout()
plt.show()

O resultado é interesante. Como vedes, Habr foi un pouco de "salchicha" durante todo o ano. Non sei o motivo.

Habrastatistics: como vive Habr sen tempos de frikis

Para comparar, 2018 parece un pouco máis suave:

Habrastatistics: como vive Habr sen tempos de frikis

En xeral, non vin ningunha diminución drástica do número de artigos publicados en 2019 no gráfico. Ademais, pola contra, parece que incluso aumentou lixeiramente desde o verán.

Pero os dous gráficos seguintes deprimenme un pouco máis.

Número medio de visualizacións por artigo:

Habrastatistics: como vive Habr sen tempos de frikis

Valoración media por artigo:

Habrastatistics: como vive Habr sen tempos de frikis

Como podedes ver, o número medio de visualizacións diminúe lixeiramente ao longo do ano. Isto pódese explicar polo feito de que os novos artigos aínda non foron indexados polos buscadores e non se atopan con tanta frecuencia. Pero o descenso da valoración media por artigo é máis incomprensible. A sensación é que os lectores simplemente non teñen tempo para mirar tantos artigos ou non prestan atención ás clasificacións. Desde o punto de vista do programa de recompensas de autor, esta tendencia é moi desagradable.

Por certo, isto non ocorreu en 2018, e o calendario é máis ou menos igualado.

Habrastatistics: como vive Habr sen tempos de frikis

En xeral, os propietarios dos recursos teñen algo no que pensar.

Pero non falemos de cousas tristes. En xeral, podemos dicir que Habr "sobreviviu" aos cambios de verán con bastante éxito e o número de artigos no sitio non diminuíu.

Clasificación

Agora, en realidade, a valoración. Parabéns aos que se meteron nela. Permíteme lembrarche unha vez máis que a clasificación non é oficial, quizais perdín algo, e se algún artigo debería estar aquí, pero non o está, escribe, engadireino manualmente. Como valoración, uso métricas calculadas, que creo que resultaron bastante interesantes.

Artigos principais por número de visualizacións

Principais artigos segundo a relación de valoracións por visualizacións

Artigos principais por relación de comentarios a visualizacións

Artigos máis controvertidos

Artigos principais por valoración

Artigos principais por número de marcadores

Arriba por proporción de marcadores a visualizacións

Artigos principais por número de comentarios

E por último, o último Antitop por número de non me gusta

Uf. Teño algunhas seleccións máis interesantes, pero non vou aburrir aos lectores.

Conclusión

Ao construír a clasificación, prestei atención a dous puntos que me pareceron interesantes.

En primeiro lugar, o 60% dos principais son artigos do xénero "geektimes". Se o ano que vén serán menos, e como será Habr sen artigos sobre cervexa, espazo, medicina, etc., non o sei. Definitivamente, os lectores perderán algo. Vexamos.

En segundo lugar, os principais marcadores resultaron ser dunha calidade inesperadamente alta. Isto é comprensible psicoloxicamente; os lectores poden non prestar atención á clasificación, pero se o artigo é necesario, entón engadirase aos teus marcadores. E aquí está precisamente a maior concentración de artigos útiles e serios. Creo que os propietarios do sitio deberían pensar dalgunha maneira na conexión entre o número de marcadores e o programa de recompensas se queren aumentar esta categoría particular de artigos aquí en Habré.

Algo coma isto. Espero que fose informativo.

A lista de artigos resultou ser longa, ben, probablemente sexa para mellor. Feliz lectura a todos.

Fonte: www.habr.com

Engadir un comentario