Habrastatistika: Xabr geektimessiz qanday yashaydi

Salom, Xabr.

Ushbu maqola reytingning mantiqiy davomidir 2018 yil uchun eng yaxshi Habr maqolalari. Yil hali tugamagan bo'lsa-da, bilasizki, yozda qoidalarga o'zgartirishlar kiritilgan, shunga ko'ra, bu biror narsaga ta'sir qiladimi yoki yo'qligini bilish qiziq bo'ldi.

Habrastatistika: Xabr geektimessiz qanday yashaydi

Haqiqiy statistik ma'lumotlarga qo'shimcha ravishda, maqolalarning yangilangan reytingi, shuningdek, uning qanday ishlashiga qiziquvchilar uchun ba'zi manba kodlari taqdim etiladi.

Nima bo'lganiga qiziqqanlar uchun davomi kesma ostida. Sayt bo'limlarini batafsil tahlil qilishni qiziqtirganlar ham qarashlari mumkin keyingi qism.

Xom ma'lumotlar

Ushbu reyting norasmiy va menda hech qanday insayder ma'lumot yo'q. Brauzeringizning manzil satriga qarab osongina ko'rishingiz mumkin, Habré-dagi barcha maqolalar uzluksiz raqamlangan. Keyin bu texnika masalasi, biz barcha maqolalarni ketma-ket ketma-ket o'qiymiz (serverni yuklamaslik uchun bir mavzuda va pauza bilan). Qiymatlarning o'zi Python-da oddiy tahlilchi tomonidan olingan (manbalar mavjud shu yerda) va csv faylida shunday saqlangan:

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

ishlov berish

Tahlil qilish uchun biz Python, Pandas va Matplotlib dan foydalanamiz. Statistikaga qiziqmaganlar bu qismni o'tkazib yuborib, to'g'ridan-to'g'ri maqolalarga o'tishlari mumkin.

Avval siz ma'lumotlar to'plamini xotiraga yuklashingiz va kerakli yil uchun ma'lumotlarni tanlashingiz kerak.

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)

Ma’lum bo‘lishicha, bu yil (garchi u hali tugallanmagan bo‘lsa ham) maqola yozilayotgan vaqtda 12715 2018 ta maqola chop etilgan. Taqqoslash uchun, butun 15904 yil uchun - 43. Umuman olganda, juda ko'p - bu kuniga taxminan XNUMX ta maqola (va bu faqat ijobiy reyting bilan; salbiy bo'lgan yoki o'chirilgan qancha maqola yuklab olingan, faqat taxmin qilish mumkin. yoki identifikatorlar orasidagi bo'shliqlardan taxminan taxmin qiling).

Keling, ma'lumotlar to'plamidan kerakli maydonlarni tanlaymiz. Ko'rsatkichlar sifatida biz ko'rishlar soni, sharhlar, reyting qiymatlari va xatcho'plar sonidan foydalanamiz.

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

Endi ma'lumotlar ma'lumotlar to'plamiga qo'shildi va biz undan foydalanishimiz mumkin. Keling, ma'lumotlarni kun bo'yicha guruhlaymiz va o'rtacha qiymatlarni olamiz.

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

Endi qiziq tomoni shundaki, biz grafiklarga qarashimiz mumkin.

Keling, 2019 yilda Habré-da nashr etilgan nashrlar sonini ko'rib chiqaylik.

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

Natija qiziq. Ko'rib turganingizdek, Habr yil davomida ozgina "kolbasa" bo'ldi. Sababini bilmayman.

Habrastatistika: Xabr geektimessiz qanday yashaydi

Taqqoslash uchun, 2018 yil biroz yumshoqroq ko'rinadi:

Habrastatistika: Xabr geektimessiz qanday yashaydi

Umuman olganda, men 2019 yilda grafik bo'yicha nashr etilgan maqolalar sonining keskin kamayishini ko'rmadim. Qolaversa, aksincha, yozdan beri hatto biroz oshganga o'xshaydi.

Ammo keyingi ikkita grafik meni biroz tushkunlikka soladi.

Har bir maqola uchun oʻrtacha koʻrishlar soni:

