Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
LT: BPStudy#135 「NetworkXではじめる情報構造化 〜 たくさんあるドキュ...
Search
komo_fr
November 29, 2018
Programming
950
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LT: BPStudy#135 「NetworkXではじめる情報構造化 〜 たくさんあるドキュメントの全体像を俯瞰する」
「BPStudy#135〜エンジニアの知的生産術」でのLT資料です。
イベントページ:
https://bpstudy.connpass.com/event/104549/
komo_fr
November 29, 2018
More Decks by komo_fr
See All by komo_fr
Claude Designで 文学リライトエージェントの UI案を作らせてみた
komofr
0
160
生成AIとPythonで ラズパイカーを動かそう! 〜GradioとLangChainで作るプロトタイプ〜
komofr
1
360
LLM Pico Car: How I Built a Voice-Controlled Toy Car Using Generative AI, Gradio, and Raspberry Pi Pico
komofr
0
88
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
88
PyCon mini 東海 2025「個人ではじめるマルチAIエージェント入門 〜LangChain × LangGraphでアイデアを形にするステップ〜」
komofr
3
2.4k
ポスターセッション: 「まっすぐ行って、右!」って言ってラズパイカーを動かしたい 〜生成AI × Raspberry Pi Pico × Gradioの試作メモ〜
komofr
2
2.1k
Bokeh & Dash Cytoscape 〜 Pythonによるインタラクティブなネットワーク可視化ライブラリの比較 / PyConJP2021
komofr
0
910
Dash Cytoscape 〜 Pythonによるインタラクティブ・ネットワーク可視化入門 / StartPython#67
komofr
0
1.8k
Dash Cytoscapeで始めるネットワーク可視化 / plotly dash book
komofr
0
810
Other Decks in Programming
See All in Programming
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
130
GitHubハンズオン講座 — 実務レベルのチーム開発のフローを身につけよう
junhat6
0
110
SREの越境 / SRE Collaboration
y0hgi
2
280
スマート反転とウェブアクセシビリティ
camiha
0
210
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
440
JRuby: Past, Present, and Future
headius
0
210
iOSDC2026登壇資料.pdf
riofujimon
0
190
選挙速報を多くのユーザーへ 届ける Live Activities 設計
hamayokokuririn
0
180
FreeBSDでZabbixを動かす
kenkino
0
330
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
570
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
290
The Rails Doctrine Decade
koic
2
400
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
260
So, you think you're a good person
axbom
PRO
2
2.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Technical Leadership for Architectural Decision Making
baasie
3
580
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
340
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Designing for Timeless Needs
cassininazir
1
510
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ྡΛݟͯΈΔʁ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