AttributeError: модуль 'networkx' не имеет атрибута 'from_pandas_dataframe'
Я имею networkx v. 2.1
, чтобы заставить его работать с пандой dataframe, я попробовал следующее:
- установлен через
pip3
, это не сработалоAtrribute Error
как в заголовке, следовательно, удалены. - переустановлен с
python3 setup.py install
"
Описание ошибки.
AttributeError: модуль 'networkx' не имеет атрибута 'from_pandas_dataframe`
Шаги для воспроизведения ошибки:
Я импортировал данные, используя csv
, Я сделал это, потому что я просто хотел прочитать только 5000 строк из набора данных.
x=pd.DataFrame([x for x in rawData[:5000]])
x[:10]
0 1 2
0 228055 231908 1
1 228056 228899 1
2 228050 230029 1
3 228059 230564 1
4 228059 230548 1
5 70175 70227 1
6 89370 236886 1
7 89371 247658 1
8 89371 249558 1
9 89371 175997 1
g_data=G=nx.from_pandas_dataframe(x)
module 'networkx' has no attribute 'from_pandas_dataframe'
Я знаю, что мне не хватает from_pandas_dataframe
но не могу найти способ установить его.
[m for m in nx.__dir__() if 'pandas' in m]
['from_pandas_adjacency',
'to_pandas_adjacency',
'from_pandas_edgelist',
'to_pandas_edgelist']
4 ответа
В сети x 2.0 from_pandas_dataframe
был удален. ( https://networkx.github.io/documentation/stable/release/release_2.0.html)
Вместо этого вы можете использовать from_pandas_edgelist
Тогда у вас будет:
g_data=G=nx.from_pandas_edgelist(x, 1, 2, edge_attr=True)
Простой график:
import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
# Build a dataframe with 4 connections
df = pd.DataFrame({'from': \['A', 'B', 'C', 'A'\], 'to': \['D', 'A', 'E', 'C'\]})
# Build your graph
G = nx.from_pandas_edgelist(df, 'from', 'to')
# Plot it
nx.draw(G, with_labels=True)
plt.show()
Пытаться:
G = nx.from_pandas_edgelist(df, source='source_col', target='target_col')
Это решение также помогает:
G = nx.DiGraph()
G.add_weighted_edges_from([tuple(x) for x in x.values])
nx.info(G)
'Name: \nType: DiGraph\nNumber of nodes: 5713\nNumber of edges: 5000\nAverage in degree: 0.8752\nAverage out degree: 0.8752'