Save 37% off PRO during our Black Friday Sale! »

(ほぼ)Pythonだけで分析基盤を作った #kwskrb #51

(ほぼ)Pythonだけで分析基盤を作った #kwskrb #51

ScrapyとAirflow,Jupyter(holoviews)で野球データ分析基盤を作りましたというLT.

kawasaki.rb #51 5年目突入LT大会
https://kawasakirb.connpass.com/event/64466/

2c0947c6a28e7f771ebd9859ecf54e5c?s=128

Shinichi Nakagawa

August 22, 2017
Tweet

Transcript

  1. (΄΅)Python͚ͩͰ෼ੳج൫Λ࡞ͬͨϋφγ ʙPyConJP 2017นଧͪฤʙ Shinichi Nakagawa(Retty.Inc Engineer/Baseball Analyst) kawasaki.rb #051 5೥໨ಥೖLTେձ

  2. ਖ਼૷ = ໺ٿϢχϑΥʔϜʂ ※ࣸਅ෇͖ͰγΣΞ͓ئ͍͠·͢ʂ

  3. Who am I ?(͓લ୭Α) • Pythonք۾ͷʮ໺ٿͷਓʯͰ͢ • Shinichi Nakagawa(@shinyorke) •

    Retty.Inc Engineering Manager
 ݉,ڕྉཧ୲౰ • Baseball Scientist/໺ٿσʔλ෼ੳऀ • #Python #SABRmetrics #໺ٿ౷ܭֶ #Agile #Scrum
  4. Starting member(͓͠ͳ͕͖) • Kawasaki.rb5೥໨ಥೖ͓ΊͰͱ͏͍͟͝·͢ • PythonͰͭ͘ΔʮԶʑ໺ٿ෼ੳج൫ʯ • Scrapy(σʔλूΊ) • sabr

    + SQLAlchemy(લॲཧ) • Airflow(λεΫ੍ޚ) • ʲ࣮ફྫʳΧʔϓ͕ڧ͗͢Δཧ༝ΛwRAAͰূ໌͢Δ
  5. 5೥໨ಥೖ ͓ΊͰͱ͏͍͟͝·͢ʂ

  6. ࢲͱ #kwskrb • ॳࢀՃ(2014/8)ɿPyCon JP 2014นଧͪLT • ೋճ໨(2015/9)ɿPyCon JP 2015นଧͪLT(2೥࿈ଓ)

    • ࡾճ໨(2016/8)ɿPyCon JP 2016นଧͪLT(3೥࿈ଓ)
 ※઒࡚Rubyձٞ01 LT • ࢛ճ໨(2016/12)ɿҿΈͨ͞ͱ࿩ͨ͠͞Ͱ๨೥ձࢀՃ • ޒճ໨(2017/8)ɿ PyCon JP 2017นଧͪLT(4೥࿈ଓ)←ΠϚίί
  7. (΋͔ͯ͠͠) #kwskpy ?

  8. ͱ͍͏Θ͚Ͱ ࠓ೔΋Pythonͷ࿩Λ

  9. ໺ٿΛՊֶ͢Δٕज़ PythonΛ༻͍ͨ౷ܭϥΠϒϥϦ࡞੒ͱ෼ੳج൫ߏங 9/8(ۚ) 10:55 a.m.-11:25 a.m. https://pycon.jp/2017/ja/schedule/presentation/15/

  10. ࠓ೔͸෼ੳج൫ͱ ͪΐͬͱͨ͠෼ੳ&ՄࢹԽΛ ൸࿐͠·͢

  11. Զʑ໺ٿ෼ੳج൫(શମ૾)

  12. Զʑ໺ٿ෼ੳج൫(શମ૾) ᶃ4DSBQZ εΫϨΠϐϯά  બख੒੷Λ୳ͯ͠อଘ

  13. Զʑ໺ٿ෼ੳج൫(શମ૾) ᶃ4DSBQZ εΫϨΠϐϯά  બख੒੷Λ୳ͯ͠อଘ ᶄલॲཧ 4"#3NFUSJDT  ࢦඪ஋ܭࢉσʔλߋ৽

  14. Զʑ໺ٿ෼ੳج൫(શମ૾) ᶃ4DSBQZ εΫϨΠϐϯά  બख੒੷Λ୳ͯ͠อଘ ᶄલॲཧ 4"#3NFUSJDT  ࢦඪ஋ܭࢉσʔλߋ৽ ᶅ෼ੳՄࢹԽ

    +VQZUFS  σʔλΛΰχϣͬͯՄࢹԽ
  15. Զʑ໺ٿ෼ੳج൫(શମ૾) ᶃ4DSBQZ εΫϨΠϐϯά  બख੒੷Λ୳ͯ͠อଘ ᶄલॲཧ 4"#3NFUSJDT  ࢦඪ஋ܭࢉσʔλߋ৽ ᶅ෼ੳՄࢹԽ

    +VQZUFS  σʔλΛΰχϣͬͯՄࢹԽ "JSqPX +0#؅ཧ  εΫϨΠϐϯάલॲཧͷ࣮ߦ੍ޚ
  16. ίΞٕज़(ओʹPython) • Scrapy • લॲཧ(sabr + SQLAlchemy) • Airflow
 


    ※Jupyter͸ΈΜͳ஌ͬͯΔͱࢥ͏ͷͰলུ
  17. ScrapyʙΫϩʔϥʔFW • WebαΠτͷΫϩʔϧͱεΫϨΠϐϯά,σʔλͷอଘͳ ͲΛҰؾ௨؏ʹߦ͑ΔΫϩʔϥʔFW • ΫϩʔϥʔքͷDjango/Ruby On RailsͱݺΜͰ͍͍ଘࡏ • εέδϡʔϥʔ,UserAgent,HTTP

    Header,μ΢ϯϩʔυͷ λΠϛϯά,Ωϟογϡetc…ඞཁʹͳΔ΋ͷ͕͋Β͔͡Ί ༻ҙ͞Ε͍ͯΔ&ύϥϝʔλͷઃఆͳͲͰ؆୯ʹઃఆՄೳ
  18. લॲཧ(sabr + SQLAlchemy) • ʲ՝୊ʳԿ౓΋ग़ͯ͘ΔηΠόʔϝτϦΫεܭࢉ
 ຖճίʔυॻ͘ͷ΋ΞϨͩͳ͋ • ͱ͍͏Θ͚Ͱ,OPS,RC,wOBA,wRAA,ΞμϜɾμϯ཰etc…
 Λܭࢉ͢ΔΫϥεΛύοέʔδʹͯ͠ެ։ •

    https://github.com/Shinichi-Nakagawa/sabr • εΫϨΠϐϯάͨ݁͠Ռ͔Βࢦඪܭࢉ͢ΔΑ͏ʹͨ͠
 DBૢ࡞͸SQLAlchemy(O/R Mapper)ͰαΫοͱ։ൃ
  19. SABR(Example) $ pip install sabr $ python >>> import sabr

    >>> from sabr.stats import Stats >>> Stats.hr9(26, 209.7) # Yu Darvish(2013) HR/9 1.1
  20. AirflowʙJOB؅ཧ • σʔλΛຖ೔Ϋϩʔϧ&εΫϨΠϐϯά
 JOB؅ཧ͍ΔΑͶ? • ͱ͍͏༁Ͱ,Airbnbۘ੡ͷʮAirflow(ؾྲྀ)ʯΛར༻
 https://airflow.incubator.apache.org/ • ؾྲྀ(airflow)ͷ༻ʹྲྀΕͯ࢖͑ΔΒ͍͠…
 ͕,๻ʹͱͬͯ͸ʮཚؾྲྀ(Turbulence)ʯͩͬͨw


    ※Կ͕ཚؾྲྀ͔͸PyCon JPຊ൪orࠓ೔ͷ࠙਌ձͰʂ • ઃఆͱ͔ಈ࡞͕Ϋι໘౗͍͘͞ͷͰDocker imageʹͨ͠(·ͩ։ൃத)
 https://hub.docker.com/r/shinyorke/airflow/
  21. [ྫ]޿ౡଧઢͱڊਓଧઢΛൺֱ • 2017/8/20࣌఺ͷσʔλͰ޿ౡͱڊਓΛൺֱ • ΄΅نఆଧ਺ͷଧऀͷwRAAΛൺֱͯ͠ධՁ
 ˞wRAA(ଧܸߩݙ౓)ɿ+10Ҏ্ੌ͍,ϚΠφε(ry • #kwskrb ͷ #51

    ճ໨ʹͪͳΜͰ,
 ޿ౡͷ #51ͷύϑΥʔϚϯεධՁ΋͍ͭͰʹ΍Δ
  22. ޿ౡVSڊਓ(نఆଧ੮Ҏ্) ޿ౡͷ਺ࣈ͕೿ख,ͳ͓ڊਓ

  23. ޿ౡVSڊਓ, wRAA(ଧܸߩݙ౓)ΛάϥϑԽ ࠨɿ޿ౡ,ӈɿڊਓ…͕ࠩ։͖͍͗͢

  24. ླ໦੣໵ͷwOBA(ॏΈ෇͖ग़ྥ཰)ͱwRAA(ଧܸߩݙ౓) 8/15-8/20·Ͱ,ԜΜͰ͍Δ19೔͸4ଧ਺ແ҆ଧ

  25. ·ͱΊ • (PythonͰશ෦Ͱ͖Δͷ͸)ݟͯͷ௨ΓͰ͢ • ऩूˠલॲཧˠՄࢹԽΛಉ͡ݴޠͰ
 Ұؾ௨؏ʹ࡞ΕΔͷ͸ָ • ScrapyͱAirflowͷ૊Έ߹ΘͤͰσʔλऩू&อଘ͸݁ߏΠέΔ
 (ͨͩ͠,Airflowͷҋ͸ਂ͍) •

    ޿ౡଧઢ͸Τά͍,ڊਓ͕Μ͹Ε,ླ໦੣໵͍͢͝ • ͳʹ͸ͱ΋͋Ε #kwskrb 5೥໨͓ΊͰͱ͏͍͟͝·͢ʂ
  26. ήʔϜηοτʂʂʂ ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠&PyCon JP 2017Ͱ͓ձ͍͠·͠ΐ͏ʂ Shinichi Nakagawa(Twitter/Facebook/hatena:@shinyorke)