Habrastatistique: comment Habr vit sans geektimes

Salut, Habr.

Cet article est une suite logique du classement des articles de Best Habr pour 2018 . Et bien que l'année ne soit pas encore terminée, mais comme vous le savez, en été, il y a eu des changements dans les règles, en conséquence, il est devenu intéressant de voir si cela affectait quoi que ce soit.



En plus des statistiques elles-mêmes, une note actualisée des articles sera donnée, ainsi que quelques codes sources pour ceux qui sont intéressés par la façon dont cela fonctionne.

Pour ceux qui sont intéressés par ce qui s'est passé, a continué sous la coupe. Ceux qui sont intéressés par une analyse plus détaillée des sections du site peuvent également voir la partie suivante .

Données source


Cette note n'est pas officielle et je n'ai aucune donnée privilégiée. Comme il est facile de voir, après avoir regardé dans la barre d'adresse du navigateur, tous les articles sur Habré ont une numérotation de bout en bout. Ensuite, c'est une question technique, nous venons de lire tous les articles d'affilée dans un cycle (dans un fil et avec des pauses afin de ne pas charger le serveur). Les valeurs elles-mêmes ont été obtenues par un simple analyseur en Python (le code source est ici ) et stockées dans un fichier csv d'environ ce type:

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 immédiatement 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 pour cette année (bien qu'elle ne soit pas encore terminée) au moment de la rédaction, 12715 articles ont été publiés. À titre de comparaison, pour l'ensemble de 2018 - 15904. En général, beaucoup - c'est environ 43 articles par jour (et ce n'est qu'avec une note positive, combien d'articles téléchargés sont négatifs ou supprimés, vous ne pouvez que deviner ou comprendre approximativement les omissions parmi identifiants).

Sélectionnez les champs nécessaires dans l'ensemble de données. Comme métriques, nous utiliserons le nombre de vues, de commentaires, de valeurs de notation et le nombre de signets ajoutés.

 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 

Maintenant, les données ont été ajoutées à l'ensemble de données et nous pouvons les utiliser. Regroupez les données par jour et prenez 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, pour la partie amusante, nous pouvons regarder les graphiques.

Voyons 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 légèrement «saucisse» au cours de l'année. Je ne connais pas la raison.



Ă€ titre de comparaison, 2018 semble un peu plus "fluide":



En général, je n'ai pas vu de baisse drastique du nombre d'articles publiés en 2019 sur le graphique. De plus, 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.

Vues moyennes par article:



Note moyenne par article:



Comme vous pouvez le voir, le nombre moyen de vues au cours de l'année est légèrement réduit. Cela peut s'expliquer par le fait que les nouveaux articles n'ont pas encore été indexés par les moteurs de recherche et qu'ils ne sont pas trouvés si 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.

Soit dit en passant, ce n'était pas le cas en 2018, et le calendrier est plus ou moins uniforme.



En général, les propriétaires de ressources ont quelque chose à penser.

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

Évaluation


Maintenant, en fait, la cote. Félicitations à ceux qui l'ont frappé. Je vous rappelle encore une fois que la note n'est pas officielle, peut-être que j'ai raté quelque chose, et si un article devrait certainement être ici, mais ce n'est pas le cas, écrivez, je vais l'ajouter manuellement En tant que note, j'utilise des mesures calculées, qui, il me semble, se sont révélées assez intéressantes.

Articles les plus consultés


Principaux articles sur le rapport entre les notes et les vues


Principaux articles sur le rapport des commentaires aux vues


Articles les plus controversés


Articles les mieux notés


Articles favoris


Top by View Bookmark Ratio


Articles les plus commentés


Et enfin, le dernier anti-stop par le nombre de dégoûts


Uff. J'ai quelques échantillons plus intéressants, mais je n'ennuierai pas les lecteurs.

Conclusion


Lors de la construction de la note, j'ai attiré l'attention sur deux points qui me semblaient intéressants.

Tout d'abord, après tout, 60% du top sont des articles du genre geektimes. S'il y en aura moins l'année prochaine, et à quoi ressemblera Habr sans articles sur la bière, l'espace, les médicaments, etc. - je ne sais pas. Les lecteurs vont certainement perdre quelque chose. Voyons voir.

Deuxièmement, le haut du signet s'est révélé d'une qualité inattendue. Ceci est psychologiquement compréhensible, les lecteurs peuvent ne pas prêter attention à la note et si un article est nécessaire , ils l'ajouteront aux signets. Et voici juste la plus grande concentration d'articles utiles et sérieux. Je pense que les propriétaires du site devraient en quelque sorte considérer la relation entre le nombre de bookmarking et le programme d'incitation 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 est longue, mais c'est probablement pour le mieux. Bonne lecture Ă  tout le monde.

Source: https://habr.com/ru/post/fr466963/


All Articles