Habrastatistics: ki jan Habr viv san geektimes

Hey Habr.

Atik sa a se yon kontinyasyon lojik nan evalyasyon an Pi bon atik Habr pou 2018. Ak byenke ane a pa fini ankò, kòm ou konnen, nan sezon lete an te gen chanjman nan règ yo, kòmsadwa, li te vin enteresan yo wè si sa a afekte anyen.

Habrastatistics: ki jan Habr viv san geektimes

Anplis estatistik aktyèl yo, yo pral bay yon evalyasyon mete ajou nan atik yo, ansanm ak kèk kòd sous pou moun ki enterese nan fason li fonksyone.

Pou moun ki enterese nan sa ki te pase, kontinyasyon an se anba koupe a. Moun ki enterese nan yon analiz pi detaye sou seksyon nan sit la ka gade tou pwochen pati.

Done kri

Rating sa a pa ofisyèl, epi mwen pa gen okenn enfòmasyon inisye. Kòm ou ka fasilman wè lè w gade ba adrès navigatè w la, tout atik sou Habré gen nimewote kontinyèl. Lè sa a, se yon kesyon de teknik, nou tou senpleman li tout atik yo nan yon ranje nan yon sik (nan yon sèl fil ak ak poz, se konsa yo pa chaje sèvè a). Valè yo tèt yo te jwenn pa yon analizeur senp nan Python (sous yo disponib isit la) epi sove nan yon dosye csv yon bagay tankou sa a:

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

Pou analiz nou pral sèvi ak Python, Pandas ak Matplotlib. Moun ki pa enterese nan estatistik yo ka sote pati sa a epi ale tou dwat nan atik yo.

Premye ou bezwen chaje dataset la nan memwa epi chwazi done pou ane a vle.

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)

Li sanble ke ane sa a (byenke li poko fini) nan moman sa a nan ekri a, 12715 atik yo te pibliye. Pou konparezon, pou tout ane 2018 - 15904. An jeneral, yon anpil - sa a se sou 43 atik pou chak jou (e sa a se sèlman ak yon evalyasyon pozitif; konbyen atik total telechaje ki ale negatif oswa yo te efase, yon moun ka sèlman devine oswa apeprè estime nan twou vid ki genyen nan mitan idantifyan).

Ann chwazi jaden ki nesesè yo nan dataset la. Kòm mezi nou pral sèvi ak kantite opinyon, kòmantè, valè evalyasyon ak kantite signets.

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

Koulye a, done yo te ajoute nan dataset la epi nou ka itilize li. Ann gwoupe done yo pa jou epi pran valè mwayèn yo.

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

Koulye a, pati ki enteresan an se ke nou ka gade nan graf yo.

Ann gade kantite piblikasyon sou Habré an 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()

Rezilta a enteresan. Kòm ou ka wè, Habr te yon ti "sosis" pandan tout ane a. Mwen pa konnen rezon an.

Habrastatistics: ki jan Habr viv san geektimes

Pou konparezon, 2018 sanble yon ti kras douser:

Habrastatistics: ki jan Habr viv san geektimes

An jeneral, mwen pa t wè okenn diminisyon drastik nan kantite atik ki te pibliye an 2019 sou graf la. Anplis, okontrè, li sanble yo te menm ogmante yon ti kras depi ete a.

Men, de pwochen graf yo deprime m 'yon ti kras plis.

Mwayèn kantite opinyon pou chak atik:

Habrastatistics: ki jan Habr viv san geektimes

Evalyasyon mwayèn pou chak atik:

Habrastatistics: ki jan Habr viv san geektimes

Kòm ou ka wè, kantite mwayèn opinyon diminye yon ti kras pandan tout ane a. Sa a ka eksplike pa lefèt ke nouvo atik pa gen ankò yo te endis pa motè rechèch, epi yo pa jwenn yo souvan. Men, n bès nan Rating mwayèn pou chak atik se pi plis enkonpreyansib. Santiman an se ke lektè swa tou senpleman pa gen tan gade nan anpil atik oswa pa peye atansyon sou evalyasyon yo. Soti nan pwen de vi nan pwogram nan rekonpans otè, tandans sa a se trè dezagreyab.

By wout la, sa a pa t 'rive nan 2018, ak orè a se plis oswa mwens menm.

Habrastatistics: ki jan Habr viv san geektimes

An jeneral, mèt resous yo gen yon bagay pou panse apwopo yo.

Men, ann pa pale de bagay ki tris. An jeneral, nou ka di ke Habr "siviv" chanjman ete yo byen avèk siksè, ak kantite atik sou sit la pa t diminye.

Rating

Koulye a, aktyèlman, evalyasyon an. Felisitasyon pou moun ki te antre ladann. Kite m fè w sonje yon lòt fwa ankò ke evalyasyon an pa ofisyèl, petèt mwen rate yon bagay, epi si kèk atik definitivman ta dwe isit la, men li pa, ekri, mwen pral ajoute li manyèlman. Kòm yon evalyasyon, mwen itilize mezi kalkile, ki mwen panse yo te tounen soti yo dwe byen enteresan.

Top atik pa kantite opinyon

Top atik pa rapò evalyasyon ak opinyon

Top atik pa kòmantè yo rapò opinyon

Top atik ki pi kontwovèsyal

Top atik pa evalyasyon

Top atik pa kantite signets

Top pa rapò de signets pou vues

Top atik pa kantite kòmantè

Epi finalman, dènye a Antitop pa kantite pa renmen

Ugh. Mwen gen kèk seleksyon plis enteresan, men mwen pa pral anwiye lektè yo.

Konklizyon

Lè konstwi evalyasyon an, mwen te peye atansyon sou de pwen ki te sanble enteresan.

Premyèman, 60% nan tèt yo se atik nan "geektimes" genre la. Si pral gen mwens nan yo ane pwochèn, ak ki sa Habr pral sanble san atik sou byè, espas, medikaman, elatriye, mwen pa konnen. Definitivman, lektè yo pral pèdi yon bagay. Ann wè.

Dezyèmman, Bookmarks tèt yo te tounen soti nan bon jan kalite san atann segondè. Sa a se sikolojikman konprann; lektè pa ka peye atansyon sou Rating a, men si atik la bezwen, Lè sa a, li pral ajoute nan Bookmarks ou yo. Ak isit la se jisteman konsantrasyon nan pi gwo nan atik itil ak grav. Mwen panse ke pwopriyetè sit yo ta dwe yon jan kanmenm panse nan koneksyon ki genyen ant kantite signets ak pwogram nan rekonpans si yo vle ogmante kategori patikilye sa a nan atik isit la sou Habré.

Yon bagay tankou sa a. Mwen espere ke li te enfòmatif.

Lis la nan atik yo te tounen soti yo dwe long, byen, li la pwobableman pou pi bon an. Bon lekti tout moun.

Sous: www.habr.com

Add nouvo kòmantè