padasのDataframeで以下のようなデータを持っており、
pythoneのライブラリの「networkX」を使ってネットワーク分析をしたいと考えております。
||user1|user2|time|
|:--|:--:|--:|
1|1|5|15
2|1|6|30
3|1|6|30
4|2|8|20
5|3|8|15
6|1|5|20
データの意味合いは、1対1の会話時間を集計しており
1人目を「uid1」、2人目を「uid2」で表しており、
その会話時間は「time」に入っています。
なお、1日の会話時間の発生を集計しているため、例えば1行目と6行目は
同じ「1」と「5」の会話時間ですが、時間を開けて2回発生しているため、データが2行つくられています。
以下、やりたいことが2つあり、pythonのコードを教えていただけますでしょうか。
【やりたいこと①:重み付けがないネットワーク分析】
・上記のDataFrameのデータから、uid1とuid2の組み合わせの隣接行列に変換する。
・隣接行列の値は、0と1で会話が発生していたら1
・その結果を、NetworkXの無向グラフで描画する。
・その際、1行目と6行目は同じuserである「1」と「5」の会話時間が期間中に2回発生していることになりますが、
重みつけを考慮しないので、同一集計され「1」になる。
【やりたいこと②:重み付けがあるネットワーク分析】
・上記のDataFrameのデータから、uid1とuid2の組み合わせの隣接行列に変換する。
・隣接行列の値は、任意の数値で、timeの合計時間を集計する。
・その結果を、NetworkXの無向グラフで描画する。
・その際、1行目と6行目は同じuserである「1」と「5」の会話時間が期間中に2回発生していることになりますが、
重みつけを考慮するので、timeの合計値を集計して(15+20の)「35」と表示される。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。