Хабрастатистик: Хабр хэрхэн geektimesгүйгээр амьдардаг

Хөөе Хабр.

Энэ нийтлэл нь үнэлгээний логик үргэлжлэл юм 2018 оны шилдэг Habr нийтлэлүүд. Хэдийгээр он хараахан дуусаагүй байгаа ч та бүхний мэдэж байгаагаар зун дүрэмд өөрчлөлт орсон боловч энэ нь ямар нэгэн зүйл нөлөөлсөн эсэхийг харах сонирхолтой болсон.

Хабрастатистик: Хабр хэрхэн geektimesгүйгээр амьдардаг

Бодит статистик мэдээллээс гадна нийтлэлүүдийн шинэчилсэн үнэлгээ, мөн хэрхэн ажилладагийг сонирхож буй хүмүүст зориулсан эх кодыг өгөх болно.

Юу болсныг сонирхож буй хүмүүсийн хувьд үргэлжлэл нь тасалдсан байна. Сайтын хэсгүүдэд илүү нарийвчилсан дүн шинжилгээ хийхийг сонирхож буй хүмүүс бас харж болно дараагийн хэсэг.

Эхний өгөгдөл

Энэ үнэлгээ нь албан бус бөгөөд надад дотоод мэдээлэл байхгүй. Хөтөчийнхөө хаягийн мөрийг харвал Habré дээрх бүх нийтлэл тасралтгүй дугаарлагдсан байдаг. Дараа нь энэ бол техникийн асуудал, бид зүгээр л бүх нийтлэлийг нэг циклээр дараалан уншдаг (серверийг ачаалахгүйн тулд нэг урсгалаар, түр зогсолттой). Утгыг Python дээр энгийн задлан шинжлэгчээр олж авсан (эх сурвалжууд байдаг энд) болон csv файлд дараах байдлаар хадгалагдсан:

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

Боловсруулалт

Шинжилгээ хийхийн тулд бид Python, Pandas, Matplotlib зэргийг ашиглана. Статистик сонирхдоггүй хүмүүс энэ хэсгийг алгасаад шууд нийтлэл рүүгээ орж болно.

Эхлээд та өгөгдлийн багцыг санах ойд ачаалж, хүссэн жилийнхээ өгөгдлийг сонгох хэрэгтэй.

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)

Энэ жил (хэдийгээр дуусаагүй байгаа ч) бичиж байх үед 12715 нийтлэл хэвлэгдсэн байна. Харьцуулбал, 2018 оныг бүхэлд нь - 15904. Ерөнхийдөө маш их - энэ нь өдөрт 43 орчим нийтлэл (мөн энэ нь зөвхөн эерэг үнэлгээтэй; нийт хичнээн нийтлэл сөрөг эсвэл устгагдсаныг тааж болно. эсвэл тодорхойлогчдын хоорондын зайнаас ойролцоогоор тооцоолно).

Мэдээллийн багцаас шаардлагатай талбаруудыг сонгоцгооё. Хэмжилтийн хувьд бид үзсэн тоо, сэтгэгдэл, үнэлгээний утга, хавчуургын тоог ашиглана.

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

Одоо өгөгдлийг өгөгдлийн багцад нэмсэн бөгөөд бид үүнийг ашиглах боломжтой. Өгөгдлийг өдрөөр нь бүлэглээд дундаж утгыг авъя.

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

Одоо сонирхолтой хэсэг нь бид графикуудыг харж болно.

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

Үр дүн нь сонирхолтой юм. Таны харж байгаагаар Хабр жилийн турш бага зэрэг "хиам" байсан. Би учрыг нь мэдэхгүй байна.

Хабрастатистик: Хабр хэрхэн geektimesгүйгээр амьдардаг

Харьцуулбал 2018 он арай зөөлөн харагдаж байна:

Хабрастатистик: Хабр хэрхэн geektimesгүйгээр амьдардаг

Ерөнхийдөө график дээр 2019 онд нийтлэгдсэн нийтлэлийн тоо эрс буурсаныг би хараагүй. Түүгээр ч барахгүй харин ч эсрэгээрээ зунаас хойш бага зэрэг нэмэгдсэн бололтой.

Гэхдээ дараагийн хоёр график намайг бага зэрэг гутарч байна.

Нэг нийтлэлийг үзсэн дундаж тоо:

Хабрастатистик: Хабр хэрхэн geektimesгүйгээр амьдардаг

Нийтлэл бүрийн дундаж үнэлгээ:

Хабрастатистик: Хабр хэрхэн geektimesгүйгээр амьдардаг

