Как мне найти частоту авторов и построить это с помощью Python? - PullRequest
0 голосов
/ 23 ноября 2018

Здесь ABC news наблюдается 5 раз, но столбец Times отражает его как 1 для каждой строки.Ожидаемый результат - ABC news один раз в каждой строке, но общее число в Times равно 5, поскольку ABC опубликовала в общей сложности 5 названий.

Так что, пока график Author находится на оси X, а связанный Times он был опубликован, он находится на оси Y.

Код для приведенного ниже кадра данных, который необходимо изменить, как указано выше:

a=df1.groupby(['author','title'])['title'].count().reset_index(name="Time")
a.head()



    author                    title                               Time
0   ABC News    WATCH: How to get the most bang for your buck ...   1
1   ABC News    WATCH: Man who confessed to killing wife, chil...   1
2   ABC News    WATCH: Nearly 1,000 still missing 11 days afte...   1
3   ABC News    WATCH: Teen hockey player skates after brain i...   1
4   ABC News    WATCH: Trump: Will not do in-person interview ...   1
5   Ali Dukakis and Mike Levine     Mueller  'has no eff...         1

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Проблема в том, что вы группируете по заголовку, если хотите группировать только по автору.Удалить заголовок из группы.

0 голосов
/ 23 ноября 2018

Ниже следует обновить ваш столбец Times соответствующими номерами.Вы можете объявить цикл внутри функции для последующего повторного использования.

import pandas as pd

df = pd.DataFrame( data=[['ABC News','WATCH: How to get the most bang for your buck...','1'], ['ABC News','WATCH: Man who confessed to killing wife, chil...','1'], ['ABC News','WATCH: Nearly 1,000 still missing 11 days afte...','1'], ['ABC News','WATCH: Teen hockey player skates after brain i...','1'], ['ABC News','WATCH: Trump: Will not do in-person interview ...','1'], ['Ali Dukakis and Mike Levine',"Mueller  'has no eff...",'1'] ], columns=['author','title','Times'])

word_count = dict(df['author'].value_counts())
for i,v in df["author"].iteritems():
    if v in word_count.keys():
        df.loc[i, "Times"] = word_count[v]

print(df)

Получите желаемый результат, например: enter image description here

Plotting author против Times теперь не должно быть проблемой, я считаю.Пожалуйста, примите ответ, если он соответствует вашим требованиям, или, пожалуйста, дайте мне знать, если он не работает для вас.

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