Python: как работать с поддеревьями или подсписками (списки списков) - PullRequest
0 голосов
/ 14 мая 2019

Я строю некоторый простой код (все еще ученик-новичок), который на основе некоторых переходов строит статистическое дерево.

Код, который я написал до сих пор, следующий:

#each row reflects a specific user
#first row reflects a user that transitions from 1 to 2 to 3 to 4 and 5

smallData=pd.DataFrame(np.array([[1,2,3,4,5],[4,5,6,7,8],[1,2,3,3,3],[1,2,2,3,3],[1,2,3,5,3]]),columns=range(0,5))
inputs=[1,2]

def nextStep(inputs): # 
    i=len(inputs)
    pickedRows= smallData.loc[(smallData.iloc[:,0:i] == inputs).agg(all, axis=1)]
    nextTransitions=pickedRows.loc[:,i].value_counts(normalize=True)
    slicedTable=pickedRows.loc[:,i+1:]
    return nextTransitions,slicedTable

nextStep([1,2])
Out[272]: 
(3    0.75
 2    0.25
 Name: 2, dtype: float64,    3  4
 0  4  5
 2  3  3
 3  3  3
 4  5  3)

Что делает следующий шаг, так это вводит здесь переходы 1,2.

A. Находит все строки, которые начинаются с 1,2

B. рассчитывает следующие переходы с процентами. В примере 3 с 75% и 2 с 25%

C. возвращает в качестве результата таблицу, которая включает в себя все переходы последующих последовательностей.

Какая будет структура в python для хранения таких переходов, (ветви и их листья). Является ли подсписки списков наилучшим способом реализации этого или pandas data frame следует использовать.

Я думаю, что код, который я написал выше, должен выполняться рекурсивно, пока вся таблица не будет посещена, и все ветви не будут построены. Как бы вы сохранили промежуточные результаты из функции nextStep?

Я хотел бы поблагодарить вас за ваш ответ. С уважением Alex

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