Как я могу посчитать функции, которые идут парами

#python #excel

Вопрос:

Мой набор данных выглядит следующим образом: (f обозначает функции, ID обозначает клиентов)

1

Я хотел бы подсчитать пары функций, которые отображаются во всех идентификаторах клиентов. Например,в приведенном выше примере, как видно,я хотел бы получить, что (f1,f2) = 3, (f2, f33)= 2, (f3, f33)=0 и так далее

Комментарии:

1. Не могли бы вы поделиться своим кодом, пожалуйста?

2. вы уверены,что (f2, f33)= 2 ? Разве это не было бы (f2,f33)= 1?

Ответ №1:

Я не уверен, понял ли я, чего вы хотите, но это мое предложение:

 import pandas as pd

counter = dict()

df = pd.read_csv("./data.csv")
# iterate over columns
for column_name in list(df.columns):
    column = list(df.loc[:,column_name])
    # iterate over column elements except last one
    for i in range(len(column)-1):
        key = (column[i], column[i 1])
        # if counter exists increment in 1
        if key in counter:
            counter[key]  = 1
        # if it does not exist start it with 1
        else:
            counter[key] = 1

print(counter)
 

Это выводит:

 {('f1', 'f2'): 3, ('f2', 'f3'): 1, ('f3', nan): 1, ('f2', 'f4'): 2, ('f4', 'f6'): 1, ('f2', 'f33'): 1, ('f33', nan): 2, ('f4', 'f33'): 1}
 

Просто на случай, если кто-то еще захочет попробовать, данные были загружены из CSV-файла, который выглядит следующим образом:

 ID1,ID2,ID3,ID4
f1,f1,f1,f2
f2,f2,f2,f4
f3,f4,f33,f33
,f6,,