Habrastatistics: bagaimana Habr hidup tanpa geektimes

Hai, Habr.

Artikel ini adalah kelanjutan logis dari peringkat artikel Best Habr untuk 2018 . Dan meskipun tahun belum berakhir, tetapi seperti yang Anda tahu, di musim panas ada perubahan dalam aturan, masing-masing, menjadi menarik untuk melihat apakah itu mempengaruhi sesuatu.



Selain statistik itu sendiri, peringkat artikel yang diperbarui akan diberikan, serta beberapa kode sumber untuk mereka yang tertarik dengan cara kerjanya.

Bagi mereka yang tertarik dengan apa yang terjadi, terus di bawah potongan. Mereka yang tertarik pada analisis yang lebih rinci tentang bagian-bagian situs juga dapat melihat bagian selanjutnya .

Sumber data


Peringkat ini tidak resmi, dan saya tidak memiliki data orang dalam. Karena mudah dilihat, setelah melihat di bilah alamat browser, semua artikel di Habré memiliki penomoran ujung-ke-ujung. Selanjutnya adalah masalah teknis, kita cukup membaca semua artikel secara berurutan dalam satu siklus (dalam satu utas dan dengan jeda agar tidak memuat server). Nilai-nilai itu sendiri diperoleh oleh parser sederhana dengan Python (kode sumber ada di sini ) dan disimpan dalam file csv kira-kira tipe 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 kita akan menggunakan Python, Pandas dan Matplotlib. Mereka yang tidak tertarik dengan statistik, dapat melewati bagian ini dan segera pergi ke artikel.

Pertama, Anda perlu memuat dataset 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 untuk tahun ini (meskipun belum selesai) pada saat penulisan, 12715 artikel diterbitkan. Sebagai perbandingan, untuk keseluruhan tahun 2018 - 15904. Secara umum, banyak - ini sekitar 43 artikel per hari (dan ini hanya dengan peringkat positif, berapa banyak artikel yang diunduh yang negatif atau dihapus, Anda hanya dapat menebak atau kira-kira mencari tahu kelalaian di antara pengidentifikasi).

Pilih bidang yang diperlukan dari dataset. Sebagai metrik, kami akan menggunakan jumlah tampilan, komentar, nilai penilaian, 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 bisa menggunakannya. Kelompokkan data berdasarkan hari dan ambil nilai rata-rata.

 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 untuk bagian yang menyenangkan, kita bisa melihat grafik.

Mari kita lihat jumlah publikasi tentang Habré di 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.



Sebagai perbandingan, 2018 terlihat sedikit "lebih halus":



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

Tetapi dua grafik berikut ini membuat saya sedikit lebih tertekan.

Tampilan rata-rata per artikel:



Peringkat rata-rata per artikel:



Seperti yang Anda lihat, jumlah rata-rata tampilan selama tahun ini sedikit berkurang. Ini dapat dijelaskan oleh fakta bahwa artikel baru belum diindeks oleh mesin pencari, dan mereka tidak sering ditemukan. Namun penurunan peringkat rata-rata per artikel lebih sulit dipahami. Perasaannya adalah bahwa pembaca tidak punya waktu untuk menelusuri begitu banyak artikel atau tidak memperhatikan peringkat. Dari sudut pandang program hadiah penulis, tren ini sangat tidak menyenangkan.

Ngomong-ngomong, ini tidak terjadi pada tahun 2018, dan jadwalnya kurang lebih genap.



Secara umum, pemilik sumber daya memiliki sesuatu untuk dipikirkan.

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

Peringkat


Sekarang, sebenarnya, peringkatnya. Selamat untuk mereka yang memukulnya. 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 peringkat, saya menggunakan metrik terhitung, yang menurut saya, ternyata cukup menarik.

Artikel yang Dilihat Teratas


Artikel teratas tentang rasio penilaian terhadap penayangan


Artikel teratas tentang rasio komentar terhadap tampilan


Artikel paling kontroversial teratas


Artikel berperingkat teratas


Artikel Bookmark Teratas


Rasio Penelusuran menurut Tampilan


Artikel-artikel Terakhir yang Dikomentari


Dan akhirnya, anti-stop terakhir dengan jumlah tidak suka


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

Kesimpulan


Saat membangun peringkat, saya menarik dua poin yang sepertinya menarik.

Pertama, setelah semua, 60% dari yang teratas adalah artikel dalam genre geektimes. Apakah akan ada lebih sedikit dari mereka tahun depan, dan bagaimana Habr akan terlihat tanpa artikel tentang bir, ruang, obat-obatan dan sebagainya - saya tidak tahu. Pembaca pasti akan kehilangan sesuatu. Ayo lihat.

Kedua, bagian atas bookmark ternyata berkualitas tinggi. Ini dapat dipahami secara psikologis, pembaca mungkin tidak memperhatikan peringkat, dan jika sebuah artikel diperlukan , mereka akan menambahkannya ke bookmark. Dan inilah konsentrasi terbesar dari artikel yang bermanfaat dan serius. Saya pikir bahwa pemilik situs entah bagaimana harus mempertimbangkan hubungan antara jumlah bookmark dan program insentif jika mereka ingin meningkatkan kategori artikel khusus ini di Habré.

Sesuatu seperti itu.Saya harap ini informatif.

Daftar artikelnya panjang, tapi mungkin yang terbaik. Nikmati membaca untuk semua orang.

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


All Articles