前提・実現したいこと
"Python実践データ分析 100本ノック"という書籍を読んでいるのですが
ノック56で、意味のわからないところがあります(p152)。
codeに問題があるわけではなく、わたしの理解が及ばないので、教えていただきたいです。
(初めての質問です。かつ初心者です。出版社のサイトで質問を受け付けていないようだったので
ここで質問させていただきました。)
■知りたいこと(下記のコードで)
・num_pre はなんのための変数なのでしょうか。
・"# エッジの重みの追加"の以下3行の意味(目的)
```ここに言語を入力
エッジの重みの追加
if num_pre<len(G.edges): num_pre = len(G.edges) weight = 0
・さらにその下のif文, elif文のそれぞれの意味(目的) ```ここに言語を入力 if (df_pos.columns[i] in df_tr.columns)and(df_pos.columns[j] in df_tr.index): if df_tr[df_pos.columns[i]][df_pos.columns[j]]: weight = df_tr[df_pos.columns[i]][df_pos.columns[j]]*size elif(df_pos.columns[j] in df_tr.columns)and(df_pos.columns[i] in df_tr.index): if df_tr[df_pos.columns[j]][df_pos.columns[i]]: weight = df_tr[df_pos.columns[j]][df_pos.columns[i]]*size edge_weights.append(weight)
発生している問題・エラーメッセージ
エラーメッセージ:特にありません。
該当のソースコード
import pandas as pd import matplotlib.pyplot as plt import networkx as nx # データ読み込み df_tr = pd.read_csv('trans_route.csv', index_col="工場") df_pos = pd.read_csv('trans_route_pos.csv') # グラフオブジェクトの作成 G = nx.Graph() # 頂点の設定 for i in range(len(df_pos.columns)): G.add_node(df_pos.columns[i]) # 辺の設定&エッジの重みのリスト化 num_pre = 0 edge_weights = [] size = 0.1 for i in range(len(df_pos.columns)): for j in range(len(df_pos.columns)): if not (i==j): # 辺の追加 G.add_edge(df_pos.columns[i],df_pos.columns[j]) # エッジの重みの追加 if num_pre<len(G.edges): num_pre = len(G.edges) weight = 0 if (df_pos.columns[i] in df_tr.columns)and(df_pos.columns[j] in df_tr.index): if df_tr[df_pos.columns[i]][df_pos.columns[j]]: weight = df_tr[df_pos.columns[i]][df_pos.columns[j]]*size elif(df_pos.columns[j] in df_tr.columns)and(df_pos.columns[i] in df_tr.index): if df_tr[df_pos.columns[j]][df_pos.columns[i]]: weight = df_tr[df_pos.columns[j]][df_pos.columns[i]]*size edge_weights.append(weight) # 座標の設定 pos = {} for i in range(len(df_pos.columns)): node = df_pos.columns[i] pos[node] = (df_pos[node][0],df_pos[node][1]) # 描画 nx.draw(G, pos, with_labels=True,font_size=16, node_size = 1000, node_color='k', font_color='w', width=edge_weights) # 表示 plt.show()
試したこと
書籍のコード通りに実行すれば、きちんとデータ通りにグラフ化されることは確認済みです。
コードには全く問題ないです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
Pythonはインデント(字下げ)の大小でプログラム要素の区切りを表現するプログラム言語です。
質問に書かれているようなインデントが無い(全部の行が左端に寄っている)のは、Pythonのプログラムではありません。
ちゃんとインデントを大切にして、正しいプログラムを質問に書いてください。
失礼ですが、まずは「初めての」とか「初心者向け」と書かれたPythonの教科書やMookを2,3冊読むことをお勧めします。
インデントのないコードを書く程度の知識で、複雑なプログラムを読むのは早すぎると思います。
まずは基礎知識をつけること! そうしないと、早晩挫折することになります。
有難うございます。もともとはインデントを開けてコードを書いているのですが、ここにコピーをしたら左詰めになってしまいました。今、修正しようとしていますが、初めてなのでうまくいっていないです。もう少しお待ちいただけるとありがたいです。
初質問で、勝手がわかっておりませんが、今修正をかけてみました。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー