Habrastatistics: cómo Habr vive sin geektimes

Hola Habr.

Este artículo es una continuación lógica de la calificación. Los mejores artículos de Habr para 2018.. Y aunque el año aún no ha terminado, como saben, en el verano hubo cambios en las reglas, por lo que fue interesante ver si esto afectó en algo.

Habrastatistics: cómo Habr vive sin geektimes

Además de las estadísticas reales, se proporcionará una calificación actualizada de los artículos, así como parte del código fuente para aquellos que estén interesados ​​en cómo funciona.

Para aquellos que estén interesados ​​en lo que pasó, la continuación está cortada. Aquellos que estén interesados ​​en un análisis más detallado de las secciones del sitio también pueden consultar siguiente parte.

Datos iniciales

Esta calificación no es oficial y no tengo ninguna información privilegiada. Como puede comprobar fácilmente mirando la barra de direcciones de su navegador, todos los artículos sobre Habré tienen una numeración continua. Luego es una cuestión de técnica, simplemente leemos todos los artículos seguidos en un ciclo (en un hilo y con pausas, para no cargar el servidor). Los valores en sí se obtuvieron mediante un analizador simple en Python (las fuentes están disponibles aquí) y guardado en un archivo csv similar a este:

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

transformación

Para el análisis usaremos Python, Pandas y Matplotlib. Aquellos que no estén interesados ​​en las estadísticas pueden saltarse esta parte e ir directamente a los artículos.

Primero debe cargar el conjunto de datos en la memoria y seleccionar los datos para el año deseado.

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 año (aunque aún no está terminado) al momento de escribir este artículo se han publicado 12715 artículos. A modo de comparación, para todo 2018 - 15904. En general, muchos: esto es alrededor de 43 artículos por día (y esto es solo con una calificación positiva; cuántos artículos en total se descargan que resultaron negativos o se eliminaron, solo se puede adivinar o estimar aproximadamente a partir de las brechas entre identificadores).

Seleccionemos los campos necesarios del conjunto de datos. Como métricas usaremos el número de visualizaciones, comentarios, valores de calificación y el 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

Ahora los datos se han agregado al conjunto de datos y podemos usarlos. Agrupemos los datos por día y tomemos los valores promedio.

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()

Ahora lo interesante es que podemos mirar los gráficos.

Veamos el número de publicaciones 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()

El resultado es interesante. Como puedes ver, Habr ha sido una pequeña “salchicha” durante todo el año. No sé la razón.

Habrastatistics: cómo Habr vive sin geektimes

En comparación, 2018 parece un poco más fluido:

Habrastatistics: cómo Habr vive sin geektimes

En general, no vi ninguna disminución drástica en el número de artículos publicados en 2019 en el gráfico. Es más, por el contrario, parece incluso haber aumentado ligeramente desde el verano.

Pero los dos gráficos siguientes me deprimen un poco más.

Número medio de visitas por artículo:

Habrastatistics: cómo Habr vive sin geektimes

Calificación promedio por artículo:

Habrastatistics: cómo Habr vive sin geektimes

Como puedes ver, el número medio de visualizaciones disminuye ligeramente a lo largo del año. Esto puede explicarse por el hecho de que los motores de búsqueda aún no han indexado los nuevos artículos y no se encuentran con tanta frecuencia. Pero la caída en la calificación promedio por artículo es más incomprensible. La sensación es que los lectores simplemente no tienen tiempo para leer tantos artículos o no prestan atención a las valoraciones. Desde el punto de vista del programa de recompensas para autores, esta tendencia es muy desagradable.

Por cierto, esto no ocurrió en 2018, y el calendario es más o menos igualado.

Habrastatistics: cómo Habr vive sin geektimes

En general, los propietarios de recursos tienen algo en qué pensar.

Pero no hablemos de cosas tristes. En general, podemos decir que Habr "sobrevivió" a los cambios de verano con bastante éxito y el número de artículos en el sitio no disminuyó.

Clasificación

Ahora, en realidad, la calificación. Felicitaciones a quienes se involucraron. Permítanme recordarles una vez más que la calificación no es oficial, tal vez me perdí algo, y si algún artículo definitivamente debería estar aquí, pero no lo es, escriba, lo agregaré manualmente. Como calificación, utilizo métricas calculadas, que creo que resultaron bastante interesantes.

Artículos principales por número de visitas

Artículos principales por proporción de calificación y vistas

Artículos principales por proporción de comentarios y vistas

Los artículos más controvertidos

Artículos principales por calificación

Artículos principales por número de marcadores

Arriba por proporción de favoritos a vistas

Artículos principales por número de comentarios

Y por ultimo el ultimo Antitop por número de No me gusta

Puaj. Tengo algunas selecciones más interesantes, pero no aburriré a los lectores.

Conclusión

Al elaborar la calificación, presté atención a dos puntos que me parecieron interesantes.

En primer lugar, el 60% de los primeros son artículos del género “geektimes”. No sé si habrá menos de ellos el año que viene y cómo se verá Habr sin artículos sobre cerveza, espacio, medicina, etc. Definitivamente, los lectores perderán algo. Vamos a ver.

En segundo lugar, los marcadores superiores resultaron ser de una calidad inesperadamente alta. Esto es psicológicamente comprensible; es posible que los lectores no presten atención a la calificación, pero si el artículo es necesario, luego se agregará a sus favoritos. Y aquí se encuentra precisamente la mayor concentración de artículos útiles y serios. Creo que los propietarios del sitio deberían pensar de alguna manera en la conexión entre la cantidad de marcadores y el programa de recompensas si quieren aumentar esta categoría particular de artículos aquí en Habré.

Algo como esto. Espero que haya sido informativo.

La lista de artículos resultó ser larga, bueno, probablemente sea para mejor. Feliz lectura a todos.

Fuente: habr.com

Añadir un comentario