Таны харж байгаагаар жилийн турш үзсэн хүмүүсийн дундаж тоо бага зэрэг буурч байна. Энэ нь шинэ нийтлэлүүдийг хайлтын системээр хараахан индексжүүлээгүй, тийм ч олон олдохгүй байгаатай холбон тайлбарлаж болно. Гэхдээ нэг нийтлэлийн дундаж үнэлгээ буурсан нь илүү ойлгомжгүй юм. Уншигчид зүгээр л ийм олон нийтлэл үзэх цаг байхгүй эсвэл үнэлгээнд анхаарлаа хандуулдаггүй гэсэн мэдрэмж төрж байна. Зохиогчийн шагналын хөтөлбөрийн үүднээс авч үзвэл энэ хандлага нь маш тааламжгүй юм.

Дашрамд хэлэхэд, энэ нь 2018 онд тохиолдоогүй бөгөөд хуваарь нь их бага хэмжээгээр жигд байна.

Хабрастатистик: Хабр хэрхэн geektimesгүйгээр амьдардаг

Ер нь нөөцийн эздэд бодох зүйл бий.

Гэхдээ гунигтай зүйлийн талаар ярихаа больё. Ерөнхийдөө Хабр зуны улиралд нэлээд амжилттай өөрчлөгдөж, сайт дээрх нийтлэлүүдийн тоо буураагүй гэж бид хэлж чадна.

Үнэлгээ

Одоо үнэндээ үнэлгээ. Үүнд орсон хүмүүст баяр хүргэе. Үнэлгээ нь албан бус гэдгийг дахин сануулъя, магадгүй би ямар нэг зүйлийг алдсан байх, хэрэв энд ямар нэгэн нийтлэл байх ёстой, гэхдээ тийм биш бол бичээрэй, би гараар нэмэх болно. Үнэлгээний хувьд би тооцоолсон хэмжигдэхүүнийг ашигладаг бөгөөд энэ нь нэлээд сонирхолтой болсон гэж бодож байна.

Үзсэн тоогоор шилдэг нийтлэлүүд

Үзэлтийн харьцаагаар шилдэг нийтлэлүүд

Шилдэг нийтлэлүүдийг сэтгэгдэл, үзэлтийн харьцаа

Хамгийн их маргаантай нийтлэлүүд

Үнэлгээгээр шилдэг нийтлэлүүд

Хавчуурганы тоогоор шилдэг нийтлэлүүд

Хавчуурга болон үзэлтийн харьцаагаар тэргүүлнэ

Сэтгэгдлийн тоогоор шилдэг нийтлэлүүд

Тэгээд эцэст нь, сүүлчийнх нь Дургүй тоогоор нь эсрэг

Өө. Надад хэд хэдэн сонирхолтой сонголт байгаа ч би уншигчдыг уйдаахгүй.

дүгнэлт

Үнэлгээг гаргахдаа сонирхолтой санагдсан хоёр зүйлд анхаарлаа хандуулсан.

Нэгдүгээрт, шилдэг нийтлэлүүдийн 60% нь "geektimes" жанрын нийтлэлүүд юм. Ирэх жил тэд цөөхөн байх болов уу, шар айраг, сансар огторгуй, эм гэх мэт нийтлэлгүйгээр Хабр ямар харагдахыг би мэдэхгүй. Уншигчид ямар нэг зүйлийг алдах нь гарцаагүй. Харцгаая.

Хоёрдугаарт, дээд хавчуурга нь санаанд оромгүй өндөр чанартай болсон. Энэ нь сэтгэл зүйн хувьд ойлгомжтой, уншигчид үнэлгээнд анхаарлаа хандуулахгүй байж магадгүй, гэхдээ нийтлэл бол хэрэгцээ, дараа нь энэ нь таны хавчуургад нэмэгдэх болно. Ашигтай, ноцтой нийтлэлүүдийн хамгийн их төвлөрөл энд байна. Сайтын эзэд Хабре дээрх нийтлэлийн тодорхой ангиллыг нэмэгдүүлэхийг хүсч байвал хавчуургын тоо болон урамшууллын хөтөлбөрийн хоорондын уялдаа холбоог ямар нэгэн байдлаар бодох хэрэгтэй гэж би бодож байна.

Энэ нь иймэрхүү зүйл. Энэ нь мэдээлэлтэй байсан гэж найдаж байна.

Өгүүллийн жагсаалт урт болсон, энэ нь магадгүй илүү сайн байх болно. Бүгдэд нь сайхан уншаарай.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх