Salut Habr.
Dans la
partie précédente , les messages des utilisateurs de ce site ont été analysés, ce qui a provoqué une discussion assez animée sur le thème des différents paramètres (nombre de messages, note, «karma», etc.). Ces questions se sont accumulées suffisamment pour faire la deuxième partie.

Ceux qui sont intéressés, quelle est la durée de la plus grande discussion dans les commentaires pour cette année, quel peut être le «karma» maximum et minimum pour les utilisateurs, et d'autres statistiques, s'il vous plaît, sous cat.
Collecte de données
Pour commencer, j'ai dû compléter l'analyseur afin qu'il puisse collecter plus de données. Les informations sur le classement des messages et la position des messages dans le fil de discussion sont déjà en HTML, mais pour obtenir le «karma» de l'utilisateur, une demande supplémentaire a dû être faite. Bien sûr, les valeurs ont été mises en cache afin que le même utilisateur ne demande pas de données plusieurs fois.
L'ensemble de données mis à jour ressemble maintenant à ceci (les surnoms d'utilisateurs ont été supprimés):
https://habr.com/ru/post/322900/,comment_19707920,comment_19706258,UserXXXX,karma:112.2,answers:1,2019-02-04 20:26:00,rating:1,up:1,down:0, ?
https://habr.com/ru/company/mailru/blog/351212/,comment_19794710,comment_19794310,UserXXXX,karma:-10.0,answers:1,2019-02-23 18:16:00,rating:3,up:5,down:-2,
...
À partir de champs supplémentaires, le champ des réponses (nombre de réponses), le karma de l'utilisateur, ainsi que les notes positives et négatives ont été ajoutés.
La fonction d'obtenir "karma" par le surnom de l'utilisateur, par exemple, ressemble à ceci:
def get_karma(user: str): data_html = get_as_str("https://habr.com/ru/users/%s/" % user) karma = data_html.find_between('info/help/karma/', '</a>').find_between('stacked-counter__value', '/div>').find_between('>', '<').replace(",", ".").replace('–', '-') return float(karma) if len(karma) > 0 else 0.0
Comme vous pouvez le voir, tout est assez simple, pas de science fusée. Nous devons également remercier les programmeurs Habr pour le code HTML clair et pratique pour l'analyse.
La taille du fichier CSV résultant pour ce 2019 était de 334 Mo. Vous pouvez démarrer l'analyse. Avant de commencer, je vous rappelle que toutes les données publiées sont ouvertes et publiques, elles sont également indexées par les moteurs de recherche. Je n'ai pas d'informations privilégiées, tout est extrait des pages de ce site.
Karma
Comme la partie précédente l'a montré, les «questions karmiques» sont les plus intéressantes, alors commençons par cela. Comme vous le savez, le «karma» est un attribut de tout utilisateur actif de ce site, les participants peuvent choisir de l'augmenter ou de le diminuer. Franchement, je ne me suis jamais posé de questions sur la façon dont cela fonctionne vraiment et sur ses limites. Je vais donc simplement donner les données sans commentaires particuliers.
Au total, sur le site au moment de la collecte de la note, 25
109 utilisateurs sont ceux qui ont laissé au moins une fois au moins un commentaire. De ce nombre, 9973 utilisateurs (39%) n'ont
aucun karma . 12346 utilisateurs (49%) ont
un karma positif , dont 5384 utilisateurs (21%) ont un
karma <= 4 et
> 40 = karma (ce niveau vous permet de participer au "programme de récompense" et de recevoir le paiement d'articles) compte 1 522 utilisateurs (6 %). 2790 utilisateurs (11%) ont
un karma négatif .
Graphiquement, la partie principale de la distribution ressemble à ceci:

Vertical - le nombre d'utilisateurs avec ce karma. Le graphique est rogné en haut, comme utilisateurs avec zéro karma maximum (9973 contre 2570 avec «karma» 1). Il n'y a pas si peu d'utilisateurs «soucieux», mais le programme est quand même déplacé vers un plus, et cela plaît. À quel niveau le karma peut-il être haut et bas?
Les 10 meilleurs classements de karma sont occupés par
Zelenyikot (+1509,2),
Milfgard (+1471,0),
m1rko (+1039,5),
PatientZero (+986,0),
Boomburum (+881,9),
ValdikSS (+873,5),
alizar (+837,5),
tangro (+802,5),
lozga (+764,7) et
DIHALT (696,1). Je pense qu'ils peuvent être félicités - bon travail, mecs :) Si j'ai raté quelqu'un - écrivez dans des messages privés, je l'ajouterai manuellement.
Au fait, il s'est avéré qu'il y avait une erreur dans ma fonction de calcul de karmareiting - elle ne traite pas correctement les valeurs supérieures à 1000 (Habr ajoute un espace au nombre, je ne le savais pas), mais la situation est rare, et je ne l'ai pas remarqué tout de suite.
Ils prennent Antitope-10 par karma ... non, je ne vais probablement pas donner leurs surnoms afin de ne pas faire de ces utilisateurs une "publicité", qui sont intéressés, peuvent insérer des données d'une capture d'écran sous un spoiler. Bien sûr, le karma négatif sur le site indique seulement qu'une personne exprime une opinion impopulaire sur ce site, et ne dit rien sur ses qualités personnelles, de sorte que ceux qui tombent dans l '«antitope» sont priés de ne pas être offensés.
Des messages
Dans les messages, vous pouvez également trouver beaucoup de choses intéressantes.
Les 5 premiers messages sont respectivement de
26 ,
17 ,
16 ,
15 et
14 Ko.
Il est intéressant de regarder la distribution sous forme graphique:

Comme vous pouvez le voir, le pic tombe sur les messages d'environ 100 caractères.
Évaluation
Les messages les
mieux notés :
+218 ,
+144 ,
+141 ,
+133 et
+124 .
Les messages les plus
négativement évalués sont
-248 ,
-170 ,
-163 ,
-131 et
-114 .
Il est intéressant de noter que la distribution du nombre de messages en fonction de la notation est approximativement similaire à la distribution du «karma» - il y a des évaluations à la fois positives et négatives, mais il y en a plus «positives». Ce qui, encore une fois, ne peut que se réjouir.
Discussions
La prochaine question intéressante était de trouver le fil le plus long parmi les messages. Il s'est avéré assez simple de le faire - chaque message en HTML a un identifiant unique, il y a aussi un paramètre data-parent_id, le reste, comme on dit, est une question technique.
Ainsi, le plus long
lambeau de discussion en 2019:
619 réponses ,
618 réponses ,
614 réponses ,
556 réponses et
553 réponses . Fait intéressant, 4 messages sur 5 à l'origine de ces discussions ont été écrits par des utilisateurs avec un karma inférieur à -20.
Regroupez les commentaires en fonction du nombre de réponses:

Vertical - le nombre de postes pour cette année. La plupart des commentaires (41% ou 183 000) ont été laissés sans réponse du tout, 75 000 commentaires ont 1 réponse, une distribution supplémentaire peut être vue dans l'image.
Conclusion
À ce sujet, je terminerai le sujet des «habrastatistiques» jusqu'en janvier - à la fin de l'année, la note finale des meilleurs articles de 2019 sera publiée, eh bien, il peut y avoir d'autres modèles intéressants.
J'espère que c'était intéressant. Si j'ai oublié quelqu'un - écrivez, c'est correct.