Habrastatistics: πώς ζει ο Habr χωρίς geektimes

Γεια σου Χαμπρ.

Αυτό το άρθρο είναι μια λογική συνέχεια της βαθμολογίας Τα καλύτερα άρθρα Habr για το 2018. Και παρόλο που η χρονιά δεν έχει τελειώσει ακόμα, όπως γνωρίζετε, το καλοκαίρι υπήρξαν αλλαγές στους κανόνες, οπότε έγινε ενδιαφέρον να δούμε αν αυτό επηρέασε κάτι.

Habrastatistics: πώς ζει ο Habr χωρίς geektimes

Εκτός από τα πραγματικά στατιστικά στοιχεία, θα παρέχεται μια ενημερωμένη βαθμολογία άρθρων, καθώς και κάποιος πηγαίος κώδικας για όσους ενδιαφέρονται για το πώς λειτουργεί.

Για όσους ενδιαφέρονται για το τι έγινε, η συνέχεια είναι κάτω από το κόψιμο. Όσοι ενδιαφέρονται για μια πιο λεπτομερή ανάλυση των ενοτήτων του ιστότοπου μπορούν επίσης να κοιτάξουν επόμενο μέρος.

Ακατέργαστα δεδομένα

Αυτή η βαθμολογία είναι ανεπίσημη και δεν έχω πληροφορίες εμπιστευτικές. Όπως μπορείτε εύκολα να δείτε κοιτάζοντας τη γραμμή διευθύνσεων του προγράμματος περιήγησής σας, όλα τα άρθρα στο Habré έχουν συνεχή αρίθμηση. Μετά είναι θέμα τεχνικής, απλά διαβάζουμε όλα τα άρθρα στη σειρά σε έναν κύκλο (σε ένα νήμα και με παύσεις, για να μην φορτώσουμε τον διακομιστή). Οι ίδιες οι τιμές λήφθηκαν με έναν απλό αναλυτή στην Python (οι πηγές είναι διαθέσιμες εδώ) και αποθηκεύτηκε σε ένα αρχείο csv κάπως έτσι:

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

Επεξεργασία

Για την ανάλυση θα χρησιμοποιήσουμε Python, Pandas και Matplotlib. Όσοι δεν ενδιαφέρονται για τα στατιστικά μπορούν να παραλείψουν αυτό το μέρος και να πάνε κατευθείαν στα άρθρα.

Πρώτα πρέπει να φορτώσετε το σύνολο δεδομένων στη μνήμη και να επιλέξετε δεδομένα για το επιθυμητό έτος.

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)

Αποδεικνύεται ότι φέτος (αν και δεν έχει τελειώσει ακόμα) τη στιγμή που γράφεται το άρθρο, έχουν δημοσιευτεί 12715 άρθρα. Για σύγκριση, για ολόκληρο το 2018 - 15904. Γενικά, πολλά - πρόκειται για περίπου 43 άρθρα την ημέρα (και αυτό είναι μόνο με θετική βαθμολογία. πόσα συνολικά άρθρα έχουν ληφθεί που έγιναν αρνητικά ή διαγράφηκαν, μπορεί κανείς μόνο εικασία ή χονδρική εκτίμηση από τα κενά μεταξύ των αναγνωριστικών).

Ας επιλέξουμε τα απαραίτητα πεδία από το σύνολο δεδομένων. Ως μετρήσεις θα χρησιμοποιήσουμε τον αριθμό των προβολών, τα σχόλια, τις τιμές αξιολόγησης και τον αριθμό των σελιδοδεικτών.

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

Τώρα τα δεδομένα έχουν προστεθεί στο σύνολο δεδομένων και μπορούμε να τα χρησιμοποιήσουμε. Ας ομαδοποιήσουμε τα δεδομένα ανά ημέρα και ας πάρουμε τις μέσες τιμές.

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

Τώρα το ενδιαφέρον μέρος είναι ότι μπορούμε να δούμε τα γραφήματα.

Ας δούμε τον αριθμό των δημοσιεύσεων στο Habré το 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()

Το αποτέλεσμα είναι ενδιαφέρον. Όπως μπορείτε να δείτε, το Habr ήταν ένα μικρό «λουκάνικο» όλο το χρόνο. Δεν ξέρω τον λόγο.

Habrastatistics: πώς ζει ο Habr χωρίς geektimes

Για σύγκριση, το 2018 φαίνεται λίγο πιο ομαλό:

Habrastatistics: πώς ζει ο Habr χωρίς geektimes

Γενικά, δεν είδα κάποια δραστική μείωση στον αριθμό των δημοσιευμένων άρθρων το 2019 στο γράφημα. Επιπλέον, αντίθετα, φαίνεται να έχει έστω και ελαφρώς αυξηθεί από το καλοκαίρι.

Αλλά τα δύο επόμενα γραφήματα με καταθλίβουν λίγο περισσότερο.

Μέσος αριθμός προβολών ανά άρθρο:

Habrastatistics: πώς ζει ο Habr χωρίς geektimes

