Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
LT: BPStudy#135 「NetworkXではじめる情報構造化 〜 たくさんあるドキュ...
Search
komo_fr
November 29, 2018
Programming
3
920
LT: BPStudy#135 「NetworkXではじめる情報構造化 〜 たくさんあるドキュメントの全体像を俯瞰する」
「BPStudy#135〜エンジニアの知的生産術」でのLT資料です。
イベントページ:
https://bpstudy.connpass.com/event/104549/
komo_fr
November 29, 2018
Tweet
Share
More Decks by komo_fr
See All by komo_fr
PyLadiesCon 2025: “Go Straight, Then Turn Right!”: How I Built a Voice-Controlled Toy Car Using Generative AI, Gradio, and Raspberry Pi Pico
komofr
0
27
PyCon mini 東海 2025「個人ではじめるマルチAIエージェント入門 〜LangChain × LangGraphでアイデアを形にするステップ〜」
komofr
3
2.1k
ポスターセッション: 「まっすぐ行って、右!」って言ってラズパイカーを動かしたい 〜生成AI × Raspberry Pi Pico × Gradioの試作メモ〜
komofr
1
1.6k
Bokeh & Dash Cytoscape 〜 Pythonによるインタラクティブなネットワーク可視化ライブラリの比較 / PyConJP2021
komofr
0
820
Dash Cytoscape 〜 Pythonによるインタラクティブ・ネットワーク可視化入門 / StartPython#67
komofr
0
1.7k
Dash Cytoscapeで始めるネットワーク可視化 / plotly dash book
komofr
0
720
(修正版) NumPy/pandas使いのためのテスト自動化入門 / PyConJP2020
komofr
32
12k
[Python Charity Talks in Japan] LT: ネットワーク解析とテキスト解析で見るPEP / pycharity
komofr
0
1.4k
PyPI翻訳プロジェクト速報 / PyLadies Tokyo LT
komofr
1
520
Other Decks in Programming
See All in Programming
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
150
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
180
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
0
190
Vibe codingでおすすめの言語と開発手法
uyuki234
0
130
フルサイクルエンジニアリングをAI Agentで全自動化したい 〜構想と現在地〜
kamina_zzz
0
310
ZJIT: The Ruby 4 JIT Compiler / Ruby Release 30th Anniversary Party
k0kubun
1
280
Deno Tunnel を使ってみた話
kamekyame
0
260
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
これならできる!個人開発のすゝめ
tinykitten
PRO
0
130
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
5
1.3k
AtCoder Conference 2025
shindannin
0
710
開発に寄りそう自動テストの実現
goyoki
2
1.5k
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
89
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
590
ラッコキーワード サービス紹介資料
rakko
0
1.8M
How to build a perfect <img>
jonoalderson
0
4.8k
Automating Front-end Workflow
addyosmani
1371
200k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
67
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
130
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
870
Crafting Experiences
bethany
0
22
It's Worth the Effort
3n
187
29k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
0
100
Site-Speed That Sticks
csswizardry
13
1k
Transcript
NetworkXͰ͡ΊΔ ใߏԽ ͨ͘͞Μ͋ΔυΩϡϝϯτͷશମ૾Λ၆ᛌ͢Δ 2018.11.29 BPStudy#135ʙΤϯδχΞͷతੜ࢈ज़
Who am I ? • @komo_fr (Tomoko FURUKI) • ͓͠͝ͱɿ
• લɿҩྍใγεςϜͷઃܭɾ࣮ • ࠓɿPythonΛͬͯσʔλΛݟͨΓ ɹɹπʔϧΛ࡞ͬͨΓ
1000 ϖʔδҎ্͋Δ ࢿྉΛಡΉͱ͖ Ͳ͏͠·͔͢ʁ
None
େ·͔ʹશମ૾ΛѲ͢Δ • ྫ͑ɺ࣍ষݟग़͠ ͨͱ͑ɺPythonϥΠϒϥϦϦϑΝϨϯε1,000ϖʔδҎ্ ͋Γ·͢ɻ͜ΕΛશ෦ಡ͏ͱߟ͑Δͱɺେมա͗ͯ৺͕ંΕ ͦ͏Ͱ͢ɻ͔͠͠ɺ࣍6ϖʔδ͔͋͠Γ·ͤΜ͠ɺষݟग़͠ ͨͬͨ34ߦ͔͋͠Γ·ͤΜɻ ॻ੶͜͏͍͏େنͳࢿྉͰɺ಄ʹ࣍Λஔ͘͜ͱ͕Ұ ൠతͳ׳शͱͯ͠ߦΘΕ͍ͯ·͢ɻͦΕશମ૾ΛѲ͢͠ ͘͢ΔͨΊͰ͢ɻ
ʮΤϯδχΞͷతੜ࢈ज़ ޮతʹֶͼɺཧ͠ɺΞτϓοτ͢Δʯʢඌହ [ஶ] / ٕज़ධࣾʣp21
͠ࢿྉʹ ʮ࣍ʯ͕ ͳ͔ͬͨΒʁ
͕࣍ͳ͍ ࢿྉʁ
ྫ͑
ྫ1ʣͨ͘͞Μͷνέοτ • RedmineͷνέοτGitHub Issue • ॻ੶ͱҧͬͯ࣍ͳ͍ • ͺΒͺΒͱνέοτʢใʣ͕͋Δ • ͕ؔ͋Δνέοτಉ࢜ʹ
࣌ʑؔ࿈͚͕ͮઃఆ͞Ε͍ͯΔ
ྫ2ʣͨ͘͞Μͷจ • ৽͘͠ڵຯ࣋ͬͨʹ͍ͭͯ ͬ͘͟ΓѲ͍ͨ͠ͱ͖ • ͻͱͭͷจͰষཱ͕ͯ͋Δ͕ɻɻɻ • Ҿ༻͕ؔ͋ΔෳͷจؒΛ·͍ͨͩ શମ૾ɺͲ͏ͬͯѲ͢Δʁ
ؔ
πϦʔߏͱωοτϫʔΫߏ Tree Network ࠎࢠͱͳΔTree͕͋Δ͕ɺޓ͍ʹNetworkʹͳ͍ͬͯΔͷ͋Δ • ୈ1ষ • 1.1અ • 1.1.1߲
• 1.1.2߲ • 1.2અ • ୈ2ষ EPD EPD EPD EPD EPD
ωοτϫʔΫߏͷ ࢿྉͷશମ૾Λ Ͳ͏ͬͯ၆ᛌ͢Δʁ
NetworkX
ωοτϫʔΫੳ • ʮԿ͔ʯͱʮԿ͔ʯͷͭͳ͕ΓͷߏΛΔ ͨΊͷख๏ • υΩϡϝϯτͷҾ༻ؔʢdocͱdocͷͭͳ͕Γʣ • SNSͷϑΥϩʔؔʢਓͱਓͱͷͭͳ͕Γʣ ϊʔυ ϊʔυ
Τοδ
ख๏ಓ۩৭ʑ ख๏ ಓ۩ πʔϧɾϥΠϒϥϦ 1ZUIPO /FUXPSL9 QZUIPOJHSBQI 3 J(SBQI +BWB4DSJQU
%KT ՄࢹԽͷΈ σεΫτοϓܥ (6*πʔϧ $ZUPTDBQF (FQIJ QBKFL ՄࢹԽ த৺ੑͳͲॾࢦඪͷࢉग़ ίϛϡχςΟݕग़ FUDʜ
ֶΜͩ͜ͱΛ͠·͢ ͋ͱͪΐͬͱσʔλݹ͍Ͱ͢
NetworkXΛͬͯ ωοτϫʔΫߏͷ υΩϡϝϯτΛ ݟͯΈΑ͏ʂ
ԿΛࡐʹ ͢Δʁ
PythonͷެࣜυΩϡϝϯτ w1&1 1ZUIPO&OIBODFNFOU1SPQPTBM w 1ZUIPOͷػೳϓϩηεɾڥͳͲʹ͍ͭͯ େ͖ͳมߋ͕͋Δͱ͖ʹॻ͔ΕΔఏҊॻ w ྫ 1&14UZMF(VJEFGPS1ZUIPO$PEF
PEPͷ470Ҏ্ • શͯWebͰެ։͞Ε͍ͯΔ • PEP 0: https://www.python.org/dev/peps/
ͰPEPಉ࢜ʹҾ༻͕ؔ͋Δ! ଞͷPEPͷϦϯΫ https://www.python.org/dev/peps/pep-0008/ WebͰެ։͞Ε͍ͯΔ = htmlͰॻ͔Ε͍ͯΔ = <a>λάΛநग़͢ΕɺPEPͷҾ༻ؔͷωοτϫʔΫߏΛ࡞ΕΔʂ 1&1ΑΓ
ྫʣ 1&1 1&1 1&1 Style Guide for Python Code The
Zen of Python Docstring Conventions
Style Guide for Python Code
The Zen of Python Docstring Conventions 1&1 1&1 1&1 1&1 1&1 1&1 ྡߦྻ BEKBDFODZNBUSJY TUBSU FOE 1&1 1&1 1&1 1&1 1&1 1&1 ΤοδϦετ FEHFMJTU ωοτϫʔΫߏͷσʔλදݱ
1&1 1&1 1&1 1&1 1&1
1&1
NetworkX
ྡߦྻσʔλΛಡΈࠐΈม import pandas as pd import networkx as nx #
ྡߦྻͷcsvσʔλΛpandasͷσʔλϑϨʔϜʹಡΈࠐΉ df = pd.read_csv(‘ྡߦྻ.csv’) # NetworkX 2Ҏ߱ͳΒ͜ΕͰҰൃ G = nx.from_pandas_adjacency(df, create_using=nx.DiGraph)
ωοτϫʔΫ ߏશମΛ ՄࢹԽ nx.draw() https://networkx.github.io/documentation/stable/reference/drawing.html Drawing
Ұ෦ 1&1 1&1 1&1 Style Guide for Python Code The
Zen of Python Docstring Conventions
શମ૾ *2018/02͘Β͍ͷ࣌ͷPEPͷσʔλ
ͪΐͬͱΑ͘Θ͔Βͳ͍ໟۄ *2018/02͘Β͍ͷ࣌ͷPEPͷσʔλ
͏ͪΐͬͱ ใΛՃ͠ ͯΈΔ
ϊʔυͷ৭
PEPͷυΩϡϝϯτʹϔομʔ ͕͋Δ https://www.python.org/dev/peps/pep-0008/
֤ϊʔυʹใΛ༩Ͱ͖Δ 5JUMF 4UZMF(VJEFGPS 1ZUIPO$PEF 4UBUVT "DUJWF 5ZQF 1SPDFTT $SFBUFE +VM
5JUMF ʜ 4UBUVT ʜ 5ZQF ʜ $SFBUFE ʜ 5JUMF ʜ 4UBUVT ʜ 5ZQF ʜ $SFBUFE ʜ
StatusΛ ϊʔυͷ৭ʹ өͤ͞Δ nx.set_node_attributes() G.nodes(data='Status')
*2018/02͘Β͍ͷ࣌ͷPEPͷσʔλ
͏ͪΐ͍ ใΛՃ ͯ͠ΈΔ
ϊʔυͷ αΠζ
࣍ • ೖ࣍ • ͜͜ͰɺଞͷPEP͔Βࢀর͞Ε͍ͯΔ • ग़࣍ • ͜͜ͰɺଞͷPEPΛࢀর͍ͯ͠Δ •
࣍͡Όͳͯ͘த৺ੑΛ͏͜ͱ͋ΔΑ
ೖ࣍Λ αΠζʹө G.in_degree() * ೖ࣍ = 0ͷPEP1ͷPEPͷ1/10ͷ໘ੵͱ͢Δ https://networkx.github.io/documentation/stable/reference/classes/generated/networkx.DiGraph.in_degree.html
*2018/02͘Β͍ͷ࣌ͷPEPͷσʔλ
*2018/02͘Β͍ͷ࣌ͷPEPͷσʔλ
*2018/02͘Β͍ͷ࣌ͷPEPͷσʔλ
*2018/02͘Β͍ͷ࣌ͷPEPͷσʔλ
Ұ൪ೖ͕࣍ଟ͍ͷPEP 8 1ZUIPOͷίʔυΛॻ͘ͱ͖ɺ ͜ͷελΠϧͰॻ͍ͯͶ
ͬͺΓ ͍͖ͳΓશ෦Λ ѻ͓͏ͱ͢Δͱ ʮ͏͒ͬʯͱͻΔΉ
ͲΜͳτϐοΫ͕ ͋Δͷ͔ ͬ͘͟Γ ΧςΰϦ͚͍ͨ͠
খ͚ʹ ͯ͠ΈΑ͏ (αϒάϧʔϓׂ) nx.connected_component_subgraphs() https://networkx.github.io/documentation/stable/reference/algorithms/component.html
4ͭͷάϧʔϓʹ͚͍ͯͩ͘͞
͍ͬͭͯ͘Δͷʢ࿈݁ʣ ಉ࢜Ͱ͚Δ
͜ͷ͚ํΛ ద༻ͯ͠ΈΔ * PEPͷࢀরؔ༗ͳͷͰɺࠓճऑ࿈݁Λར༻ nx.weakly_connected_components() https://networkx.github.io/documentation/stable/reference/algorithms/component.html
• 8ׂͷPEPจॻ͕1ͭͷେ͖ͳάϧʔϓʹॴ ଐ͍ͯ͠Δ *2018/6/20࣌ͷPEPͷσʔλ
ڊେͳάϧʔϓ͕1͍ͭΔ • 8ׂͷPEPจॻ͕1ͭͷେ͖ͳάϧʔϓʹॴଐ ͍ͯ͠Δ • 65ݸͷαϒάϧʔϓʹׂͰ͖Δ • ͨͩ͠ɺͦͷ͏ͪ57άϧʔϓ͕ݽཱ • Reject͞ΕͨఏҊ΅ͬͪʹͳΓ͍͢ʁ
*2018/6/20࣌ͷPEPͷσʔλ
• ݽཱͰͳ͘ڊେάϧʔϓʹଐ͍ͯ͠ͳ͍ ͭͬͯԿͩΖ͏ʁ
Reject͞ΕͨSwitch • [PEP 275] Switching on Multiple Values • [PEP
3103] A Switch/Case Statement
ڊେάϧʔϓΛখ͚ʹ͍ͨ͠
ΫϥελϦϯά ͯ͠ΈΑ͏
louvainΞϧΰϦζϜΛ͏ • python-louvain • https://python-louvain.readthedocs.io/en/ latest/api.html • NetworkX͔Β͑Δ ൃද࣌ͷࢿྉʹʮNetworkX͔Β͑Δʯͱॻ͍͍ͯͨͷͰ͕͢ɺਖ਼͘͠ ʮNetworkXͷσʔλߏΛ͑ΔʯͰͨ͠ɻ
python-louvainࣗମɺݱࡏNetworkXͱผͷOSSͰ͢ɻ 2013ʹpython-louvainΛNetworkXຊମʹϚʔδ͠Α͏ͱ͍͏issueཱ͕ͬͯ ͍ΔͷͰ͕͢ɺݱࡏ࡞ۀ͕ࢭ·ͬͨ··Openʹͳ͍ͬͯΔΑ͏Ͱ͢ɻ https://github.com/networkx/networkx/issues/951 ൃදޙͷه
͜͏͍͏ߏ͕͋ͬͨΒ
͜͏͡Όʂ
͜ͷ͚ํΛ ద༻ͯ͠ΈΔ community.best_partition() https://python-louvain.readthedocs.io/en/latest/api.html#community.best_partition
݁Ռ • ࣮ྫ: louvainͰαϒάϧʔϓԽ • https://bit.ly/2zGCrVu
ײ
ײ • ❌ NetworkXͰ͑όγοͱ໌֬ͳߏ͕Θ͔Δ! • ⭕ʮԿͰ͜͏͍͏݁ՌʹͳΔΜͩΖ͏ʁʯͱ୳ࡧ͍ͯ͠ ͘͏ͪʹɺ΅ΜΓ֓؍Λ௫ΜͰ͍͘ײ͡ • ϦϯΫషͬͯͳ͍͚Ͳ࣮͜Εؔͯ͠ΔΜ͡Όͳ͍ ͷʁ
• ͦͦʮؔʯͷఆٛͬͯԿͩʁʁ
ਤͷΑ͏ͳײ֮ • ݁ہͷͱ͜Ζɺ࣮ࡍͲ͏ͳͷ͔ݱʹΛӡͿʢ= PEPͷத ΛͪΌΜͱಡΉʣ͜ͱൈ͖ͰΘ͔Βͳ͍ • Ͱཱྀ׳Ε͍ͯ͠ͳ͍͕ͭਤແ͠Ͱา͘ͷͭΒ͍ • ͳΜͱͳ͋͘ͷลʹࢁʢಛతͳPEPʣ͕͋Δ •
͋ͷลཱྀͷߴͦ͏͔ͩΒࠓආ͚Α͏ʢඃࢀরଟ͍ͷ ʹԘ௮͚ʹͳͬͨPEPͱ͔ʣ • ͬ͘͟Γ͜͏͍͏Ҭʢαϒάϧʔϓʣ͕͋ΔΜͩͳ͊ • ʢʑߋ৽͞Ε͍ͯΔͷͰʣͨ·ʹܗͷେنมԽ͕ى͜Δ
·ͱΊ
·ͱΊ • ͕࣍ͳ͍େྔͷυΩϡϝϯτͷʮେ·͔ͳߏʯͬͯͲ͏ͬ ͯѲ͢ΔΜͩΖ͏ʁ • ࣮ࡍʹNetworkX & PythonͷެࣜυΩϡϝϯτΛͬͯΈͯ ͬͯΈͨ •
ͬͯΈΔͱ໘ന͍ͷ͋Δ໘ɺᡰʹམͪͳ͍ͷ͋Δ • ͋Δҙຯʮతʯ͕Ͱ͖ͯ͘Δ • Next Step → తΛ࣋ͬͯಡΉʁʁ • ಛఆͷPEPͷ1hopɺ2hopྡΛݟͯΈΔʁ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