Habrastatistics: làm thế nào Habr sống mà không có geektimes
Xin chào, Habr.
Bài viết này là sự tiếp nối hợp lý của đánh giá Những bài viết hay nhất của Habr năm 2018. Và mặc dù năm vẫn chưa kết thúc, như bạn biết đấy, vào mùa hè đã có những thay đổi trong các quy tắc, do đó, sẽ rất thú vị để xem liệu điều này có ảnh hưởng gì không.
Ngoài số liệu thống kê thực tế, xếp hạng cập nhật của các bài viết sẽ được cung cấp cũng như một số mã nguồn cho những ai quan tâm đến cách thức hoạt động của nó.
Đối với những ai quan tâm đến những gì đã xảy ra, phần tiếp theo đang bị cắt bỏ. Những người quan tâm đến việc phân tích chi tiết hơn về các phần của trang web cũng có thể xem phần tiếp theo.
Dữ liệu thô
Đánh giá này là không chính thức và tôi không có bất kỳ thông tin nội bộ nào. Như bạn có thể dễ dàng nhận thấy bằng cách nhìn vào thanh địa chỉ của trình duyệt, tất cả các bài viết trên Habré đều được đánh số liên tục. Sau đó, vấn đề về kỹ thuật, chúng tôi chỉ cần đọc tất cả các bài viết liên tiếp trong một vòng lặp (trong một luồng và có các khoảng dừng để không tải máy chủ). Bản thân các giá trị được lấy bằng một trình phân tích cú pháp đơn giản trong Python (các nguồn có sẵn đây) và được lưu trong tệp csv giống như thế này:
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
Chế biến
Để phân tích cú pháp, chúng tôi sẽ sử dụng Python, Pandas và Matplotlib. Những ai không quan tâm đến thống kê có thể bỏ qua phần này và đi thẳng vào bài viết.
Trước tiên, bạn cần tải tập dữ liệu vào bộ nhớ và chọn dữ liệu cho năm mong muốn.
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)
Hóa ra năm nay (mặc dù vẫn chưa kết thúc) tại thời điểm viết bài, đã có 12715 bài báo được xuất bản. Để so sánh, trong cả năm 2018 - 15904. Nhìn chung, rất nhiều - đây là khoảng 43 bài viết mỗi ngày (và đây chỉ là xếp hạng tích cực; tổng số bài viết được tải xuống trở nên tiêu cực hoặc bị xóa, người ta chỉ có thể đoán hoặc ước tính đại khái từ khoảng cách giữa các số nhận dạng).
Hãy chọn các trường cần thiết từ tập dữ liệu. Làm số liệu, chúng tôi sẽ sử dụng số lượt xem, nhận xét, giá trị xếp hạng và số lượng dấu trang.
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
Bây giờ dữ liệu đã được thêm vào tập dữ liệu và chúng ta có thể sử dụng nó. Hãy nhóm dữ liệu theo ngày và lấy giá trị trung bình.
Kết quả thật thú vị. Như bạn có thể thấy, Habr đã trở thành một “xúc xích” nhỏ trong suốt cả năm. Tôi không biết lý do.
Để so sánh, năm 2018 có vẻ mượt mà hơn một chút:
Nhìn chung, tôi không thấy số lượng bài viết được xuất bản trong năm 2019 trên biểu đồ giảm mạnh. Hơn nữa, ngược lại, nó dường như thậm chí còn tăng nhẹ kể từ mùa hè.
Nhưng hai biểu đồ tiếp theo làm tôi chán nản hơn một chút.
Số lượt xem trung bình trên mỗi bài viết:
Đánh giá trung bình mỗi bài viết:
Như bạn có thể thấy, số lượt xem trung bình giảm nhẹ trong suốt cả năm. Điều này có thể được giải thích là do các bài viết mới vẫn chưa được các công cụ tìm kiếm lập chỉ mục và chúng không được tìm thấy thường xuyên. Nhưng sự sụt giảm xếp hạng trung bình trên mỗi bài viết thì khó hiểu hơn. Có cảm giác là người đọc đơn giản là không có thời gian để xem qua quá nhiều bài báo hoặc không chú ý đến xếp hạng. Theo quan điểm của chương trình khen thưởng tác giả, xu hướng này rất khó chịu.
Nhân tiện, điều này đã không xảy ra vào năm 2018 và lịch trình ít nhiều đều đồng đều.
Nói chung, chủ sở hữu tài nguyên có điều gì đó để suy nghĩ.
Nhưng đừng nói về những chuyện buồn. Nhìn chung, có thể nói rằng Habr đã “sống sót” sau những thay đổi trong mùa hè khá thành công và số lượng bài viết trên trang này không hề giảm.
Đánh giá
Bây giờ, thực sự, đánh giá. Xin chúc mừng những người đã tham gia vào nó. Hãy để tôi nhắc bạn một lần nữa rằng xếp hạng là không chính thức, có thể tôi đã bỏ sót điều gì đó và nếu bài viết nào đó chắc chắn nên có ở đây, nhưng không phải vậy, hãy viết, tôi sẽ thêm nó theo cách thủ công. Để xếp hạng, tôi sử dụng các số liệu được tính toán mà tôi nghĩ hóa ra khá thú vị.
Ờ. Tôi còn một vài lựa chọn thú vị nữa nhưng sẽ không làm độc giả nhàm chán.
Kết luận
Khi xây dựng xếp hạng, tôi chú ý đến hai điểm có vẻ thú vị.
Thứ nhất, 60% trong số top là các bài viết thuộc thể loại “geektimes”. Liệu năm tới có ít chúng hơn hay không và Habr sẽ trông như thế nào nếu không có các bài viết về bia, không gian, y học, v.v., tôi không biết. Chắc chắn độc giả sẽ mất đi điều gì đó. Hãy xem nào.
Thứ hai, các dấu trang hàng đầu hóa ra lại có chất lượng cao đến không ngờ. Điều này có thể hiểu được về mặt tâm lý; người đọc có thể không chú ý đến đánh giá, nhưng nếu bài viết là cần thiết, sau đó nó sẽ được thêm vào dấu trang của bạn. Và đây chính xác là nơi tập trung nhiều nhất các bài viết hữu ích và nghiêm túc. Tôi nghĩ chủ sở hữu trang web bằng cách nào đó nên suy nghĩ về mối liên hệ giữa số lượng dấu trang và chương trình phần thưởng nếu họ muốn tăng danh mục bài viết cụ thể này ở đây trên Habré.
Một cái gì đó như thế này. Tôi hy vọng nó có nhiều thông tin.
Danh sách các bài viết hóa ra rất dài, có lẽ như vậy sẽ tốt hơn. Chúc mọi người đọc vui vẻ.