Как рассчитать частоту перекрытия между двумя столбцами и построить сводную таблицу для построения тепловой карты (Python)? - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть два столбца, например

data= {'country':['China', 'China', 'France', 'Italy', 'France'], 'domain': ['abc.com', 'def.com', 'abc.com', 'fga.com', 'exo.com']}
df=pd.DataFrame(data)

Как рассчитать частоту совпадений (сгруппировать по странам и рассчитать количество доменов в каждой стране)? Ожидается, что будет сформирована сводная таблица для построения тепловой карты, чтобы мы могли видеть перекрытие между каждой страной.

В этом примере перекрытие между Китаем и Францией имеет 1 перекрывающийся домен, который является abc. com, а общий набор юниверсов между двумя странами равен 3 (abc.com, def.com и exo.com). Таким образом, коэффициент совпадения между двумя странами составляет 1/3. Его просят рассчитать все частоты перекрытия во всех странах.

cn= ['abc.com', 'def.com']
fr= ['abc.com', 'def.com', 'exo.com']
setA = set(cn)
setB = set(fr)

overlap = setA & setB
universe = setA | setB
result = float(len(overlap)) / len(universe)

Существуют тысячи доменов и около 15 стран. Следовательно, более эффективно использовать цикл for, который мне не подходит.

Спасибо.

...