PyConJP 2018: Interactive Network Visualization using Python 〜 NetworkX + Bokehで PEPの参照関係を可視化する

98df8bb11748bb59fef1aa1e474e8e02?s=47 komo_fr
September 17, 2018

PyConJP 2018: Interactive Network Visualization using Python 〜 NetworkX + Bokehで PEPの参照関係を可視化する

PyConJP 2018 Day 1のtalk「Interactive Network Visualization using Python 〜 NetworkX + Bokehで PEPの参照関係を可視化する 」の資料です。
Twitter: https://twitter.com/komo_fr
-------------------------------------------------------
▼発表時点からの変更箇所
・発表後の休憩時間にpandasとNetworkXの連携について質問があったので、補足スライドを数枚追加しています。
・いくつかURLを追記しました。
・発表当日(2018/9/17)時点ではNetworkXの最新バージョンは2.1でしたが、その2日後に2.2がリリースされました(https://twitter.com/komo_fr/status/1043376696961851392)
------------------------------------------------------------------
▼PEPの参照関係可視化のリポジトリ
https://github.com/komo-fr/pep_map_site
▼PEP Map | Network (デモで表示したページ)
https://komo-fr.github.io/pep_map_site/network.html
▼talkのリポジトリ
https://github.com/komo-fr/pyconjp_2018_talk
------------------------------------------------------------------
▼CodeZine| PyCon JP 2018 ひろがるPython」登壇者座談会 ~わたしのPythonのひろげかた~
https://codezine.jp/article/detail/11031

98df8bb11748bb59fef1aa1e474e8e02?s=128

komo_fr

September 17, 2018
Tweet

Transcript

  1. Interactive Network Visualization using Python 5PNPLP'VSVLJ!LPNP@GS SFQPIUUQTHJUIVCDPNLPNPGSQZDPOKQ@@UBML 1Z$PO+1 NetworkX +

    BokehͰ PEPͷࢀরؔ܎ΛՄࢹԽ͢Δ
  2. ࣗݾ঺հ ;Δ͖ͱ΋͜ɹ!LPNP@GS w ॴଐ෋࢜ϑΠϧϜιϑτ΢ΤΞגࣜձࣾ w 1ZUIPOྺ1ZUIPOʙ !2 w झຯ1&1 1ZUIPO&OIBODFNFOU1SPQPTBM

    ͷ
 ࢀরؔ܎ΛՄࢹԽ͢Δ8FCϖʔδΛ࡞ͬͯ·͢ w 1&1.BQ ЋWFS 
 IUUQTLPNPGSHJUIVCJPQFQ@NBQ@TJUF

  3. झຯ1&1ͷࢀরؔ܎ͷՄࢹԽ !3

  4. झຯ1&1ͷࢀরؔ܎ͷՄࢹԽ !4 1&1

  5. ࠓ೔࿩͢͜ͱͷ֓ཁ w1&1ΛࣗྗͰಡΉͱ͖ʹָʹͳΔπʔϧ͕ཉ͍͠
 ͱ͍͏ಈػ͔Βɺ
 1&1ͷࢀরؔ܎ΛՄࢹԽ͢Δ׆ಈΛͯ͠·͢ wͦͷ׆ಈͷதͰ
 /FUXPSL9ͱ#PLFIΛ࢖ͬͯ
 ΠϯλϥΫςΟϒͳωοτϫʔΫՄࢹԽΛߦͬͨͷͰ
 ͦͷϊ΢ϋ΢Λ঺հ͠·͢ !5

  6. ࠓ೔࿩͢͜ͱͷ֓ཁ !6 ੩ࢭը

  7. ࠓ೔࿩͢͜ͱͷ֓ཁ !7 ର࿩తͳૢ࡞ ੩ࢭը

  8. ର৅ -FWFM#FHJOOFS 1ZUIPOͰίʔυͷಡΈॻ͖͕Ͱ͖Δ !1ZUIPOͰΑ͘࢖ΘΕΔσʔλܥͷಓ۩ཱͯ
 ʢ/VNQZ QBOEBT NBUQMPUMJC +VQZUFS/PUFCPPL౳ ͸
 ͳΜͱͳ͘஌ͬͯΔ

    !Ͱ΋ɺ/FUXPSL9΍#PLFI͸Α͘஌Βͳ͍ !8
  9. ࠓ೔ͷࢿྉ͸ ެ։͠·͢ 3FQPTJUPSZ IUUQTHJUIVCDPNLPNPGSQZDPOKQ@@UBML ޙ೔αϯϓϧίʔυ΋61͠·͢

  10. "HFOEB  8IBU  1&1ͷࢀরؔ܎ͬͯԿʁ   8IZ  ͳͥͦΜͳ͜ͱΛͨ͠ͷʁ

      )PX  Ͳ͏΍ͬͯ࡞ͬͨͷʁ  wωοτϫʔΫ෼ੳͷಓ۩ཱͯͱબఆཧ༝ wϋϚͬͨϙΠϯτ wFUDʜ !10
  11. 8IBU  1&1ͷࢀরؔ܎ͬͯԿʁ

  12. 1&1 1ZUIPO&OIBODFNFOU1SPQPTBM w 1ZUIPO֦ுఏҊ w 1ZUIPOͷػೳ΍ϓϩηεɾ؀ڥͳͲʹ͍ͭͯ
 େ͖ͳมߋ͕͋Δͱ͖ʹॻ͔ΕΔఏҊॻ w 1&1ͷ໨࣍ɿ
 IUUQTXXXQZUIPOPSHEFWQFQT

    !12
  13. ͜ͷػೳ͸͏ΜͨΒ͔ΜͨΒ

  14. ৄ͘͠͸ 1&1ΛಡΜͰͶ

  15. ྫ 1&1ίʔσΟϯάελΠϧ !15 https://www.python.org/dev/peps/pep-0008/ 1ZUIPOͷίʔυΛॻ͘ͱ͖͸ɺ ͜ͷελΠϧͰॻ͍ͯͶ

  16. 1&1ΛಡΉͱԿ͕Θ͔Δͷʁ !16 w ࠓ·ͰͲ͏͍͏ఏҊ͕͋ͬͨͷ͔ w Ͳ͏͍͏σΟεΧογϣϯ͕͋ͬͨͷ͔ w ࠷ऴతʹͦΕ͸"DDFQU͞Εͨͷ͔ɺ
 3FKFDU͞Εͨͷ͔ w

    3FKFDFU͞ΕͨͷͳΒɺͳͥͦ͏ͳͬͨͷ͔ w ͳͲͳͲ
  17. 1&1ΛಡΉͱԿ͕Θ͔Δͷʁ !17 1&1ΛಡΉͱ 1ZUIPOͷྺ࢙͕Θ͔Δ

  18. 1&1ΛಡΉͱԿ͕Θ͔Δͷʁ !18 1&1ΛಡΉͱ 1ZUIPOͷྺ࢙͕Θ͔Δ Β͍͠ɻ

  19. 1&1ͷࢀরؔ܎ wݱࡏͷ1&1͸Ҏ্ w͋Δ1&1͔Β͸ɺ
 ଞͷ1&1ʹରͯ͠ϦϯΫ͕షΒΕ͍ͯΔ ଞͷPEP΁ͷϦϯΫ https://www.python.org/dev/peps/pep-0008/

  20. 1&1ͷࢀরؔ܎ !20 1&1 Style Guide for Python Code

  21. 1&1ͷࢀরؔ܎ !21 1&1 1&1 Style Guide for Python Code The

    Zen of Python As PEP 20 says, “Readability counts".
  22. 1&1ͷࢀরؔ܎ !22 1&1 1&1 1&1 Style Guide for Python Code

    The Zen of Python Docstring Conventions The "Specification" text comes mostly verbatim from the Python Style Guide [4] essay by Guido van Rossum.
  23. 1&1ͷࢀরؔ܎ !23 1&1 1&1 1&1 Style Guide for Python Code

    The Zen of Python Docstring Conventions
  24. None
  25. 8IZ  ͳͥɺ͜ΕΛ΍ͬͯΔͷʁ

  26. ಈػ ॳֶऀʢࢲʣ͕
 ࣗྗͰٕज़ͷҰ࣍৘ใʢ1&1ʣΛಡΉͨΊͷ
 ʮ஍ਤʯ͕ཉ͔ͬͨ͠ !26

  27. ಈػ ॳֶऀʢࢲʣ͕
 ࣗྗͰٕज़ͷҰ࣍৘ใʢ1&1ʣΛಡΉͨΊͷ
 ʮ஍ਤʯ͕ཉ͔ͬͨ͠ !27 ॳ৺ऀ

  28. ಈػ ॳֶऀʢࢲʣ͕
 ࣗྗͰٕज़ͷҰ࣍৘ใʢ1&1ʣΛಡΉͨΊͷ
 ʮ஍ਤʯ͕ཉ͔ͬͨ͠ !28 தڃऀ ॳ৺ऀ

  29. ಈػ ॳֶऀʢࢲʣ͕
 ࣗྗͰٕज़ͷҰ࣍৘ใʢ1&1ʣΛಡΉͨΊͷ
 ʮ஍ਤʯ͕ཉ͔ͬͨ͠ !29 ॳ৺ऀ தڃऀ ೋ࣍৘ใ

  30. ಈػ ॳֶऀʢࢲʣ͕
 ࣗྗͰٕज़ͷҰ࣍৘ใʢ1&1ʣΛಡΉͨΊͷ
 ʮ஍ਤʯ͕ཉ͔ͬͨ͠ !30 ॳ৺ऀ தڃऀ ೋ࣍৘ใ Ұ࣍৘ใ

  31. ͱ͸͍͑ɾɾɾ 1&1͸ॳ৺ऀ͕໨త΋ͳ͠ʹ
 ಡΊΔΑ͏ͳ΋ͷͰ΋ͳ͍ w ӳޠͩ͠ɺྔ΋ଟ͍͠ɺ಺༰΋ਂͯ͘೉͍͠ !31

  32. ͱ͸͍͑ɾɾɾ 1&1͸ॳ৺ऀ͕໨త΋ͳ͠ʹ
 ಡΊΔΑ͏ͳ΋ͷͰ΋ͳ͍ w ӳޠͩ͠ɺྔ΋ଟ͍͠ɺ಺༰΋ਂͯ͘೉͍͠ !32 Ͳ͔͜Β ͔͡Ε͹͍͍ͷɻɻɻ ๲େͳҰ࣍৘ใ

  33. ๲େͳҰ࣍৘ใʹ৺ંΕͳ͍ͨΊʹ͸ ίʔσΟϯάΛࢧ͑Δٕज़
 ੒Γཱ͔ͪΒֶͿϓϩάϥϛϯά࡞๏
 ੢ඌହ࿨ ஶ ٕज़ධ࿦ࣾ ग़൛   ඞཁͳͱ͜Ζ͔Β͔͡Δ

     ͓͓·͔ʹ͔ͭΜͰ
 ঃʑʹৄࡉԽ͢Δ  ୺͔Βॱ൪ʹࣸܦ͢Δ !33 "NB[POIUUQTBN[OUPPW'.3G ٕज़ධ࿦ࣾIUUQTCJUMZ.'M.E/
  34. ๲େͳҰ࣍৘ใʹ৺ંΕͳ͍ͨΊʹ͸ ίʔσΟϯάΛࢧ͑Δٕज़
 ੒Γཱ͔ͪΒֶͿϓϩάϥϛϯά࡞๏
 ੢ඌହ࿨ ஶ ٕज़ධ࿦ࣾ ग़൛   ඞཁͳͱ͜Ζ͔Β͔͡Δ

     ͓͓·͔ʹ͔ͭΜͰ
 ঃʑʹৄࡉԽ͢Δ  ୺͔Βॱ൪ʹࣸܦ͢Δ !34 "NB[POIUUQTBN[OUPPW'.3G ٕज़ධ࿦ࣾIUUQTCJUMZ.'M.E/
  35. Ͳ͏΍ͬͯେ·͔ʹ௫Ήʁ w Ұൠతͳॻ੶͸໨͔࣍Βશମͷߏ଄͕͔ͭΊΔ͕ɺ
 1&1ͷ໨࣍ʢ1&1ʣ͸શͯฒྻ w ͨ·ͨ·ՄࢹԽ๏ֶͱ͍͏ϓϩδΣΫτΛ஌Δ w ๏཯ͷ৚จͷࢀরؔ܎ΛՄࢹԽ͢ΔϓϩδΣΫτ IUUQXXXMBXWJTJOGP w

    1&1΋ʮϦϯΫ͕͋Δ1&1ಉ࢜͸ԿΒ͔ͷؔ܎͕͋Δʯ ͱਪଌͰ͖Δ͔Βɺಉ͡Α͏ʹࢀরؔ܎ΛՄࢹԽ͢Δ ͜ͱͰ1&1શମͷߏ଄Λ၆ᛌͰ͖Δ͔΋ʁʁ !35
  36. None
  37. 1&1

  38. 1&1

  39. 1&1 1&1

  40. %&.0 IUUQTLPNPGSHJUIVCJPQFQ@NBQ@TJUFOFUXPSLIUNM

  41. )PX  Ͳ͏΍ͬͯ΍Δͷʁ

  42. ωοτϫʔΫ෼ੳ !42 ʮԿ͔ʯͱʮԿ͔ʯͷͭͳ͕Γͷߏ଄Λ
 ஌ΔͨΊͷ෼ੳख๏ w 4/4ͷϑΥϩʔؔ܎ ਓͱਓͱͷͭͳ͕Γ  w ࿦จͷҾ༻ؔ܎ʢ࿦จͱ࿦จͷͭͳ͕Γʣ

    ϊʔυ ϊʔυ Τοδ
  43. ख๏΋ಓ۩΋৭ʑ !43 ख๏ ಓ۩ πʔϧɾϥΠϒϥϦ 1ZUIPO /FUXPSL9 QZUIPOJHSBQI 3 J(SBQI

    +BWB4DSJQU %KT ՄࢹԽͷΈ σεΫτοϓܥ (6*πʔϧ $ZUPTDBQF (FQIJ QBKFL ՄࢹԽ த৺ੑͳͲॾࢦඪͷࢉग़ ίϛϡχςΟݕग़ FUDʜ
  44. ࠓճຬ͍ͨͨ͠ཁ݅  1ZUIPOͰҰ؏ͯ͠࡞Γ͍ͨ  ର࿩తʹૢ࡞͍ͨ͠ʢζʔϜͨ͠Γϗόʔ৘ใग़ͨ͠Γʣ  ωοτϫʔΫՄࢹԽʢ1&1શମͷߏ଄ ʹ෇ਵͯ͠ɺ
 දܗࣜ΍࣌ܥྻϓϩοτͳͲଞͷܗࣜͰ΋ද͍ࣔͨ͠ 

    ࣗ෼ͷ1$͚ͩͰಈ͘ͷͰ͸ͳ͘ɺ8FCͰެ։͍ͨ͠  ӡ༻ʹύϫʔΛׂ͖ͨ͘ͳ͍ʢαʔόΛ࣋ͪͨ͘ͳ͍ʣ !44
  45. ࠓճຬ͍ͨͨ͠ཁ݅  1ZUIPOͰҰ؏ͯ͠࡞Γ͍ͨ  ର࿩తʹૢ࡞͍ͨ͠ʢζʔϜͨ͠Γϗόʔ৘ใग़ͨ͠Γʣ  ωοτϫʔΫՄࢹԽʢ1&1શମͷߏ଄ ʹ෇ਵͯ͠ɺ
 දܗࣜ΍࣌ܥྻϓϩοτͳͲଞͷܗࣜͰ΋ද͍ࣔͨ͠ 

    ࣗ෼ͷ1$͚ͩͰಈ͘ͷͰ͸ͳ͘ɺ8FCͰެ։͍ͨ͠  ӡ༻ʹύϫʔΛׂ͖ͨ͘ͳ͍ʢαʔόΛ࣋ͪͨ͘ͳ͍ʣ !45
  46. ࠓճຬ͍ͨͨ͠ཁ݅  1ZUIPOͰҰ؏ͯ͠࡞Γ͍ͨ  ର࿩తʹૢ࡞͍ͨ͠ʢζʔϜͨ͠Γϗόʔ৘ใग़ͨ͠Γʣ  ωοτϫʔΫՄࢹԽʢ1&1શମͷߏ଄ ʹ෇ਵͯ͠ɺ
 දܗࣜ΍࣌ܥྻϓϩοτͳͲଞͷܗࣜͰ΋ද͍ࣔͨ͠ 

    ࣗ෼ͷ1$͚ͩͰಈ͘ͷͰ͸ͳ͘ɺ8FCͰެ։͍ͨ͠  ӡ༻ʹύϫʔΛׂ͖ͨ͘ͳ͍ʢαʔόΛ࣋ͪͨ͘ͳ͍ʣ !46
  47. ࠓճຬ͍ͨͨ͠ཁ݅  1ZUIPOͰҰ؏ͯ͠࡞Γ͍ͨ  ର࿩తʹૢ࡞͍ͨ͠ʢζʔϜͨ͠Γϗόʔ৘ใग़ͨ͠Γʣ  ωοτϫʔΫՄࢹԽʢ1&1શମͷߏ଄ ʹ෇ਵͯ͠ɺ
 දܗࣜ΍࣌ܥྻϓϩοτͳͲଞͷܗࣜͰ΋ද͍ࣔͨ͠ 

    ࣗ෼ͷ1$͚ͩͰಈ͘ͷͰ͸ͳ͘ɺ8FCͰެ։͍ͨ͠  ӡ༻ʹύϫʔΛׂ͖ͨ͘ͳ͍ʢαʔόΛ࣋ͪͨ͘ͳ͍ʣ !47
  48. 1&1͕ ࢀর͍ͯ͠Δ1&1ͷ Ұཡ 1&1͕ ࢀর͞Ε͍ͯΔ1&1 ͷҰཡ

  49. ࠓճຬ͍ͨͨ͠ཁ݅  1ZUIPOͰҰ؏ͯ͠࡞Γ͍ͨ  ର࿩తʹૢ࡞͍ͨ͠ʢζʔϜͨ͠Γϗόʔ৘ใग़ͨ͠Γʣ  ωοτϫʔΫՄࢹԽʢ1&1શମͷߏ଄ ʹ෇ਵͯ͠ɺ
 දܗࣜ΍࣌ܥྻϓϩοτͳͲଞͷܗࣜͰ΋ද͍ࣔͨ͠ 

    ࣗ෼ͷ1$͚ͩͰಈ͘ͷͰ͸ͳ͘ɺ8FCͰެ։͍ͨ͠  ӡ༻ʹύϫʔΛׂ͖ͨ͘ͳ͍ʢαʔόΛ࣋ͪͨ͘ͳ͍ʣ !49
  50. ࠓճຬ͍ͨͨ͠ཁ݅  1ZUIPOͰҰ؏ͯ͠࡞Γ͍ͨ  ର࿩తʹૢ࡞͍ͨ͠ʢζʔϜͨ͠Γϗόʔ৘ใग़ͨ͠Γʣ  ωοτϫʔΫՄࢹԽʢ1&1શମͷߏ଄ ʹ෇ਵͯ͠ɺ
 දܗࣜ΍࣌ܥྻϓϩοτͳͲଞͷܗࣜͰ΋ද͍ࣔͨ͠ 

    ࣗ෼ͷ1$͚ͩͰಈ͘ͷͰ͸ͳ͘ɺ8FCͰެ։͍ͨ͠  ӡ༻ʹύϫʔΛׂ͖ͨ͘ͳ͍ʢαʔόΛ࣋ͪͨ͘ͳ͍ʣ !50
  51. બΜͩ΋ͷ  #FBVUJGVMTPVQ εΫϨΠϐϯάʣ  QBOEBT σʔλͷ੔ܗ   /FUXPSL9ʢωοτϫʔΫߏ଄Խத৺ੑࢉग़ͳͲʣ

     #PLFI ΠϯλϥΫςΟϒͳՄࢹԽ
 ɹɹɹɹ)5.-ͰΞ΢τϓοτ   (*U)VC1BHFTͰެ։ !51
  52. /FUXPSL9 ෳࡶωοτϫʔΫͷͨΊͷ1ZUIPOύοέʔδ !52 NetworkX is a Python package for the

    creation, manipulation, and study of the structure, dynamics, and functions of complex networks. https://networkx.github.io/ w࠷৽҆ఆ൛ wʜʜͷ͚ͩͲɺઌिͷ3$൛͕ϓϨϦϦʔε͞Εͨ wࡢ೥ ೥ ɺ೥ͿΓͷϝδϟʔόʔδϣϯΞοϓ w IUUQTOFUXPSLYHJUIVCJPEPDVNFOUBUJPOOFUXPSLY SFMFBTFSFMFBTF@IUNM
  53. Ҏ߱ͰQBOEBTͱͷ࿈ܞ͕ศརʹ !53    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
  54. QBOEBTͱͷ࿈ܞʹ͍ͭͯ  ൃදऴྃޙͷٳܜ࣌ؒʹɺ
 QBOEBTͱͷ࿈ܞʹ͍࣭ͭͯ໰͕͋ͬͨͷͰิ଍͠·͢ɻ ௥ՃεϥΠυ̍ NetworkXͷIntorductionͷʮ(SBQI$SFBUJPOʯͰ͸ɺadd_edgeؔ਺΍add_nodeؔ ਺Λ࢖ͬͯάϥϑߏ଄Λ࡞੒͢Δํ๏͕঺հ͞Ε͍ͯ·͕͢ɺNetworkXͰ͸͜ΕҎ֎ ʹ΋ࣙॻɺϦετɺNumpyɺSciPyɺpandasͳͲͰ࡞ͬͨσʔλ͔Βάϥϑߏ଄Λੜ ੒͢Δ͜ͱ͕Ͱ͖·͢ɻ Converting

    to and from other data formats To NetworkX Graph https://networkx.github.io/documentation/stable/reference/convert.html
  55. QBOEBTͱͷ࿈ܞʹ͍ͭͯ  NetworkX 1Ͱ΋pandasͰ࡞ͬͨσʔλߏ଄͔ΒάϥϑΛੜ੒͢Δؔ਺͸༻ҙ͞Ε͍ͯ· ͕ͨ͠ɺʮfrom_pandas_dataframeؔ਺Ͱpandas͔ΒNetworkXʹม׵͢Δͱ͖͸ࢬϦ ετܗࣜͷσʔλϑϨʔϜΛ࢖͏͕ɺto_pandas_dataframeؔ਺ͰNetworkX͔Βpandas ʹม׵͢Δͱྡ઀ߦྻܗࣜͷσʔλϑϨʔϜ͕Ͱ͖Δʯͱ͍͏ඇରশͳAPI࢓༷ʹͳͬͯ ͍·ͨ͠ɻͦͷͨΊɺNetworkX 2.0Ͱ͸ɺྡ઀ߦྻͱΤοδϦετͦΕͧΕʹରԠͨؔ͠ ਺͕4ͭ༻ҙ͞Ε·ͨ͠ɻ

    Pandas | Converting to and from other data formats To NetworkX Graph https://networkx.github.io/documentation/stable/reference/convert.html#pandas Issue #2464: to_pandas_dataframe is not the inverse of from_pandas_dataframe https://github.com/networkx/networkx/issues/2464 ͜ͷ࣌௥Ճ͞Εͨfrom_pandas_adjacencyؔ਺ʹΑΓɺྡ઀ߦྻܗࣜͷpandasͷσʔλ ϑϨʔϜ͔Βάϥϑߏ଄Λ࡞ΕΔΑ͏ʹͳΓ·ͨ͠ɻࠓ·Ͱ΋NumpyܗࣜͰྡ઀ߦྻΛ ࡞ͬͯάϥϑߏ଄ʹม׵͢Δؔ਺͸͋ͬͨͷͰ͕͢ɺfrom_pandas_adjacencyؔ਺Λ࢖ ͏ͱpandasͷߦ໊ɾྻ໊͕ϊʔυ໊ʹׂΓ౰ͯΒΕΔͷͰɺݸਓతʹ͸Θ͔Γ΍ͯ͘͢ ศརʹͳͬͨͱࢥ͍ͬͯ·͢ɻ ௥ՃεϥΠυ
  56. QBOEBTͱͷ࿈ܞʹ͍ͭͯ  ͕ɺ͜ͷfrom_pandas_adjacencyؔ਺ɺͰ͖ͨͯ΄΍΄΍ͷͨΊ͔2.0΍2.1ͩͱόάΛ౿ ΉՄೳੑ͕͋Γ·͢ɻ݁࿦͔Βݴ͏ͱ2018/9/22ݱࡏ࠷৽൛ͷ2.2Λ࢖༻͠·͠ΐ͏ɻ 2.0ͷ࣌఺Ͱ͸ɺ༗޲άϥϑ͕࡞੒͞Εͳ͍ෆ۩߹͕͋Γ·͢ɻ Issue #2828: Cannot create multiedge

    graph from an adjacency matrix in pandas https://github.com/networkx/networkx/issues/2828 2.1ͷ࣌఺Ͱ͸ɺߦॱͱྻॱΛἧ͑ͳ͍ͱҙਤ͠ͳ͍άϥϑ͕࡞੒͞ΕΔෆ۩߹͕͋Γ· ͢ɻ Issue #3105 : When using 'from_pandas_adjacency', edges are added focusing on column names rather than the order https://github.com/networkx/networkx/issues/3105 ͲͪΒ΋2.2ͷ࣌఺Ͱ͸मਖ਼͞Ε͍ͯ·͕͢ɺԿΒ͔ͷཧ༝Ͱݹ͍όʔδϣϯΛ࢖͏ඞཁ ͕͋Δ৔߹͸஫ҙ͍ͯͩ͘͠͞ɻ ·ͨɺࠓճͷPEPͷࢀরؔ܎ωοτϫʔΫ͸ϊʔυ਺͕͔͔ͨͩ400ʙ500ఔ౓ͳͷͰྡ ઀ߦྻΛ࢖ͬͯ΋ಛʹ໰୊͸͋Γ·ͤΜ͕ɺҰൠతʹ͸ʢಛʹૄͳάϥϑͰ͸ʣΤοδ Ϧετͷํ͕ྡ઀ߦྻΑΓ΋ίϯύΫτʹσʔλΛѻ͑ΔͷͰɺঢ়گʹΑΓ࢖͍෼͚· ͠ΐ͏ɻ ௥ՃεϥΠυ ௥ՃεϥΠυ͸͜͜·ͰͰ͢ɻ
  57. #PLFI !57 ΠϯλϥΫςΟϒͳՄࢹԽϥΠϒϥϦ Bokeh is an interactive visualization library that

    targets modern web browsers for presentation. (ུ) 
 Bokeh can help anyone who would like to quickly and easily create interactive plots, dashboards, and data applications. https://bokeh.pydata.org/en/latest/ !57
  58. ͳͥ#PLFI  ࠷ॳͷֶशͷϋʔυϧ͕௿͔ͬͨ w ೔ຊޠॻ੶ͷଘࡏ w 1ZUIPOϢʔβͷͨΊͷ+VQZUFS/PUFCPPL<࣮ફ>ೖ໳
 ٕज़ධ࿦ࣾ  

    ΍Γ͍ͨ͜ͱ͕ຬͨͤͦ͏ͩͬͨ w ϗόʔ΍ζʔϜػೳ͕खܰʹ࡞ΕΔ w IUNMϑΝΠϧ΍+VQZUFS/PUFCPPLʹग़ྗͰ͖Δ  ࡢ೥/FUXPSL9ͱͷ࿈ܞ͕ਖ਼ࣜʹαϙʔτ͞Εͨ w  SFMFBTF !58
  59. ͳͥ#PLFI  ࠷ॳͷֶशͷϋʔυϧ͕௿͔ͬͨ w ೔ຊޠॻ੶ͷଘࡏ w 1ZUIPOϢʔβͷͨΊͷ+VQZUFS/PUFCPPL<࣮ફ>ೖ໳
 ٕज़ධ࿦ࣾ  

    ΍Γ͍ͨ͜ͱ͕ຬͨͤͦ͏ͩͬͨ w ϗόʔ΍ζʔϜػೳ͕खܰʹ࡞ΕΔ w IUNMϑΝΠϧ΍+VQZUFS/PUFCPPLʹग़ྗͰ͖Δ  ࡢ೥/FUXPSL9ͱͷ࿈ܞ͕ਖ਼ࣜʹαϙʔτ͞Εͨ w  SFMFBTF !59
  60. ೥͔͔ͬͯϦϦʔε͞Εͨ !60 ೥ʹJTTVFཱ͕ͭʹϦϦʔε IUUQTHJUIVCDPNCPLFICPLFIJTTVFT

  61. 7JTVBMJ[JOH/FUXPSL(SBQIT !61 IUUQTCPLFIQZEBUBPSHFOMBUFTUEPDT VTFS@HVJEFHSBQIIUNM

  62. (SBQI3FOEFSFS

  63. (SBQI3FOEFSFSొ৔લ !63 ԁ $JSDMFʣͱઢ .VMUJ-JOF ͷ෦඼Λࣗ෼Ͱ഑ஔ͢Δ ྫ /FUXPSL97JTVBMJ[BUJPO1PXFSFECZ#PLFI
  CZ#KÖSO.FJFS&VSP1ZUIPO

     w IUUQTQZWJEFPPSHFVSPQZUIPOOFUXPSLYWJTVBMJ[BUJPOQPXFSFECZ CPLFIIUNM
  64. (SBQI3FOEFSFSొ৔લ !64 େมͳ఺ w ԁͱ௚ઢΛҰॹʹඳը͍ͯ͠Δ͚ͩͰɺ
 ಺෦తʹ͸άϥϑߏ଄͸͍࣋ͬͯͳ͍ w ԁʢϊʔυʣͷҐஔͱ௚ઢʢΤοδʣͷઌ୺ɾऴ୺ͷ
 ҐஔΛͦΕͧΕઃఆ͢Δඞཁ͕͋Δ ԁ

    $JSDMFʣͱઢ .VMUJ-JOF ͷ෦඼Λࣗ෼Ͱ഑ஔ͢Δ ྫ /FUXPSL97JTVBMJ[BUJPO1PXFSFECZ#PLFI
  CZ#KÖSO.FJFS&VSP1ZUIPO  w IUUQTQZWJEFPPSHFVSPQZUIPOOFUXPSLYWJTVBMJ[BUJPOQPXFSFECZ CPLFIIUNM
  65. (SBQI3FOEFSFSొ৔ޙ !65 CPLFIͱͯ͠ɺͪΌΜͱʮϊʔυͱΤοδΛ࣋ͭʯάϥϑߏ଄Λ ѻ͑ΔΑ͏ʹͳͬͨ w OPEF@SFOEFSFSଐੑɺFEHF@SFOEFSFSଐੑ w IUUQTCPLFIQZEBUBPSHFOMBUFTUEPDTSFGFSFODFNPEFMT SFOEFSFSTIUNM(SBQI3FOEFSFS خ͍͠఺

    w Ґஔ৘ใΛ࣋ͭͷ͕ҰՕॴͰࡁΉ w MBZPVU@QSPWJEFSଐੑ w ϊʔυ΍ΤοδΛλοϓɾϗόʔ
 ͨ͠ͱ͖ͷΠϯλϥΫγϣϯ͕ྑ͍
  66. GSPN@OFUXPSLYؔ਺ !66 /FUXPSL9ͷάϥϑߏ଄ OY(SBQI Λɺ #PLFIͷάϥϑߏ଄ʢ(SBQI3FOEFSFSʣʹม׵͢Δؔ਺ w IUUQTCPLFIQZEBUBPSHFOMBUFTUEPDTSFGFSFODFNPEFMTHSBQITIUNM

  67. GSPN@OFUXPSLYؔ਺ !67 /FUXPSL9ͷάϥϑߏ଄ OY(SBQI Λɺ #PLFIͷάϥϑߏ଄ʢ(SBQI3FOEFSFSʣʹม׵͢Δؔ਺ w IUUQTCPLFIQZEBUBPSHFOMBUFTUEPDTSFGFSFODFNPEFMTHSBQITIUNM

  68. GSPN@OFUXPSLYؔ਺ !68 /FUXPSL9ͷάϥϑߏ଄ OY(SBQI Λɺ #PLFIͷάϥϑߏ଄ʢ(SBQI3FOEFSFSʣʹม׵͢Δؔ਺ w IUUQTCPLFIQZEBUBPSHFOMBUFTUEPDTSFGFSFODFNPEFMTHSBQITIUNM

  69. ϋϚΔϙΠϯτ ϥΠϒϥϦͷόʔδϣϯ ԁͷαΠζ࢓༷ͷҧ͍ ϊʔυଐੑΤοδଐੑͷม׵ CPLFI͸༗޲άϥϑ͸ඳըͰ͖ͳ͍ !69

  70. ϥΠϒϥϦͷόʔδϣϯ !70 w ͲͪΒ΋࠷৽ͩͬͨΒ0, w #PLFIɺ/FUXPSL9 ࣌ظ ϥΠϒϥϦ όʔδϣϯ Πϕϯτ

     #PLFI  άϥϑߏ଄αϙʔτ  /FUXPSL9  ೥ͿΓͷ ϝδϟʔόʔδϣϯΞοϓ  #PLFI  /FUXPSL9ʹରԠ
  71. ԁͷαΠζ࢓༷ͷҧ͍ !71 w /FUXPSL9
 ඳըؔ਺ OYESBX@OFUXPSLYͳͲ ͷ
 தͰNBUQMPUMJCΛ࢖͍ͬͯΔ
 αΠζࢦఆΛOഒʹ͢Δͱ
 ɹ໘ੵ͕OഒʹͳΔ

    w #PLFI ɹԁ $JSDMF ͷαΠζࢦఆΛOഒʹ͢Δͱ
 ɹ൒ܘ͕OഒʹͳΔ
  72. ϊʔυଐੑΤοδଐੑͷม׵ /FUXPSL9Ͱ͸ɺ
 ϊʔυͱΤοδʹଐੑΛ࣋ͨͤΔ͜ͱ͕Ͱ͖Δ w TFU@OPEF@BUUSJCVUFTؔ਺ w TFU@FEHF@BUUSJCVUFTؔ਺

  73. ϊʔυଐੑΤοδଐੑͷม׵ 5JUMF 4UZMF(VJEFGPS 1ZUIPO$PEF 4UBUVT "DUJWF 5ZQF 1SPDFTT $SFBUFE +VM

       5JUMF ʜ 4UBUVT ʜ 5ZQF ʜ $SFBUFE ʜ 5JUMF ʜ 4UBUVT ʜ 5ZQF ʜ $SFBUFE ʜ
  74. ϊʔυଐੑΤοδଐੑͷม׵ /FUXPSL9Ͱ͸ɺ
 ϊʔυͱΤοδʹଐੑΛ࣋ͨͤΔ͜ͱ͕Ͱ͖Δ w TFU@OPEF@BUUSJCVUFTؔ਺ w TFU@FEHF@BUUSJCVUFTؔ਺

  75. ϊʔυଐੑΤοδଐੑͷม׵ GSPN@OFUXPSLYؔ਺Λ࢖ͬͯ /FUXPSL9͔Β#PLFIͷߏ଄ʹม׵ͯ͠΋ /FUXPSL9Ͱઃఆͨ͠ϊʔυͱΤοδͷଐੑ͸ #PLFIʹҾ͖ܧ͕Ε·ͤΜ #PLFI࣌఺  /FUXPSL9Ͱ͸ɺ
 ϊʔυͱΤοδʹଐੑΛ࣋ͨͤΔ͜ͱ͕Ͱ͖Δ w

    TFU@OPEF@BUUSJCVUFTؔ਺ w TFU@FEHF@BUUSJCVUFTؔ਺
  76. ม׵ޙʹଐੑΛ࠶ઃఆ͢Δ /FUXPSL9ʹ͓͚Δϊʔυଐੑͷ࣋ͪํ ࣙॻͷࣙॻʣ \bQFQ`\b5JUMF`b4UZMF(VJEFGPS1ZUIPO$PEF`  b4UBUVT`b"DUJWF`  b5ZQF`b1SPDFTT`  b$SFBUFE``+VM`^

     bQFQ`\b5JUMF`b5IF;FOPG1ZUIPO`  b4UBUVT`b"DUJWF`  b5ZQF`b*OGPSNBUJPOBM`  b$SFBUFE``"VH`^  bQFQ`\b5JUMF`b%PDTUSJOH$POWFOUJPOT`  b4UBUVT`b"DUJWF`  b5ZQF`b*OGPSNBUJPOBM`  b$SFBUFE``.BZ`^ ϊʔυͷΩʔ ϊʔυͷଐੑ
  77. ม׵ޙʹଐੑΛ࠶ઃఆ͢Δ #PLFIʹ͓͚Δϊʔυଐੑͷ࣋ͪํʢϦετͷࣙॻʣ \bJOEFY`<`QFQ` `QFQ` bQFQ`>  b5JUMF`<b4UZMF(VJEFGPS1ZUIPO$PEF`  b5IF;FOPG1ZUIPO` 

    %PDTUSJOH$POWFOUJPOT`>  b4UBUVT`<b"DUJWF` b"DUJWF` b"DUJWF`>  b5ZQF`<b1SPDFTT` b*OGPSNBUJPOBM` b*OGPSNBUJPOBM`>  b$SFBUFE`<`+VM` `"VH` `.BZ`> ^ ϊʔυͷଐੑ ϊʔυͷΩʔ
  78. ม׵࠶ઃఆ͢Δίʔυɻɻɻ ϊʔυଐੑΛ
 OYCPLFIʹ
 ม׵ ϊʔυଐੑΛ CPLFIʹઃఆ ΤοδଐੑΛ
 OYCPLFIʹ ม׵ ΤοδଐੑΛ

    CPLFIʹઃఆ IUUQTHJUIVCDPNCPLFICPLFIJTTVFT
  79. None
  80. None
  81. JTTVF13

  82. JTTVF13 ࡢ೔   Ϛʔδ͞Εͨ

  83. ࣍ͷόʔδϣϯ  Ͱ൓ө͞Ε·͢ IUUQTHJUIVCDPNCPLFICPLFIQVMM

  84. ༗޲άϥϑ͸ඳըͰ͖ͳ͍ ༗޲άϥϑ ແ޲άϥϑ l)PXUPESBXEJSFDUFEOFUXPSLHSBQIT z #PLFIͷϝʔϦϯάϦετ IUUQTHSPVQTHPPHMFDPNBDPOUJOVVNJPGPSVNNTFBSDIJO CPLFIOFUXPSLYCPLFI&BEU3ZF1"

  85. ϋϚΔϙΠϯτ ϥΠϒϥϦͷόʔδϣϯ ԁͷαΠζ࢓༷ͷҧ͍ ϊʔυଐੑΤοδଐੑͷม׵ CPLFI͸༗޲άϥϑ͸ඳըͰ͖ͳ͍ !85

  86. ΠϯλϥΫγϣϯͷ௥Ճ w͜ͷ͋ͨΓ͸ɺ/FUXPSL9ʹݶΒͳ͍CPLFIͷҰൠతͳ࿩ wζʔϜ΍ϗόʔૢ࡞ w$POpHVSJOH1MPU5PPM
 IUUQTCPLFIQZEBUBPSHFOMBUFTUEPDTVTFS@HVJEFUPPMTIUNM w΢ΟδΣοτΛઃஔ͢Δ w"EEJOH8JEHFUT
 IUUQTCPLFIQZEBUBPSHFOMBUFTUEPDTVTFS@HVJEFJOUFSBDUJPO XJEHFUTIUNMVTFSHVJEFJOUFSBDUJPOXJEHFUT wਤΛλοϓͯ͠ɺଞͷ΢ΟδΣοτͳͲͷදࣔΛมԽͤ͞Δ

    w+BWB4DSJQU$BMMCBDLT
 IUUQTCPLFIQZEBUBPSHFOMBUFTUEPDTVTFS@HVJEFJOUFSBDUJPO DBMMCBDLTIUNMVTFSHVJEFJOUFSBDUJPOKTDBMMCBDLT !86
  87. ͲΜͳϢʔεέʔεͰ࢖͑ͦ͏ʁ w ՄࢹԽͷ݁ՌΛ8FC্Ͱָʹެ։͍ͨ͠ w +VQZUFS/PUFCPPL্Ͱ/FUXPSL9Λ࢖ͬͯ
 ࡞ۀ͍ͯ͠Δͱ͖ʹɺͬ͘͞ͱର࿩తͳՄࢹԽΛ͍ͨ͠ w ͦΜͳʹେ͖͘ͳ͍άϥϑߏ଄ʢϊʔυ਺,ະຬ  w

    ·ͩൃల్্ײ͸͋Δ w 13ૹΓ͍ͨਓ͸ૂ͍໨ͩΑ !87
  88. ·ͱΊ w1&1ΛࣗྗͰಡΉͱ͖ʹָʹͳΔπʔϧ͕ཉ͍͠
 ͱ͍͏ಈػ͔Βɺ
 1&1ͷࢀরؔ܎ΛՄࢹԽ͢Δ׆ಈΛͯ͠·ͨ͠ wͦͷ׆ಈͷதͰ
 /FUXPSL9ͱ#PLFIΛ࢖ͬͯ
 ΠϯλϥΫςΟϒͳωοτϫʔΫՄࢹԽΛߦͬͨͷͰ
 ͦͷϊ΢ϋ΢Λ঺հ͠·ͨ͠ !88

  89. 1&1

  90. #PLFI /FUXPSL9

  91. ͜Ε͔Β΋ࡉ͘௕͘ଓ͚·͢ !91 IUUQTHJUIVCDPNLPNPGSQFQ@NBQ@TJUF

  92. !LPNP@GS

  93. "QQFOEJY

  94. 1&1.BQc5JNFMJOF 1&1ͷࢀরؔ܎Λ࣌ܥྻܗࣜͰදࣔ IUUQTLPNPGSHJUIVCJPQFQ@NBQ@TJUFUJNFMJOFIUNM !94

  95. 1&1.BQc/FUXPSL 1&1ͷࢀরؔ܎ΛωοτϫʔΫਤͰදࣔ IUUQTLPNPGSHJUIVCJPQFQ@NBQ@TJUFOFUXPSLIUNM !95