Время прочтения: 2 мин.
Визуализация с помощью графа может отобразить значительно больше информации чем простая таблица. Одной из библиотек для построения графов в языке программирования Python является networkx.
Библиотека Networkx представляет концепцию сетевых графов, которые показывают взаимосвязи между набором различных объектов. Применение технологии графов позволяет быстро построить и визуализировать набор данных, хранящихся в табличном представлении через небольшое количество строк кода.
Чтобы определить цепочки транзакций между отправителем и получателем были построены графы, состоящие из узлов и ребер. В качестве узлов, в нашем случае, были рассмотрены номера клиентов, а ребрами служили транзакции. Для начала была проведена систематизация данных так, чтобы в столбцах таблицы содержалась только необходимая информация для дальнейшего исследования.
matrix = need_transaction[['ИД пл.', 'ИД пол.']].drop_duplicates()
matrix['ИД пл.'] = matrix['ИД пл.'].apply(lambda x: x.replace(' ', ''))
matrix['ИД пол.'] = matrix['ИД пол.'].apply(lambda x: x.replace(' ', ''))
Процесс создания графа состоял из нескольких этапов:
fig = plt.figure(figsize=(40,40))
G = nx.Graph()
for i in range(matrix.shape[0]):
G.add_edge(matrix.iloc[i]['ИД пл.'], matrix.iloc[i]['ИД пол.'])
nx.draw(G, node_size=50, pos=nx.spring_layout(G), node_color='blue')
plt.draw()
Построенный граф получил следующий вид:
Для определения различных категорий клиентов, были предложены цветовые обозначения. С этой целью был создан массив для записи значений цвета, а затем использован в функции nx.draw.
color_map = []
for node in G:
if node in group_1:
color_map.append('green') #группы клиентов №1
elif node in group_2:
color_map.append('red') #группа клиентов №2
elif node in group_3:
color_map.append('blue')#группа клиентов №3
else:
color_map.append('black')
edges = G.edges()
colors=[G[u][v]['color'] for u,v in edges]
pos = nx.spring_layout(G,k=0.15,iterations=20)
nx.draw(G,pos,node_color=color_map, edges=edges, edge_color=colors)
plt.draw()
Граф с измененными цветами вершин выглядит следующим образом:
Рассмотренный пример позволил, при помощи инструмента сетевых графов, выяснить процессы взаимодействия между клиентами банка. Простым набором нескольких строк кода мы смогли отобразить таблицу с банковскими транзакциями между клиентами.
Применение инструментов библиотеки network, позволило ускорить процесс определения взаимодействий клиентов, а графическая визуализация помогла аудитору выяснить участников транзакций — получателей и отправителей денежных средств.