Habrastatistics: bagaimana Habr hidup tanpa geektimes

Hei Habr.

Artikel ini merupakan kelanjutan logis dari peringkat tersebut Artikel Habr terbaik untuk 2018. Dan meskipun tahun belum berakhir, tetapi seperti yang Anda ketahui, ada perubahan aturan di musim panas, jadi menarik untuk melihat apakah itu memengaruhi sesuatu.

Habrastatistics: bagaimana Habr hidup tanpa geektimes

Selain statistik aktual, juga akan ada peringkat artikel yang diperbarui, serta beberapa sumber bagi mereka yang tertarik dengan cara kerjanya.

Bagi mereka yang tertarik dengan apa yang terjadi, lanjutkan di bawah potongan. Mereka yang tertarik dengan analisis yang lebih rinci dari bagian-bagian situs juga dapat melihatnya bagian berikutnya.

Data mentah

Peringkat ini tidak resmi, dan saya tidak memiliki data orang dalam. Karena mudah dilihat dengan melihat bilah alamat browser, semua artikel di Habré memiliki penomoran yang berkelanjutan. Kemudian soal teknik, hanya dalam satu siklus kita membaca semua artikel secara berurutan (dalam satu utas dan dengan jeda agar tidak memuat server). Nilai-nilai itu sendiri diperoleh dengan pengurai Python sederhana (ada sumber di sini) dan disimpan dalam file csv seperti ini:

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

pengolahan

Untuk parsing, kami akan menggunakan Python, Pandas dan Matplotlib. Mereka yang tidak tertarik dengan statistik dapat melewati bagian ini dan langsung ke artikel.

Pertama, Anda perlu memuat kumpulan data ke dalam memori dan memilih data untuk tahun yang diinginkan.

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)

Ternyata tahun ini (walaupun belum berakhir) pada saat penulisan, 12715 artikel telah diterbitkan. Sebagai perbandingan, untuk keseluruhan tahun 2018 - 15904. Secara umum banyak - ini sekitar 43 artikel per hari (dan ini hanya dengan rating positif, berapa total artikel yang dimuat yang negatif atau dihapus, seseorang hanya dapat menebak atau memperkirakan secara kasar dengan kelalaian di antara pengidentifikasi).

Pilih bidang yang diperlukan dari kumpulan data. Sebagai metrik, kami akan menggunakan jumlah tampilan, komentar, nilai peringkat, dan jumlah bookmark.

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

Sekarang data telah ditambahkan ke dataset dan kita dapat menggunakannya. Mari kita kelompokkan data berdasarkan hari dan ambil nilai rata-ratanya.

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

Sekarang bagian yang menyenangkan, kita bisa melihat grafiknya.

Mari kita lihat jumlah publikasi di Habré pada tahun 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()

Hasilnya menarik. Seperti yang Anda lihat, Habr sedikit "sosis" sepanjang tahun. Saya tidak tahu alasannya.

Habrastatistics: bagaimana Habr hidup tanpa geektimes

Sebagai perbandingan, 2018 terlihat sedikit "lebih mulus":

Habrastatistics: bagaimana Habr hidup tanpa geektimes

Secara umum, saya tidak melihat adanya penurunan drastis jumlah artikel yang diterbitkan pada tahun 2019 di grafik. Selain itu, sebaliknya, tampaknya telah tumbuh sedikit sejak musim panas.

Tetapi dua grafik berikutnya membuat saya sedikit lebih tertekan.

Tampilan rata-rata per artikel:

Habrastatistics: bagaimana Habr hidup tanpa geektimes

Peringkat rata-rata per artikel:

Habrastatistics: bagaimana Habr hidup tanpa geektimes

Seperti yang Anda lihat, jumlah rata-rata penayangan sepanjang tahun sedikit berkurang. Hal ini dapat dijelaskan dengan fakta bahwa artikel baru belum diindeks oleh mesin pencari, dan jarang ditemukan. Namun penurunan rating rata-rata per artikel lebih tidak bisa dipahami. Perasaannya adalah bahwa pembaca tidak punya waktu untuk melihat begitu banyak artikel atau tidak memperhatikan peringkatnya. Dari sudut pandang program dorongan penulis, tren ini sangat tidak menyenangkan.

Omong-omong, ini tidak terjadi di tahun 2018, dan jadwalnya kurang lebih sama.

Habrastatistics: bagaimana Habr hidup tanpa geektimes

Secara umum, pemilik sumber daya memiliki sesuatu untuk dipikirkan.

Tapi jangan bicara tentang hal-hal yang menyedihkan. Secara umum, kami dapat mengatakan bahwa Habr "selamat" dari perubahan musim panas dengan cukup sukses, dan jumlah artikel di situs tidak berkurang.

Penilaian

Sekarang sebenarnya, peringkatnya. Selamat bagi yang sudah masuk ke dalamnya. Izinkan saya mengingatkan Anda sekali lagi bahwa peringkatnya tidak resmi, mungkin saya melewatkan sesuatu, dan jika beberapa artikel pasti ada di sini, tetapi tidak, tulis, saya akan menambahkannya secara manual. Sebagai penilaian, saya menggunakan metrik yang dihitung, yang menurut saya ternyata cukup menarik.

Artikel teratas berdasarkan jumlah penayangan

Artikel teratas berdasarkan rasio rating-to-views

Artikel teratas menurut rasio komentar terhadap penayangan

Artikel paling kontroversial teratas

Artikel teratas berdasarkan peringkat

Artikel teratas berdasarkan jumlah bookmark

Teratas menurut rasio bookmark terhadap tampilan

Artikel teratas berdasarkan jumlah komentar

Dan akhirnya, yang terakhir Antitop dengan jumlah tidak suka

Uff. Saya memiliki beberapa pilihan yang lebih menarik, tetapi saya tidak akan membuat pembaca bosan.

Kesimpulan

Saat menyusun rating, saya memperhatikan dua poin yang sepertinya menarik.

Pertama, bagaimanapun juga, 60% dari yang teratas adalah artikel bergenre "geektimes". Apakah jumlah mereka akan berkurang tahun depan, dan bagaimana Habr akan terlihat tanpa artikel tentang bir, luar angkasa, obat-obatan, dan sebagainya - saya tidak tahu. Pasti, pembaca akan melewatkan sesuatu. Mari kita lihat.

Kedua, bagian atas bookmark ternyata berkualitas tinggi. Ini bisa dimengerti secara psikologis, pembaca mungkin tidak memperhatikan rating, dan jika artikelnya perlu, lalu akan ditambahkan ke bookmark. Dan inilah konsentrasi terbesar dari artikel yang bermanfaat dan serius. Saya pikir pemilik situs harus memikirkan hubungan antara jumlah bookmark dan program hadiah jika mereka ingin meningkatkan kategori artikel khusus ini di sini di Habré.

Sesuatu seperti ini. Harapan itu informatif.

Daftar artikelnya ternyata panjang, yah, mungkin itu yang terbaik. Selamat membaca semuanya.

Sumber: www.habr.com

Tambah komentar