Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

komo_fr

September 17, 2018
Tweet

More Decks by komo_fr

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ ;Δ͖ͱ΋͜ɹ!LPNP@GS w ॴଐ෋࢜ϑΠϧϜιϑτ΢ΤΞגࣜձࣾ w 1ZUIPOྺ1ZUIPOʙ !2 w झຯ1&1 1ZUIPO&OIBODFNFOU1SPQPTBM

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

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

      )PX  Ͳ͏΍ͬͯ࡞ͬͨͷʁ  wωοτϫʔΫ෼ੳͷಓ۩ཱͯͱબఆཧ༝ wϋϚͬͨϙΠϯτ wFUDʜ !10
  3. 1&1ͷࢀরؔ܎ !21 1&1 1&1 Style Guide for Python Code The

    Zen of Python As PEP 20 says, “Readability counts".
  4. 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.
  5. ๲େͳҰ࣍৘ใʹ৺ંΕͳ͍ͨΊʹ͸ ίʔσΟϯάΛࢧ͑Δٕज़
 ੒Γཱ͔ͪΒֶͿϓϩάϥϛϯά࡞๏
 ੢ඌହ࿨ ஶ ٕज़ධ࿦ࣾ ग़൛   ඞཁͳͱ͜Ζ͔Β͔͡Δ

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

     ͓͓·͔ʹ͔ͭΜͰ
 ঃʑʹৄࡉԽ͢Δ  ୺͔Βॱ൪ʹࣸܦ͢Δ !34 "NB[POIUUQTBN[OUPPW'.3G ٕज़ධ࿦ࣾIUUQTCJUMZ.'M.E/
  7. ख๏΋ಓ۩΋৭ʑ !43 ख๏ ಓ۩ πʔϧɾϥΠϒϥϦ 1ZUIPO /FUXPSL9 QZUIPOJHSBQI 3 J(SBQI

    +BWB4DSJQU %KT ՄࢹԽͷΈ σεΫτοϓܥ (6*πʔϧ $ZUPTDBQF (FQIJ QBKFL ՄࢹԽ த৺ੑͳͲॾࢦඪͷࢉग़ ίϛϡχςΟݕग़ FUDʜ
  8. બΜͩ΋ͷ  #FBVUJGVMTPVQ εΫϨΠϐϯάʣ  QBOEBT σʔλͷ੔ܗ   /FUXPSL9ʢωοτϫʔΫߏ଄Խத৺ੑࢉग़ͳͲʣ

     #PLFI ΠϯλϥΫςΟϒͳՄࢹԽ
 ɹɹɹɹ)5.-ͰΞ΢τϓοτ   (*U)VC1BHFTͰެ։ !51
  9. /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
  10. Ҏ߱Ͱ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
  11. 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ͷߦ໊ɾྻ໊͕ϊʔυ໊ʹׂΓ౰ͯΒΕΔͷͰɺݸਓతʹ͸Θ͔Γ΍ͯ͘͢ ศརʹͳͬͨͱࢥ͍ͬͯ·͢ɻ ௥ՃεϥΠυ
  12. 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ఔ౓ͳͷͰྡ ઀ߦྻΛ࢖ͬͯ΋ಛʹ໰୊͸͋Γ·ͤΜ͕ɺҰൠతʹ͸ʢಛʹૄͳάϥϑͰ͸ʣΤοδ Ϧετͷํ͕ྡ઀ߦྻΑΓ΋ίϯύΫτʹσʔλΛѻ͑ΔͷͰɺঢ়گʹΑΓ࢖͍෼͚· ͠ΐ͏ɻ ௥ՃεϥΠυ ௥ՃεϥΠυ͸͜͜·ͰͰ͢ɻ
  13. #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
  14. ͳͥ#PLFI  ࠷ॳͷֶशͷϋʔυϧ͕௿͔ͬͨ w ೔ຊޠॻ੶ͷଘࡏ w 1ZUIPOϢʔβͷͨΊͷ+VQZUFS/PUFCPPL<࣮ફ>ೖ໳
 ٕज़ධ࿦ࣾ  

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

    ΍Γ͍ͨ͜ͱ͕ຬͨͤͦ͏ͩͬͨ w ϗόʔ΍ζʔϜػೳ͕खܰʹ࡞ΕΔ w IUNMϑΝΠϧ΍+VQZUFS/PUFCPPLʹग़ྗͰ͖Δ  ࡢ೥/FUXPSL9ͱͷ࿈ܞ͕ਖ਼ࣜʹαϙʔτ͞Εͨ w  SFMFBTF !59
  16. (SBQI3FOEFSFSొ৔લ !64 େมͳ఺ w ԁͱ௚ઢΛҰॹʹඳը͍ͯ͠Δ͚ͩͰɺ
 ಺෦తʹ͸άϥϑߏ଄͸͍࣋ͬͯͳ͍ w ԁʢϊʔυʣͷҐஔͱ௚ઢʢΤοδʣͷઌ୺ɾऴ୺ͷ
 ҐஔΛͦΕͧΕઃఆ͢Δඞཁ͕͋Δ ԁ

    $JSDMFʣͱઢ .VMUJ-JOF ͷ෦඼Λࣗ෼Ͱ഑ஔ͢Δ ྫ /FUXPSL97JTVBMJ[BUJPO1PXFSFECZ#PLFI
  CZ#KÖSO.FJFS&VSP1ZUIPO  w IUUQTQZWJEFPPSHFVSPQZUIPOOFUXPSLYWJTVBMJ[BUJPOQPXFSFECZ CPLFIIUNM
  17. ϥΠϒϥϦͷόʔδϣϯ !70 w ͲͪΒ΋࠷৽ͩͬͨΒ0, w #PLFIɺ/FUXPSL9 ࣌ظ ϥΠϒϥϦ όʔδϣϯ Πϕϯτ

     #PLFI  άϥϑߏ଄αϙʔτ  /FUXPSL9  ೥ͿΓͷ ϝδϟʔόʔδϣϯΞοϓ  #PLFI  /FUXPSL9ʹରԠ
  18. ϊʔυଐੑΤοδଐੑͷม׵ 5JUMF 4UZMF(VJEFGPS 1ZUIPO$PEF 4UBUVT "DUJWF 5ZQF 1SPDFTT $SFBUFE +VM

       5JUMF ʜ 4UBUVT ʜ 5ZQF ʜ $SFBUFE ʜ 5JUMF ʜ 4UBUVT ʜ 5ZQF ʜ $SFBUFE ʜ
  19. ม׵ޙʹଐੑΛ࠶ઃఆ͢Δ /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`^ ϊʔυͷΩʔ ϊʔυͷଐੑ
  20. ม׵ޙʹଐੑΛ࠶ઃఆ͢Δ #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`> ^ ϊʔυͷଐੑ ϊʔυͷΩʔ
  21. 1&1