Μέση βαθμολογία ανά άρθρο:

Habrastatistics: πώς ζει ο Habr χωρίς geektimes

Όπως μπορείτε να δείτε, ο μέσος αριθμός προβολών μειώνεται ελαφρώς κατά τη διάρκεια του έτους. Αυτό μπορεί να εξηγηθεί από το γεγονός ότι τα νέα άρθρα δεν έχουν ακόμη ευρετηριαστεί από τις μηχανές αναζήτησης και δεν βρίσκονται τόσο συχνά. Αλλά η μείωση της μέσης βαθμολογίας ανά άρθρο είναι πιο ακατανόητη. Η αίσθηση είναι ότι οι αναγνώστες είτε απλά δεν έχουν χρόνο να κοιτάξουν τόσα πολλά άρθρα είτε δεν δίνουν σημασία στις βαθμολογίες. Από τη σκοπιά του προγράμματος επιβράβευσης συγγραφέα, αυτή η τάση είναι πολύ δυσάρεστη.

Παρεμπιπτόντως, αυτό δεν συνέβη το 2018, και το χρονοδιάγραμμα είναι λίγο πολύ ομοιόμορφο.

Habrastatistics: πώς ζει ο Habr χωρίς geektimes

Γενικά, οι ιδιοκτήτες πόρων έχουν κάτι να σκεφτούν.

Αλλά ας μην μιλάμε για θλιβερά πράγματα. Σε γενικές γραμμές, μπορούμε να πούμε ότι ο Habr "επέζησε" τις καλοκαιρινές αλλαγές με αρκετά επιτυχία και ο αριθμός των άρθρων στον ιστότοπο δεν μειώθηκε.

Εκτίμηση

Τώρα, στην πραγματικότητα, η βαθμολογία. Συγχαρητήρια σε όσους μπήκαν σε αυτό. Επιτρέψτε μου να σας υπενθυμίσω για άλλη μια φορά ότι η βαθμολογία είναι ανεπίσημη, ίσως έχασα κάτι, και αν κάποιο άρθρο σίγουρα θα έπρεπε να είναι εδώ, αλλά δεν είναι, γράψτε, θα το προσθέσω χειροκίνητα. Ως βαθμολογία, χρησιμοποιώ υπολογισμένες μετρήσεις, οι οποίες νομίζω ότι ήταν αρκετά ενδιαφέρουσες.

Κορυφαία άρθρα κατά αριθμό προβολών

Κορυφαία άρθρα ανά αναλογία βαθμολογίας προς προβολές

Κορυφαία άρθρα βάσει αναλογίας σχολίων προς προβολές

Κορυφαία πιο αμφιλεγόμενα άρθρα

Κορυφαία άρθρα ανά βαθμολογία

Κορυφαία άρθρα ανά αριθμό σελιδοδεικτών

Κορυφή κατά αναλογία σελιδοδεικτών προς προβολές

Κορυφαία άρθρα κατά αριθμό σχολίων

Και τέλος, το τελευταίο Antitop κατά αριθμό αντιπαθειών

Ουφ. Έχω μερικές ακόμα ενδιαφέρουσες επιλογές, αλλά δεν θα κουράσω τους αναγνώστες.

Συμπέρασμα

Κατά την κατασκευή της βαθμολογίας, έδωσα προσοχή σε δύο σημεία που μου φάνηκαν ενδιαφέροντα.

Πρώτον, το 60% των κορυφαίων είναι άρθρα του είδους "geektimes". Αν θα υπάρξουν λιγότερα από αυτά το επόμενο έτος και πώς θα είναι το Habr χωρίς άρθρα σχετικά με την μπύρα, το διάστημα, την ιατρική κ.λπ., δεν ξέρω. Σίγουρα κάτι θα χάσουν οι αναγνώστες. Ας δούμε.

Δεύτερον, οι κορυφαίοι σελιδοδείκτες αποδείχθηκαν απροσδόκητα υψηλής ποιότητας. Αυτό είναι ψυχολογικά κατανοητό· οι αναγνώστες μπορεί να μην δίνουν προσοχή στη βαθμολογία, αλλά αν το άρθρο είναι απαραίτητη, στη συνέχεια θα προστεθεί στους σελιδοδείκτες σας. Και εδώ είναι ακριβώς η μεγαλύτερη συγκέντρωση χρήσιμων και σοβαρών άρθρων. Πιστεύω ότι οι ιδιοκτήτες ιστότοπων θα πρέπει με κάποιο τρόπο να σκεφτούν τη σύνδεση μεταξύ του αριθμού των σελιδοδεικτών και του προγράμματος ανταμοιβών εάν θέλουν να αυξήσουν αυτή τη συγκεκριμένη κατηγορία άρθρων εδώ στο Habré.

Κάτι σαν αυτό. Ελπίζω να ήταν κατατοπιστικό.

Ο κατάλογος των άρθρων αποδείχθηκε μακρύς, καλά, μάλλον είναι προς το καλύτερο. Καλή ανάγνωση σε όλους.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο