Получить наиболее часто встречающиеся строковые значения? - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть набор данных с игроками NBA по матчам, и я хочу знать, есть ли способ получить статистический эквивалент mode , который обычно используется для непрерывных значений, но для получения наиболее часто встречающейся строкизначения?

    t1_start1           t1_start2          t1_start3       t1_start4    t1_start5   team1
0   Shaquille O'Neal    Kobe Bryant         Horace Grant    Ron Harper  Rick Fox    LAL
1   Shaquille O'Neal    Kobe Bryant         Horace Grant    Ron Harper  Rick Fox    LAL
2   Kobe Bryant         Shaquille O'Neal    Horace Grant    Ron Harper  Brian Shaw  LAL
3   Kobe Bryant         Shaquille O'Neal    Horace Grant    Brian Shaw  Ron Harper  LAL
4   Kobe Bryant         Shaquille O'Neal    Horace Grant    Ron Harper  Brian Shaw  LAL
5   LeBron James        Brandon Ingram      Kyle Kuzma      JaVale McGeeLonzo  Ball  LAL

Независимо от того, какие у игрока старты (t1_start1 | t1_start2 | t1_start3 | ... ), как мне получить 5 самых популярных игроков за последние 3 ряда, сгруппированных по столбцу 'team1'?

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Вы можете использовать np.unique() с return_counts=True и np.argsort():

players, starts = np.unique(df[['t1_start1','t1_start2','t1_start3','t1_start4','t1_start5']].values, return_counts=True)

players[np.argsort(-starts)][:5]

Возвращает:

['Horace Grant' 'Kobe Bryant' 'Ron Harper' "Shaquille O'Neal" 'Brian Shaw']
0 голосов
/ 03 декабря 2018
flat_list = df.loc[[0:3]].values.flatten() # first 3 rows flattened to a 1d list
print(scipy.stats.mode(flat_list).mode) # the most common element in that list

если вам нужно более одного значения, вы можете использовать collection.Counter

most_common_5 = collection.Counter(flat_list).most_common(5)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...