Habrastatistics: como Habr vive sem geektimes

Olá, Habr.

Este artigo é uma continuação lógica da classificação Os melhores artigos Habr para 2018. E embora o ano ainda não tenha acabado, como sabem, no verão houve mudanças nas regras, nesse sentido, ficou interessante ver se isso afetou alguma coisa.

Habrastatistics: como Habr vive sem geektimes

Além das estatísticas reais, será fornecida uma classificação atualizada dos artigos, bem como alguns códigos-fonte para quem estiver interessado em saber como funciona.

Para quem se interessa pelo ocorrido, a continuação fica em segundo plano. Quem estiver interessado em uma análise mais detalhada das seções do site também pode consultar próxima parte.

Dados iniciais

Esta classificação não é oficial e não tenho nenhuma informação privilegiada. Como você pode ver facilmente olhando a barra de endereço do seu navegador, todos os artigos do Habré têm numeração contínua. Aí é uma questão de técnica, simplesmente lemos todos os artigos seguidos em um ciclo (em um thread e com pausas, para não carregar o servidor). Os próprios valores foram obtidos por um analisador simples em Python (as fontes estão disponíveis aqui) e salvo em um arquivo csv mais ou menos assim:

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

Processamento

Para análise usaremos Python, Pandas e Matplotlib. Quem não se interessa por estatística pode pular esta parte e ir direto para os artigos.

Primeiro você precisa carregar o conjunto de dados na memória e selecionar os dados do ano desejado.

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)

Acontece que este ano (embora ainda não tenha terminado), no momento da redação deste artigo, foram publicados 12715 artigos. Para efeito de comparação, para todo o ano de 2018 - 15904. Em geral, muito - são cerca de 43 artigos por dia (e isso apenas com uma avaliação positiva; quantos artigos totais foram baixados e foram negativos ou excluídos, só podemos adivinhar ou estimar aproximadamente as lacunas entre os identificadores).

Vamos selecionar os campos necessários do conjunto de dados. Como métricas usaremos o número de visualizações, comentários, valores de classificação e o número de favoritos.

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 dados foram adicionados ao conjunto de dados e podemos usá-los. Vamos agrupar os dados por dia e tirar os valores médios.

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 a parte interessante é que podemos olhar os gráficos.

Vejamos o número de publicações sobre Habré em 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 é interessante. Como você pode ver, Habr tem sido uma pequena “salsicha” ao longo do ano. Eu não sei o motivo.

Habrastatistics: como Habr vive sem geektimes

Para efeito de comparação, 2018 parece um pouco mais tranquilo:

Habrastatistics: como Habr vive sem geektimes

Em geral, não vi nenhuma diminuição drástica no número de artigos publicados em 2019 no gráfico. Além disso, pelo contrário, parece ter aumentado ligeiramente desde o Verão.

Mas os próximos dois gráficos me deprimem um pouco mais.

Número médio de visualizações por artigo:

Habrastatistics: como Habr vive sem geektimes

Avaliação média por artigo:

Habrastatistics: como Habr vive sem geektimes

Como você pode ver, o número médio de visualizações diminui ligeiramente ao longo do ano. Isso pode ser explicado pelo fato de novos artigos ainda não terem sido indexados pelos mecanismos de busca e não serem encontrados com tanta frequência. Mas o declínio na avaliação média por artigo é mais incompreensível. A sensação é que os leitores simplesmente não têm tempo para folhear tantos artigos ou não prestam atenção às avaliações. Do ponto de vista do programa de recompensa do autor, esta tendência é muito desagradável.

Aliás, isso não aconteceu em 2018, e o cronograma está mais ou menos equilibrado.

Habrastatistics: como Habr vive sem geektimes

Em geral, os proprietários dos recursos têm algo em que pensar.

Mas não vamos falar de coisas tristes. Em geral, podemos dizer que Habr “sobreviveu” às mudanças de verão com bastante sucesso, e o número de artigos no site não diminuiu.

Classificação

Agora, na verdade, a classificação. Parabéns aos que aderiram. Deixe-me lembrá-lo mais uma vez que a classificação não é oficial, talvez eu tenha perdido alguma coisa, e se algum artigo definitivamente deveria estar aqui, mas não está, escreva, vou adicioná-lo manualmente. Como classificação, utilizo métricas calculadas, que considero bastante interessantes.

Principais artigos por número de visualizações

Principais artigos por proporção de classificação/visualização

Principais artigos por proporção de comentários e visualizações

Principais artigos mais polêmicos

Principais artigos por classificação

Principais artigos por número de favoritos

Topo por proporção de favoritos em relação às visualizações

Principais artigos por número de comentários

E finalmente, o último Antitop por número de dislikes

Eca. Tenho mais algumas seleções interessantes, mas não vou aborrecer os leitores.

Conclusão

Ao construir a avaliação prestei atenção em dois pontos que me pareceram interessantes.

Em primeiro lugar, 60% dos principais são artigos do gênero “geektimes”. Se haverá menos deles no próximo ano e como será Habr sem artigos sobre cerveja, espaço, medicina, etc., não sei. Definitivamente, os leitores perderão alguma coisa. Vamos ver.

Em segundo lugar, os marcadores principais revelaram-se de qualidade inesperadamente alta. Isto é psicologicamente compreensível; os leitores podem não prestar atenção à classificação, mas se o artigo necessidade, então ele será adicionado aos seus favoritos. E aqui está justamente a maior concentração de artigos úteis e sérios. Acho que os proprietários do site deveriam de alguma forma pensar na conexão entre o número de marcadores e o programa de recompensas se quiserem aumentar esta categoria específica de artigos aqui no Habré.

Algo assim. Espero que tenha sido informativo.

A lista de artigos acabou sendo longa, bem, provavelmente é para melhor. Boa leitura a todos.

Fonte: habr.com

Adicionar um comentário