У меня есть DataFrame
в pandas с информацией о местоположении людей во времени. Это около 300+ миллионов строк.
Вот пример, где каждому Name
присваивается уникальный index
по group.by
и sorted
по «Имя» и «Год»:
import pandas as pd
inp = [{'Name': 'John', 'Year':2018, 'Address':'Beverly hills'}, {'Name': 'John','Year':2018, 'Address':'Beverly hills'}, {'Name': 'John', 'Year':2019, 'Address':'Beverly hills'}, {'Name': 'John', 'Year':2019, 'Address':'Orange county'}, {'Name': 'John', 'Year':2019, 'Address':'NewYork'}, {'Name': 'Steve', 'Year':2018, 'Address':'Canada'}, {'Name': 'Steve', 'Year':2019, 'Address':'Canada'}, {'Name': 'Steve', 'Year':2019, 'Address':'Canada'}, {'Name': 'Steve', 'Year':2020, 'Address':'California'}, {'Name': 'Steve', 'Year':2020, 'Address':'Canada'}, {'Name': 'John', 'Year':2020, 'Address':'Canada'}, {'Name': 'John', 'Year':2021, 'Address':'Canada'}, {'Name': 'John', 'Year':2021, 'Address':'Beverly hills'}, {'Name': 'Steve', 'Year':2021, 'Address':'California'}, {'Name': 'Steve', 'Year':2022, 'Address':'California'}, {'Name': 'Steve', 'Year':2018, 'Address':'NewYork'}, {'Name': 'Steve', 'Year':2018, 'Address':'California'}, {'Name': 'Steve', 'Year':2022, 'Address':'NewYork'}]
df = pd.DataFrame(inp)
df['Name_Grouped_Index'] = df.groupby(['Name']).ngroup()
df = df.sort_values(['Name', 'Year'], ascending=[False, True])
print (df)
Name Year Address Name_Grouped_Index
5 Steve 2018 Canada 1
15 Steve 2018 NewYork 1
16 Steve 2018 California 1
6 Steve 2019 Canada 1
7 Steve 2019 Canada 1
8 Steve 2020 California 1
9 Steve 2020 Canada 1
13 Steve 2021 California 1
14 Steve 2022 California 1
17 Steve 2022 NewYork 1
0 John 2018 Beverly hills 0
1 John 2018 Beverly hills 0
2 John 2019 Beverly hills 0
3 John 2019 Orange county 0
4 John 2019 NewYork 0
10 John 2020 Canada 0
11 John 2021 Canada 0
12 John 2021 Beverly hills 0
Благодаря @MarcusRenshaw я теперь могу получить матрицу сетевого графа (матрицу смежности), чтобы увидеть сумму изменений между адресами. Другими словами, например, сколько раз люди переезжали из «Канады» в «Калифорнию». Решение для этого можно найти ЗДЕСЬ .
Вот массив NumPy
, который я получаю как «Сетевая матрица» из решения выше:
['Canada', 'NewYork', 'California', 'Beverly hills', 'Orange county']
[[2 1 2 1 0]
[1 0 1 0 0]
[2 1 1 0 0]
[0 0 0 2 1]
[0 1 0 0 0]]
Я хочу, чтобы plot
Сетевая матрица NumPy Массив со следующими характеристиками:
- Направленный граф сети со стрелками (направление) между узлами.
- Узел может иметь ребро, так как у меня есть такие пары, как "Канада-Канада", которые важно показать.
- Размер узла представляет номер входящего ребра / ссылки. Чем больше размер узла, тем больше ссылок.
- ребро / толщина ссылки представляет собой итерацию изменения между двумя узлами (местоположение). Более толстый край означает более высокие объемы изменения местоположения между узлами.