Habrastatistics: carane Habr urip tanpa geektimes

Hey Habr.

Artikel iki minangka tutugan logis saka rating Artikel Habr paling apik kanggo 2018. Lan sanajan taun durung rampung, kaya sing sampeyan ngerteni, ing musim panas ana owah-owahan ing aturan kasebut, mula dadi menarik kanggo ndeleng yen kena pengaruh apa-apa.

Habrastatistics: carane Habr urip tanpa geektimes

Saliyane statistik nyata, rating artikel sing dianyari bakal diwenehake, uga sawetara kode sumber kanggo wong sing kepengin weruh cara kerjane.

Kanggo sing kasengsem ing apa kedaden, tutugan ing ngisor Cut. Wong-wong sing kasengsem ing analisis luwih rinci saka bagean situs uga bisa katon bagean sabanjure.

Data sumber

Rating iki ora resmi, lan aku ora duwe informasi njero. Kaya sing bisa dideleng kanthi gampang kanthi ndeleng bar alamat browser sampeyan, kabeh artikel ing Habré duwe nomer terus-terusan. Banjur bab teknik, kita mung maca kabeh artikel ing saurutan ing siklus (ing siji thread lan ngaso, supaya ora mbukak server). Nilai kasebut dhewe dipikolehi dening parser prasaja ing Python (sumber kasedhiya kene) lan disimpen ing file csv kaya iki:

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

Processing

Kanggo parsing kita bakal nggunakake Python, Pandas lan Matplotlib. Sing ora kasengsem ing statistik bisa ngliwati bagean iki lan langsung menyang artikel.

Pisanan sampeyan kudu mbukak dataset menyang memori lan pilih data kanggo taun sing dikarepake.

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)

Pranyata ing taun iki (sanajan durung rampung) nalika nulis, 12715 artikel wis diterbitake. Kanggo mbandhingake, kanggo kabeh 2018 ana 15904 43. Umumé, cukup akeh - kira-kira XNUMX artikel saben dina (lan iki mung kanthi rating positif; pira total artikel sing diundhuh sing dadi negatif utawa dibusak, siji bisa mung guess utawa kira-kira ngira saka kesenjangan antarane pengenal).

Ayo pilih kolom sing dibutuhake saka dataset. Minangka metrik, kita bakal nggunakake jumlah tampilan, komentar, nilai rating lan jumlah tetenger.

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

Saiki data wis ditambahake menyang dataset lan kita bisa nggunakake. Ayo klompok data miturut dina lan njupuk 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()

Saiki sing menarik yaiku kita bisa ndeleng grafik.

Ayo ndeleng jumlah publikasi ing Habré ing taun 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()

Asil menarik. Nalika sampeyan bisa ndeleng, Habr wis sethitik "sosis" saindhenging taun. Aku ora ngerti sebabe.

Habrastatistics: carane Habr urip tanpa geektimes

Kanggo mbandhingake, 2018 katon luwih lancar:

Habrastatistics: carane Habr urip tanpa geektimes

Umumé, aku ora weruh penurunan drastis ing jumlah artikel sing diterbitake ing 2019 ing grafik. Menapa malih, ing nalisir, misale jek wis tambah rada wiwit mangsa panas.

Nanging rong grafik sabanjure nyuda aku.

Jumlah rata-rata tampilan saben artikel:

Habrastatistics: carane Habr urip tanpa geektimes

Rating rata-rata saben artikel:

Habrastatistics: carane Habr urip tanpa geektimes

Kaya sing sampeyan ngerteni, jumlah tampilan rata-rata rada mudhun ing saindhenging taun. Iki bisa diterangake kanthi kasunyatan manawa artikel anyar durung diindeks dening mesin telusur, lan ora asring ditemokake. Nanging penurunan rating rata-rata saben artikel luwih ora bisa dingerteni. Perasaan manawa para pamaca ora duwe wektu kanggo ndeleng akeh artikel utawa ora nggatekake rating kasebut. Saka sudut pandang program ganjaran penulis, gaya iki ora nyenengake.

Miturut cara, iki ora kelakon ing 2018, lan jadwal luwih utawa kurang malah.

Habrastatistics: carane Habr urip tanpa geektimes

Umumé, pamilik sumber daya kudu dipikirake.

Nanging aja nganti ngomong babagan sing sedhih. Umumé, kita bisa ngomong yen Habr "slamet" owah-owahan musim panas cukup sukses, lan jumlah artikel ing situs ora suda.

Rating

Saiki, bener, rating. Sugeng rawuh sing melu. Ayo kula ngelingake maneh yen rating ora resmi, bisa uga aku ora kejawab, lan yen sawetara artikel mesthi ana ing kene, nanging ora, nulis, aku bakal nambah kanthi manual. Minangka rating, aku nggunakake metrik sing diwilang, sing dakkira dadi cukup menarik.

Artikel paling ndhuwur miturut jumlah tampilan

Artikel paling ndhuwur miturut rating kanggo rasio tampilan

Artikel paling ndhuwur miturut rasio komentar kanggo tampilan

Artikel paling kontroversial ing ndhuwur

Artikel paling ndhuwur miturut rating

Artikel paling ndhuwur miturut nomer tetenger

Ndhuwur kanthi rasio tetenger kanggo tampilan

Artikel paling ndhuwur miturut jumlah komentar

Lan pungkasane, sing pungkasan Antitop miturut nomer ora seneng

Ugh. Aku duwe sawetara pilihan liyane menarik, nanging aku ora bakal bosen nonton.

kesimpulan

Nalika mbangun rating, aku menehi perhatian marang rong poin sing katon menarik.

Kaping pisanan, 60% saka ndhuwur minangka artikel saka genre "geektimes". Apa bakal luwih sithik taun ngarep, lan apa Habr bakal katon tanpa artikel babagan bir, papan, obat, lan liya-liyane, aku ora ngerti. Mesthine, sing maca bakal kelangan apa-apa. Ayo ndeleng.

Kapindho, tetenger ndhuwur dadi kualitas sing ora disangka-sangka. Iki bisa dingerteni sacara psikologis; sing maca bisa uga ora menehi perhatian marang rating, nanging yen artikel kasebut butuh, banjur bakal ditambahake menyang tetenger sampeyan. Lan ing kene persis konsentrasi artikel sing migunani lan serius. Aku sing nduweni situs kudu piye wae mikir liwat sambungan antarane nomer tetenger lan program ganjaran yen padha pengin nambah kategori tartamtu saka artikel kene ing Habré.

Mergo iki. Mugi iku informatif.

Dhaptar artikel dadi dawa, mesthine luwih apik. Sugeng maca kabeh.

Source: www.habr.com

Add a comment