Habrastatistik: bagaimana Habr hidup tanpa masa geek

Hai Habr.

Artikel ini adalah kesinambungan logik penilaian Artikel Habr terbaik untuk 2018. Dan walaupun tahun ini belum berakhir, seperti yang anda ketahui, pada musim panas terdapat perubahan dalam peraturan, oleh itu, menjadi menarik untuk melihat jika ini mempengaruhi apa-apa.

Habrastatistik: bagaimana Habr hidup tanpa masa geek

Sebagai tambahan kepada statistik sebenar, penilaian artikel yang dikemas kini akan disediakan, serta beberapa kod sumber untuk mereka yang berminat dengan cara ia berfungsi.

Bagi mereka yang berminat dengan apa yang berlaku, kesinambungan adalah di bawah pemotongan. Mereka yang berminat dengan analisis bahagian tapak yang lebih terperinci juga boleh melihat bahagian seterusnya.

Data mentah

Penilaian ini tidak rasmi dan saya tidak mempunyai sebarang maklumat orang dalam. Seperti yang anda boleh lihat dengan mudah dengan melihat bar alamat penyemak imbas anda, semua artikel tentang HabrΓ© mempunyai penomboran berterusan. Kemudian ia adalah soal teknik, kami hanya membaca semua artikel berturut-turut dalam kitaran (dalam satu utas dan dengan jeda, supaya tidak memuatkan pelayan). Nilai itu sendiri diperolehi oleh penghurai mudah dalam Python (sumber tersedia di sini) dan disimpan dalam fail 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

Pemprosesan

Untuk menghurai kami akan menggunakan Python, Pandas dan Matplotlib. Mereka yang tidak berminat dengan statistik boleh melangkau bahagian ini dan terus ke artikel.

Mula-mula anda perlu memuatkan set data ke dalam memori dan pilih data untuk tahun yang dikehendaki.

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 pada tahun ini (walaupun belum selesai) pada masa penulisan, 12715 artikel telah diterbitkan. Sebagai perbandingan, untuk keseluruhan 2018 - 15904. Secara umum, banyak - ini adalah kira-kira 43 artikel setiap hari (dan ini hanya dengan penilaian positif; berapa banyak jumlah artikel yang dimuat turun yang menjadi negatif atau telah dipadamkan, seseorang hanya boleh meneka atau anggaran secara kasar daripada jurang antara pengecam).

Mari pilih medan yang diperlukan daripada set data. Sebagai metrik, kami akan menggunakan bilangan paparan, ulasan, nilai penilaian dan bilangan penanda halaman.

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

Kini data telah ditambahkan pada set data dan kami boleh menggunakannya. Mari kumpulkan data mengikut hari dan ambil nilai purata.

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 bahagian yang menarik ialah kita boleh melihat graf.

Mari lihat jumlah penerbitan 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 telah menjadi "sosej" kecil sepanjang tahun. Saya tidak tahu sebabnya.

Habrastatistik: bagaimana Habr hidup tanpa masa geek

Sebagai perbandingan, 2018 kelihatan lebih lancar:

Habrastatistik: bagaimana Habr hidup tanpa masa geek

Secara umum, saya tidak melihat sebarang penurunan drastik dalam jumlah artikel yang diterbitkan pada tahun 2019 pada graf. Lebih-lebih lagi, sebaliknya, ia nampaknya telah meningkat sedikit sejak musim panas.

Tetapi dua graf seterusnya menekan saya sedikit lagi.

Purata bilangan tontonan setiap artikel:

Habrastatistik: bagaimana Habr hidup tanpa masa geek

Penilaian purata setiap artikel:

Habrastatistik: bagaimana Habr hidup tanpa masa geek

Seperti yang anda lihat, purata bilangan tontonan berkurangan sedikit sepanjang tahun. Ini boleh dijelaskan oleh fakta bahawa artikel baharu belum diindeks oleh enjin carian, dan ia tidak ditemui begitu kerap. Tetapi penurunan dalam penilaian purata setiap artikel adalah lebih tidak dapat difahami. Perasaan adalah bahawa pembaca sama ada tidak mempunyai masa untuk melihat begitu banyak artikel atau tidak memberi perhatian kepada penilaian. Dari sudut program ganjaran penulis, trend ini sangat tidak menyenangkan.

Dengan cara ini, ini tidak berlaku pada tahun 2018, dan jadualnya lebih kurang sama.

Habrastatistik: bagaimana Habr hidup tanpa masa geek

Secara umum, pemilik sumber mempunyai sesuatu untuk difikirkan.

Tetapi jangan bercakap tentang perkara yang menyedihkan. Secara umum, kita boleh mengatakan bahawa Habr "selamat" pada musim panas berubah dengan jayanya, dan jumlah artikel di laman web itu tidak berkurangan.

Penilaian

Sekarang, sebenarnya, rating. Tahniah kepada mereka yang menyertainya. Izinkan saya mengingatkan anda sekali lagi bahawa penilaian itu tidak rasmi, mungkin saya terlepas sesuatu, dan jika beberapa artikel pasti ada di sini, tetapi tidak, tulis, saya akan menambahnya secara manual. Sebagai penilaian, saya menggunakan metrik yang dikira, yang saya fikir ternyata agak menarik.

Artikel teratas mengikut bilangan paparan

Artikel teratas mengikut nisbah penilaian kepada tontonan

Artikel teratas mengikut nisbah ulasan kepada paparan

Artikel paling kontroversial teratas

Artikel teratas mengikut penilaian

Artikel teratas mengikut bilangan penanda halaman

Teratas mengikut nisbah penanda halaman kepada paparan

Artikel teratas mengikut bilangan komen

Dan akhirnya, yang terakhir Antitop mengikut bilangan tidak suka

Ugh. Saya mempunyai beberapa lagi pilihan yang menarik, tetapi saya tidak akan menjemukan pembaca.

Kesimpulan

Semasa membina penarafan, saya memberi perhatian kepada dua perkara yang kelihatan menarik.

Pertama, 60% daripada bahagian teratas adalah artikel genre "geektimes". Sama ada jumlah mereka akan berkurangan tahun depan, dan bagaimana rupa Habr tanpa artikel tentang bir, angkasa, perubatan, dll., saya tidak tahu. Sudah pasti, pembaca akan kehilangan sesuatu. Jom tengok.

Kedua, penanda halaman teratas ternyata berkualiti tinggi yang tidak dijangka. Ini boleh difahami secara psikologi; pembaca mungkin tidak memberi perhatian kepada penarafan, tetapi jika artikel itu keperluan, kemudian ia akan ditambahkan pada penanda halaman anda. Dan inilah kepekatan terbesar artikel yang berguna dan serius. Saya fikir pemilik tapak harus memikirkan melalui hubungan antara bilangan penanda halaman dan program ganjaran jika mereka ingin meningkatkan kategori artikel khusus ini di HabrΓ©.

Sesuatu seperti ini. Saya harap ia bermaklumat.

Senarai artikel ternyata panjang, mungkin lebih baik. Selamat membaca semua.

Sumber: www.habr.com

Tambah komen