AttributeError: модуль networkx не имеет атрибута from_pandas_dataframe

У меня networkx v. 2.1. чтобы заставить его работать с фреймом данных pandas, я попробовал следующее:

  • установлен через pip3, это не сработало, сгенерировал Atrribute Error, как в заголовке, поэтому был удален.
  • переустановлен с помощью 'python3 setup.py install "

Описание ошибки.

AttributeError: module 'networkx' has no attribute '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']
35
0
31 116
3

Ответы 3

Этот решение также помогает:

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'

это не касается ответа

Mohammad Heydari 29.10.2018 14:07

В networkx 2.0 from_pandas_dataframeбыл удален.

Вместо этого вы можете использовать from_pandas_edgelist.

Тогда у вас будет:

g_data=G=nx.from_pandas_edgelist(x, 1, 2, edge_attr=True)

Я использовал pip install networkx, но получил только 1.11, в котором нет from_pandas_edgelist, затем я попробовал pip install --upgrade networkx, наконец получил from_pandas_edgelist

Cherry Wu 23.04.2018 09:06

Как насчет неориентированного графа?

keramat 25.05.2020 11:04

Простой график:

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()

Другие вопросы по теме