Habrastatistika: Xabr geektimessiz qanday yashaydi

Bir maqola uchun o'rtacha reyting:

Habrastatistika: Xabr geektimessiz qanday yashaydi

Ko'rib turganingizdek, o'rtacha ko'rishlar soni yil davomida bir oz kamayadi. Buni yangi maqolalar hali qidiruv tizimlari tomonidan indekslanmaganligi va ular tez-tez topilmasligi bilan izohlash mumkin. Ammo har bir maqola uchun o'rtacha reytingning pasayishi tushunarsizroq. Tuyg'u shundaki, o'quvchilar yo juda ko'p maqolalarni ko'rib chiqishga vaqtlari yo'q yoki reytinglarga e'tibor bermaydilar. Muallifni mukofotlash dasturi nuqtai nazaridan, bu tendentsiya juda yoqimsiz.

Aytgancha, bu 2018 yilda sodir bo'lmadi va jadval ko'proq yoki kamroq.

Habrastatistika: Xabr geektimessiz qanday yashaydi

Umuman olganda, resurs egalari haqida o'ylash kerak bo'lgan narsa bor.

Ammo qayg'uli narsalar haqida gapirmaylik. Umuman olganda, biz aytishimiz mumkinki, Xabr yozda "omon qoldi" va saytdagi maqolalar soni kamaymadi.

Reyting

Endi, aslida, reyting. Unga kirganlarni tabriklayman. Yana bir bor eslatib o'tamanki, reyting norasmiy, ehtimol men nimanidir o'tkazib yubordim va agar biron bir maqola bu erda bo'lishi kerak bo'lsa, lekin unday bo'lmasa, yozing, men uni qo'lda qo'shaman. Reyting sifatida men hisoblangan ko'rsatkichlardan foydalanaman, menimcha, bu juda qiziq bo'ldi.

Ko'rishlar soni bo'yicha eng yaxshi maqolalar

Reyting va ko‘rish nisbati bo‘yicha eng sara maqolalar

Fikrlar va ko‘rish nisbati bo‘yicha eng sara maqolalar

Eng bahsli maqolalar

Reyting bo'yicha eng yaxshi maqolalar

Xatcho'plar soni bo'yicha eng yaxshi maqolalar

Xatcho‘plar va ko‘rishlar nisbati bo‘yicha yuqori

Fikrlar soni bo'yicha eng yaxshi maqolalar

Va nihoyat, oxirgisi Yoqmaganlar soni bo'yicha antitop

uf. Menda yana bir nechta qiziqarli tanlovlar bor, lekin men o'quvchilarni zeriktirmayman.

xulosa

Reytingni tuzishda men qiziq tuyulgan ikkita nuqtaga e'tibor qaratdim.

Birinchidan, yuqoridagi 60% "geektimes" janridagi maqolalar. Kelgusi yil ular kamroq bo'ladimi va pivo, kosmik, tibbiyot va boshqalar haqidagi maqolalarsiz Xabr qanday ko'rinishga ega bo'ladi, men bilmayman. Albatta, kitobxonlar nimanidir yo'qotadilar. Ko'raylikchi.

Ikkinchidan, eng yaxshi xatcho'plar kutilmaganda yuqori sifatli bo'lib chiqdi. Bu psixologik jihatdan tushunarli; o'quvchilar reytingga e'tibor bermasliklari mumkin, ammo agar maqola kerak, keyin u xatcho'plaringizga qo'shiladi. Va bu erda foydali va jiddiy maqolalarning eng katta kontsentratsiyasi. O'ylaymanki, sayt egalari, agar ular Habré-da ushbu maqola toifasini ko'paytirishni xohlasalar, xatcho'plar soni va mukofotlar dasturi o'rtasidagi bog'liqlik haqida o'ylashlari kerak.

Shunga o'xshash narsa. Umid qilamanki, bu ma'lumotli bo'ldi.

Maqolalar ro'yxati uzoq bo'lib chiqdi, ehtimol bu yaxshi tomonga. Hammaga baxtli o'qish.

Manba: www.habr.com

a Izoh qo'shish