Habrastatistics: Habr ใช้ชีวิตอย่างไรโดยปราศจาก geektimes

เฮ้ ฮาเบอร์.

บทความนี้เป็นความต่อเนื่องของการให้คะแนนเชิงตรรกะ บทความ Habr ที่ดีที่สุดสำหรับปี 2018. และถึงแม้ว่าปีนี้จะยังไม่จบ แต่อย่างที่ทราบกันดีว่าในฤดูร้อนมีการเปลี่ยนแปลงกฎเกณฑ์ต่างๆ ดังนั้นจึงเป็นเรื่องน่าสนใจที่จะดูว่าสิ่งนี้มีผลกระทบต่อสิ่งใดหรือไม่

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

ตอนนี้ส่วนที่น่าสนใจคือเราสามารถดูกราฟได้

มาดูจำนวนสิ่งพิมพ์ของHabréในปี 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()

ผลลัพธ์ที่ได้ก็น่าสนใจ อย่างที่คุณเห็น Habr เป็นเพียง "ไส้กรอก" เล็กน้อยตลอดทั้งปี ฉันไม่ทราบเหตุผล

Habrastatistics: Habr ใช้ชีวิตอย่างไรโดยปราศจาก geektimes

สำหรับการเปรียบเทียบ ปี 2018 ดูราบรื่นกว่าเล็กน้อย:

Habrastatistics: Habr ใช้ชีวิตอย่างไรโดยปราศจาก geektimes

โดยทั่วไป ฉันไม่เห็นจำนวนบทความที่ตีพิมพ์ในปี 2019 บนกราฟลดลงอย่างมาก ยิ่งไปกว่านั้น ในทางกลับกัน ดูเหมือนว่าจะเพิ่มขึ้นเล็กน้อยตั้งแต่ช่วงฤดูร้อน

แต่กราฟสองกราฟถัดไปทำให้ฉันหดหู่มากขึ้นอีกเล็กน้อย

จำนวนการดูเฉลี่ยต่อบทความ:

Habrastatistics: Habr ใช้ชีวิตอย่างไรโดยปราศจาก geektimes

คะแนนเฉลี่ยต่อบทความ:

Habrastatistics: Habr ใช้ชีวิตอย่างไรโดยปราศจาก geektimes

อย่างที่คุณเห็น จำนวนการดูโดยเฉลี่ยลดลงเล็กน้อยตลอดทั้งปี สิ่งนี้สามารถอธิบายได้ด้วยความจริงที่ว่าบทความใหม่ยังไม่ได้รับการจัดทำดัชนีโดยเครื่องมือค้นหาและไม่พบบ่อยนัก แต่การลดลงของคะแนนเฉลี่ยต่อบทความนั้นไม่สามารถเข้าใจได้ง่ายกว่า ความรู้สึกก็คือผู้อ่านไม่มีเวลาดูบทความมากมายหรือไม่สนใจเรตติ้ง จากมุมมองของโปรแกรมรางวัลผู้เขียน แนวโน้มนี้ไม่เป็นที่พอใจมาก

อย่างไรก็ตาม สิ่งนี้ไม่ได้เกิดขึ้นในปี 2018 และกำหนดการไม่มากก็น้อย

Habrastatistics: Habr ใช้ชีวิตอย่างไรโดยปราศจาก geektimes

โดยทั่วไป เจ้าของทรัพยากรมีบางอย่างที่ต้องคำนึงถึง

แต่อย่าพูดถึงเรื่องเศร้าเลย โดยทั่วไปเราสามารถพูดได้ว่า Habr “รอด” การเปลี่ยนแปลงในฤดูร้อนได้ค่อนข้างประสบความสำเร็จและจำนวนบทความบนเว็บไซต์ก็ไม่ลดลง

คะแนน

ตอนนี้เรตติ้งจริงๆ ขอแสดงความยินดีกับผู้ที่ได้เข้าไป ฉันขอเตือนคุณอีกครั้งว่าการให้คะแนนนั้นไม่เป็นทางการบางทีฉันอาจพลาดบางสิ่งบางอย่างไปและหากมีบทความใดที่ควรอยู่ที่นี่อย่างแน่นอน แต่ไม่ใช่เขียนฉันจะเพิ่มด้วยตนเอง ในการให้คะแนน ฉันใช้เมตริกที่คำนวณแล้ว ซึ่งฉันคิดว่าน่าสนใจทีเดียว

บทความยอดนิยมตามจำนวนการดู

บทความยอดนิยมตามอัตราส่วนการให้คะแนนต่อการดู

บทความยอดนิยมตามอัตราส่วนความคิดเห็นต่อการดู

สุดยอดบทความที่มีการถกเถียงกันมากที่สุด

บทความยอดนิยมตามการให้คะแนน

บทความยอดนิยมตามจำนวนบุ๊กมาร์ก

ด้านบนตามอัตราส่วนของบุ๊กมาร์กต่อการดู

บทความยอดนิยมตามจำนวนความคิดเห็น

และสุดท้ายอันสุดท้าย Antitop ตามจำนวนสิ่งที่ไม่ชอบ

ฮึ. ฉันมีตัวเลือกที่น่าสนใจอีกสองสามรายการ แต่ฉันจะไม่ทำให้ผู้อ่านเบื่อ

ข้อสรุป

เมื่อสร้างการให้คะแนน ฉันให้ความสนใจกับสองประเด็นที่ดูน่าสนใจ

ประการแรก 60% ของบทความยอดนิยมเป็นบทความประเภท "geektimes" ไม่ว่าในปีหน้าจะมีน้อยลงหรือไม่ และ Habr จะเป็นอย่างไรหากไม่มีบทความเกี่ยวกับเบียร์ อวกาศ ยา ฯลฯ ฉันไม่รู้ แน่นอนผู้อ่านจะต้องสูญเสียบางสิ่งบางอย่าง มาดูกัน.

ประการที่สอง บุ๊กมาร์กยอดนิยมมีคุณภาพสูงอย่างไม่คาดคิด นี่เป็นสิ่งที่เข้าใจได้ทางจิตวิทยา ผู้อ่านอาจไม่สนใจเรตติ้ง แต่ถ้าเป็นบทความ จำเป็นต้องจากนั้นจะถูกเพิ่มลงในบุ๊กมาร์กของคุณ และนี่คือบทความที่มีประโยชน์และจริงจังที่มีความเข้มข้นมากที่สุด ฉันคิดว่าเจ้าของไซต์ควรคิดถึงความสัมพันธ์ระหว่างจำนวนบุ๊กมาร์กและโปรแกรมรางวัลหากพวกเขาต้องการเพิ่มหมวดหมู่บทความเฉพาะนี้ในHabré

บางอย่างเช่นนี้ ฉันหวังว่ามันจะเป็นข้อมูล

รายชื่อบทความยาวไป น่าจะดีกว่านี้ ขอให้ทุกคนอ่านอย่างมีความสุข

ที่มา: will.com

เพิ่มความคิดเห็น