работая над проектом jupyter, комментарии к сообщениям каждый час, но большинство значений комментариев не учитываются - PullRequest
0 голосов
/ 20 января 2020

https://community.dataquest.io/t/guided-project-exploring-hacker-news-posts-step-7-sorting-and-printing-values/203809

на шаге 5 предлагается создать блок кода, который будет вычислять «комментарии к сообщениям, сделанным за час» (посты с 5 по 6 получают общее количество комментариев, помещенных под 'comments at 5' с использованием 24-часового формата).

шаг 6, подсчитать среднее количество комментариев на пост для сообщений, создаваемых в течение каждого часа.

шаг 7 отображает, что выходные данные шага 6 должно быть разнообразие средних комментариев по часам:

[
 ['09', 5.5777777777777775],
 ['13', 14.741176470588234],
 ['10', 13.440677966101696],
 ['14', 13.233644859813085],
 ['16', 16.796296296296298],
 ['23', 7.985294117647059],
 ['12', 9.41095890410959],
 ['17', 11.46],
 ['15', 38.5948275862069],
 ['21', 16.009174311926607],
 ['20', 21.525],
 ['02', 23.810344827586206],
 ['18', 13.20183486238532],
 ['03', 7.796296296296297],

мой код вместо этого отображал .5 для всех средних, что поразительно неправильно.

поэтому после того, как у меня было общее количество комментариев по каждой напечатанной категории, я должен распределить 24500 комментариев, в среднем примерно 1000 комментариев в час.

, но при подсчете по часам и по почте получается в среднем пара сотен сообщений в час.

def com_count(post_section):
    total_comments = 0
    for row in post_section:
        com_count = int(row[4])
        total_comments += com_count
        avg_comments = round(total_comments / len(post_section),4)
    print(avg_comments)
    print(total_comments)
print("The average and total number of comments on Ask HN posts is:")
com_count(ask_posts)
print(lb)
print("The average and total number of comments on Show HN posts is:")
com_count(show_posts)

вывод: Среднее и общее количество комментариев к сообщениям Ask HN: 14.0315, 24485

Среднее и общее количество комментариев к сообщениям Show HN: 10.3021, 12 002

import datetime as dt
result_list = []
for row in ask_posts:    
    created_at = row[6]
    comments = int(row[4])
    result_list.append([created_at, comments])
    counts_by_hour = {}
    coms_by_hour = {}
    for row in result_list:
        dt_string= row[0]
        #m/d/yyyy 24:mm
        dt_object = dt.datetime.strptime(dt_string, '%m/%d/%Y %H:%M')
        post_hour = dt_object.strftime('%H')
        if post_hour not in counts_by_hour:
            counts_by_hour[post_hour] = 1
            coms_by_hour[post_hour] = comments
        else:
            counts_by_hour[post_hour] += 1
            coms_by_hour[post_hour] += comments
print(counts_by_hour)
print(lb)
print(coms_by_hour)

выход: {'06': 44, '18': 109, '05': 46, '11': 58, '23': 69, '21': 109, ' 09: 45, 14: 107, 20: 80, 10: 59, 08: 48, 15: 116, 13: 85, 12: 73, 02 : 58, «01»: 60, «16»: 108, «17»: 100, «07»: 34, «22»: 71, «19»: 110, «00»: 55, «03»: 54 , '04': 47}

{'06': 88, '18': 218, '05': 92, '11': 116, '23': 138, '21': 218, «09»: 90, «14»: 214, «20»: 160, «10»: 118, «08»: 96, «15»: 232, «13»: 170, «12»: 146, «02 ': 116,' 01 ': 120,' 16 ': 216,' 17 ': 200,' 07 ': 68,' 22 ': 142,' 19 ': 220,' 00 ': 110,' 03 ': 108, '04': 94}

, поэтому общее количество комментариев от coms_by_hour до 3490, из желаемых 24 485.

мои попытки решить проблему произошли в 2 часа ночи, а я нет помните, что я сделал, просто я отменил изменения обратно в текущее состояние перед тем, как закончить на ночь.

РЕШЕНИЕ: нужно было добавить "comments = row [1]" сразу после "для строки" в results_list: "

я оставлю это, если это похоже на что-то другое Опле работают над.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...