Habrastatistics : comment Habr vit sans geektimes

Hé Habr.

Cet article est une suite logique de la notation Les meilleurs articles Habr pour 2018. Et même si l'année n'est pas encore terminée, comme vous le savez, les règles ont changé cet été, il est donc devenu intéressant de voir si cela affectait quelque chose.

Habrastatistics : comment Habr vit sans geektimes

En plus des statistiques réelles, une évaluation mise à jour des articles sera fournie, ainsi que du code source pour ceux qui sont intéressés par son fonctionnement.

Pour ceux qui s’intéressent à ce qui s’est passé, la suite est sous le cut. Ceux qui souhaitent une analyse plus détaillée des sections du site peuvent également consulter prochaine partie.

Données initiales

Cette note n’est pas officielle et je n’ai aucune information privilégiée. Comme vous pouvez facilement le constater en regardant la barre d’adresse de votre navigateur, tous les articles sur Habré ont une numérotation continue. Ensuite c'est une question de technique, on lit simplement tous les articles d'affilée dans un cycle (dans un seul fil et avec des pauses, pour ne pas charger le serveur). Les valeurs elles-mêmes ont été obtenues par un simple analyseur en Python (les sources sont disponibles ici) et enregistré dans un fichier csv ressemblant à ceci :

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

Traitement

Pour l'analyse, nous utiliserons Python, Pandas et Matplotlib. Ceux qui ne sont pas intéressés par les statistiques peuvent sauter cette partie et accéder directement aux articles.

Vous devez d’abord charger l’ensemble de données en mémoire et sélectionner les données pour l’année souhaitée.

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)

Il s’avère que cette année (même si elle n’est pas encore terminée) au moment de la rédaction de cet article, 12715 2018 articles ont été publiés. A titre de comparaison, pour l'ensemble de 15904 - 43. En général, beaucoup - cela représente environ XNUMX articles par jour (et ce n'est qu'avec une note positive ; combien d'articles au total téléchargés sont devenus négatifs ou ont été supprimés, on ne peut que deviner ou estimation approximative à partir des écarts entre les identifiants).

Sélectionnons les champs nécessaires dans l'ensemble de données. Comme mesures, nous utiliserons le nombre de vues, de commentaires, les valeurs de notation et le nombre de signets.

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

Les données ont maintenant été ajoutées à l'ensemble de données et nous pouvons les utiliser. Regroupons les données par jour et prenons les valeurs moyennes.

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

Maintenant, ce qui est intéressant, c'est que nous pouvons regarder les graphiques.

Regardons le nombre de publications sur 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()

Le résultat est intéressant. Comme vous pouvez le constater, Habr a été une petite « saucisse » tout au long de l'année. Je ne connais pas la raison.

Habrastatistics : comment Habr vit sans geektimes

À titre de comparaison, 2018 s’annonce un peu plus fluide :

Habrastatistics : comment Habr vit sans geektimes

De manière générale, je n'ai pas constaté de diminution drastique du nombre d'articles publiés en 2019 sur le graphique. D’ailleurs, au contraire, il semble même avoir légèrement augmenté depuis l’été.

Mais les deux graphiques suivants me dépriment un peu plus.

Nombre moyen de vues par article :

Habrastatistics : comment Habr vit sans geektimes

Note moyenne par article :

Habrastatistics : comment Habr vit sans geektimes

Comme vous pouvez le constater, le nombre moyen de vues diminue légèrement tout au long de l’année. Cela peut s'expliquer par le fait que les nouveaux articles ne sont pas encore indexés par les moteurs de recherche et qu'ils ne sont pas trouvés aussi souvent. Mais la baisse de la note moyenne par article est plus incompréhensible. Le sentiment est que les lecteurs n’ont tout simplement pas le temps de parcourir autant d’articles ou ne prêtent pas attention aux notes. Du point de vue du programme de récompense des auteurs, cette tendance est très désagréable.

D'ailleurs, cela ne s'est pas produit en 2018, et le calendrier est plus ou moins régulier.

Habrastatistics : comment Habr vit sans geektimes

En général, les propriétaires de ressources ont de quoi réfléchir.

Mais ne parlons pas de choses tristes. En général, on peut dire que Habr a « survécu » avec succès aux changements estivaux et que le nombre d'articles sur le site n'a pas diminué.

Classement

Maintenant, en fait, la note. Félicitations à ceux qui se sont lancés. Permettez-moi de vous rappeler encore une fois que la note n'est pas officielle, j'ai peut-être raté quelque chose, et si un article devrait certainement être ici, mais ce n'est pas le cas, écrivez, je l'ajouterai manuellement. En tant que note, j'utilise des mesures calculées, qui, je pense, se sont avérées assez intéressantes.

Meilleurs articles par nombre de vues

Meilleurs articles par rapport note/vues

Meilleurs articles par rapport commentaires/vues

Articles les plus controversés

Meilleurs articles par note

Meilleurs articles par nombre de favoris

Top par rapport aux favoris par rapport aux vues

Meilleurs articles par nombre de commentaires

Et enfin le dernier Antitop par nombre de Je n'aime pas

Pouah. J'ai quelques sélections plus intéressantes, mais je n'ennuierai pas les lecteurs.

Conclusion

Lors de la construction de la note, j’ai prêté attention à deux points qui m’ont semblé intéressants.

Premièrement, 60 % du top sont des articles du genre « geektimes ». Je ne sais pas s'il y en aura moins l'année prochaine et à quoi ressemblera Habr sans articles sur la bière, l'espace, la médecine, etc. Décidément, les lecteurs y perdront quelque chose. Voyons.

Deuxièmement, les meilleurs marque-pages se sont révélés d'une qualité étonnamment élevée. Ceci est psychologiquement compréhensible : les lecteurs peuvent ne pas prêter attention à la note, mais si l'article est nécessaire, il sera alors ajouté à vos favoris. Et voici justement la plus grande concentration d’articles utiles et sérieux. Je pense que les propriétaires du site devraient réfléchir d'une manière ou d'une autre au lien entre le nombre de signets et le programme de récompenses s'ils veulent augmenter cette catégorie particulière d'articles ici sur Habré.

Quelque chose comme ça. J'espère que c'était instructif.

La liste des articles s’est avérée longue, eh bien, c’est probablement pour le mieux. Bonne lecture à tous.

Source: habr.com

Ajouter un commentaire