Índice:
Vídeo: Análise de dados no Python - Lendo arquivos Excel e Manipulação de dados. 2024
A maioria dos cientistas de dados deve trabalhar com dados gráficos em algum momento. O Python oferece essa funcionalidade. Imagine pontos de dados que estejam conectados a outros pontos de dados, como por exemplo, como uma página da Web está conectada a outra página da Web através de hiperlinks. Cada um desses pontos de dados é um nó . Os nós se conectam uns aos outros usando links .
Nem todos os nós de nó para todos os outros nós, de modo que as conexões dos nós se tornem importantes. Ao analisar os nós e seus links, você pode executar todo tipo de tarefas interessantes na ciência dos dados, como definir a melhor maneira de passar do trabalho para sua casa usando ruas e rodovias.
Compreendendo a matriz de adjacência
Uma matriz de adjacência representa as conexões entre nós de um gráfico. Quando há uma conexão entre um nó e outro, a matriz indica como um valor maior do que 0. A representação precisa das conexões na matriz depende de se o gráfico é direcionado (onde a direção da conexão é importante) ou não dirigida.
Um problema com muitos exemplos on-line é que os autores os mantêm simples para fins de explicação. No entanto, os gráficos do mundo real são muitas vezes imensos e desafiam a análise fácil simplesmente através da visualização. Basta pensar no número de nós que até uma pequena cidade teria ao considerar interseções de rua. Muitos outros gráficos são muito maiores, e simplesmente olhar para eles nunca revelará nenhum padrão interessante. Cientistas de dados chamam o problema ao apresentar qualquer gráfico complexo usando uma matriz de adjacência bola de cabelo .
Uma chave para analisar as matrizes de adjacência é ordená-las de maneira específica. Por exemplo, você pode optar por classificar os dados de acordo com propriedades diferentes das conexões reais. Um gráfico das conexões de rua pode incluir a data em que a rua foi pavimentada pela última vez com os dados, possibilitando que você procure padrões que direcionem alguém com base nas ruas que estão no melhor reparo. Em suma, tornar os dados do gráfico úteis torna-se uma questão de manipular a organização desses dados de maneiras específicas.
Usando os conceitos básicos da NetworkX
Trabalhar com gráficos pode tornar-se difícil se você tivesse que escrever todo o código a partir do zero. Felizmente, o pacote NetworkX para Python facilita a criação, manipulação e estudo da estrutura, dinâmica e funções de redes complexas (ou gráficos). Você pode usar o pacote para trabalhar com digraphs e multigrafias também.
A principal ênfase da NetworkX é evitar toda a questão das bolas de cabelo.O uso de chamadas simples esconde grande parte da complexidade de trabalhar com gráficos e matrizes de adjacência da vista. O exemplo a seguir mostra como criar uma matriz de adjacência básica de um dos gráficos fornecidos pela NetworkX:
importar networkx como nx G = nx. ciclo_grafia (10) A = nx. adjacency_matrix (G) print (A. todense ())
O exemplo começa importando o pacote necessário. Em seguida, ele cria um gráfico usando o modelo cycle_graph (). O gráfico contém dez nós. Chamar adjacency_matrix () cria a matriz de adjacência do gráfico. O passo final é imprimir a saída como uma matriz, como mostrado aqui:
[[0 1 0 0 0 0 0 0 0 1] [1 0 1 0 0 0 0 0 0 0] [0 1 0 1 0 0 0 0 0 0] [0 0 1 0 1 0 0 0 0 0] [0 0 0 1 0 1 0 0 0 0] [0 0 0 0 1 0 1 0 0 0] [0 0 0 0 0 0 0 1 0 0] [0 0 0 0 0 0 1 0 1 0] [0 0 0 0 0 0 0 1 0 1] [1 0 0 0 0 0 0 0 1 0]]
Você não precisa Crie seu próprio gráfico a partir do zero para fins de teste. O site NetworkX documenta vários tipos de gráficos padrão que você pode usar, todos os quais estão disponíveis no IPython.
É interessante ver como o gráfico cuida de você gerá-lo. O código a seguir exibe o gráfico para você.
Traçando o gráfico original.importar matplotlib. pyplot como plt nx. draw_networkx (G) plt. show ()
O gráfico mostra que você pode adicionar uma ponta entre os nós 1 e 5. Aqui está o código necessário para executar esta tarefa usando a função add_edge ().
Traçando a adição do gráfico.G. add_edge (1, 5) nx. draw_networkx (G) plt. show ()