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

(修正版) NumPy/pandas使いのためのテスト自動化入門 / PyConJP2020

komo_fr
August 29, 2020

(修正版) NumPy/pandas使いのためのテスト自動化入門 / PyConJP2020

PyCon JP 2020での発表スライドです。
---------------------------
(2020/08/30) 誤字を修正しました。
場所: p15
誤: assert_array_close()
正: assert_allclose()
---------------------------
(2020/08/31) 誤字を修正しました。pandas.util.testingは動作しますが、pandas1.0以降ではdeprecatedになっており代替としてpandas.testingを使うことが推奨されています。

場所: p17
誤: pandas.util.testing
正: pandas.testing

なお、p18のサンプルコードは元々pandas.testingで説明していたため変更はありません。
---------------------------

トークの詳細:
https://pycon.jp/2020/timetable/?id=203957
Togetter:
https://togetter.com/li/1583782

Twitter:
@komo_fr ( https://twitter.com/komo_fr )

komo_fr

August 29, 2020
Tweet

More Decks by komo_fr

Other Decks in Programming

Transcript

  1. /VN1ZQBOEBT࢖͍ͷͨΊͷ ςετࣗಈԽೖ໳ 1Z$PO+1  5PNPLP'VSVLJ 5XJUUFS[email protected](JU)VC!LPNPGS

  2. [email protected] 8IPBN* [email protected] 2 ॴଐ wגࣜձࣾϏʔϓϥ΢υ ʢ1ZUIPOͰσʔλղੳͷ͓࢓ࣄʣ w౦ژେֶઌ୺Պֶٕज़ݚڀηϯλʔ ʢݚڀऀ͕࢖͏ͨΊͷ1ZUIPOύοέʔδͷ։ൃʣ 1Z$PO+1

    w1Z$PO+1ʮQBOEBTͷ4UZMJOHػೳͰڧԽ͢Δ+VQZUFS࣮ݧϨϙʔτʯ w1Z$PO+1ʮ*OUFSBDUJWF/FUXPSL7JTVBMJ[BUJPOVTJOH1ZUIPO ɹɹɹɹɹɹɹɹɹʙ/FUXPSL9 #PLFIͰ1&1ͷࢀরؔ܎ΛՄࢹԽ͢Δʯ 5PNPLP'VSVLJ LPNP G S ൃച༧ఆ w1ZUIPOΠϯλϥΫςΟϒɾσʔλϏδϡΞϥΠθʔγϣϯೖ໳ ʕ1MPUMZ%BTIʹΑΔσʔλՄࢹԽͱ8FCΞϓϦߏஙʕʢே૔ॻళ!ESJMMFSɾখ઒ӳ޾ɾݹ໦༑ࢠஶ  wIUUQXXXBTBLVSBDPKQCPPLTJTCO
  3. [email protected] ࠓ೔࿩͢͜ͱ w ಺༰ w 1ZUIPOΛ࢖ͬͯ਺஋࣮ݧ΍σʔλॲཧΛߦ͏ਓʹରͯ͠ /VN1Z΍QBOEBTʹඋΘ͍ͬͯΔςετͷػೳʹ͍ͭͯ ঺հ͠·͢ w ର৅

    w /VN1Z΍QBOEBTΛ࢖ͬͨܦݧ͕͋Δ͕ ීஈςετΛॻ͘श׳͕ͳ͍ਓ w 4MJEF w 5XJUUFS্Ͱ63-Λެ։͠·͢ 3
  4. [email protected] "HFOEB w ͳͥςετίʔυ͕ඞཁͳͷʁ w QZUFTUʹΑΔςετίʔυ w ։ൃʹ͓͚Δςετͱͷҧ͍ରԠ w ֬ೝ͍ͨ͠ର৅͕/VN1Z΍QBOEBTͷσʔλߏ଄

    w ظ଴஋Λఆٛ͢Δίετ͕ߴ͍ w ύϑΥʔϚϯεΛνΣοΫ͍ͨ͠ w ·ͱΊ 4
  5. [email protected] ͳͥςετίʔυ͕ඞཁͳͷʁ  w Α͋͘Δ͓೰Έྫ w ʮ͜ͷσʔλΛ࢖ͬͯ˓˓ͳ͜ͱ͕Ͱ͖ͳ͍͔ʯͱ ະ੔උͷσʔλΛ͍ͨͩ͘ w +VQZUFS/PUFCPPL্ͰQBOEBTͳͲͰσʔλ֬ೝɺ

    ΰϦΰϦલॲཧɺ࣮ݧ w ͱͯ΋టष͍ॲཧௐࠪ w ͜ͷ࣌఺Ͱ͸͜ͷίʔυ͕࠶ͼ࢖ΘΕΔ͔Ͳ͏͔͸ Θ͔Βͳ͍ͷͰɺอकੑ͸ॏࢹ͞Εͳ͍͜ͱ͕ଟ͍ w ࣮ݧ݁ՌΛݟͯɺ࣍ͷεςοϓʹਐΉ w อकੑΛॏࢹͤͣʹॻ͍ͨίʔυͱ޲͖߹͏͜ͱʹ 5
  6. [email protected] ͳͥςετίʔυ͕ඞཁͳͷʁ  w ޙʑͭΒ͘ͳΔύλʔϯ w QSJOUจ΍+VQZUFS/PUFCPPLͷηϧ্Ͱ ग़ྗ݁ՌΛ໨ࢹνΣοΫ w +VQZUFS/PUFCPPLΛίϐϖͯͪ͠ΐͬͱͣͭม͑ͯ࢖͍ճ͢

    w ஈʑ+VQZUFS/PUFCPPL͕ංେԽͯ͘͠Δ w Կ͕ࠩ෼ͳͷ͔Θ͔Βͳ͍ w ࣗ෼ͷίʔυ͕ਖ਼͘͠ಈ͍͍ͯΔ͜ͱΛอূͰ͖ͳ͍  ࣮ݧ݁Ռ͕ਖ਼͍͜͠ͱΛอূͰ͖ͳ͍ 6
  7. [email protected] +VQZUFS/PUFCPPL͔ΒQZ΁ w +VQZUFS/PUFCPPL্ͷॲཧΛؔ਺ͱͯ͠੾Γग़͢ w ੾Γग़ͨؔ͠਺ΛQZϑΝΠϧʹҠ͢ w ੾Γग़ͨ͠ॲཧʹ͍ͭͯɺ ςεςΟϯάϑϨʔϜϫʔΫΛ࢖ͬͯςετίʔυΛॻ͘ w

    QZUFTU w /VN1Z QBOEBTଞɺσʔλαΠΤϯεͰΑ͘࢖ΘΕΔ044 Ͱ࠾༻͞Ε͍ͯΔͷͰɺςετίʔυΛࢀߟʹ͠΍͍͢ w ʰςετۦಈ1ZUIPOʱʢᠳӭࣾʣ 7
  8. [email protected] QZUFTUʹ͓͚Δςετίʔυͷྫ 8 ςετର৅ͷίʔυ ࣮ࡍͷ஋ ظ଴͢Δ஋ ςετίʔυ IUUQTEPDTQZUFTUPSHFOTUBCMF

  9. [email protected] QZUFTUʹ͓͚Δςετίʔυͷྫ 9 IUUQTEPDTQZUFTUPSHFOTUBCMF

  10. [email protected] QZUFTUʹ͓͚Δςετίʔυͷྫ 10 ςετର৅ͷίʔυ ࣮ࡍͷ஋ ظ଴͢Δ஋ ςετίʔυ Y ʹमਖ਼ IUUQTEPDTQZUFTUPSHFOTUBCMF

  11. [email protected] ςετͷೖ໳ʹ޲͍͍ͯΔίʔυ w ग़ྗ͕໌֬ͰɺԿճ΋मਖ਼͢Δػձ͕͋Δίʔυ w σʔλ੔ܗ΍ม׵ͷ෦෼ w ྫ ϩʔΧϧʹ͋Δ)5.-ϑΝΠϧ͔ΒσʔλΛநग़ͯ͠ DTWܗࣜʹม׵͢Δલॲཧ

    w ग़ྗ͕໌֬ͳͷͰɺςετΛॻ͖΍͍͢ w ೖྗ͸ͨ·ʹ૝ఆ͠ͳ͍ܗࣜͷIUNM͕དྷΔमਖ਼ػձଟ w ਺ࣜΛ࣮૷͍ͯ͠Δ෦෼ 11
  12. ։ൃʹ͓͚Δςετͱͷҧ͍ ରԠ

  13. [email protected] ։ൃʹ͓͚Δςετͱͷҧ͍ w ֬ೝ͍ͨ͠ର৅͕/VN1Z΍QBOEBTͷσʔλߏ଄ w ޡࠩΛڐ༰ͯ͠ςετ͍ͨ͠ w ߦ΍ྻͷฒͼ·ͰݫີʹνΣοΫ͍ͨ͠έʔεɺཁૉͷ஋͑͋ͬ͞ ͍ͯΕ͹ྑ͍έʔεɺܕͷҧ͍ʢJOUͱqPBUͳͲʣ͸ڐ༰͍͍ͯ͠ έʔε

    w ὎/VN1Z QBOEBT͕ఏڙ͍ͯ͠Δςετ༻ͷػೳΛ࢖͏ w ظ଴஋Λఆٛ͢Δίετ͕ߴ͍ w ὎લճ࣮ߦͨ࣌͠ͷ஋Λظ଴஋ʹ࢖͏ w ύϑΥʔϚϯεΛνΣοΫ͍ͨ͠ w ὎QZUFTUCFODINBSL 13
  14. [email protected] ։ൃʹ͓͚Δςετͱͷҧ͍ w ֬ೝ͍ͨ͠ର৅͕/VN1Z΍QBOEBTͷσʔλߏ଄ w ޡࠩΛڐ༰ͯ͠ςετ͍ͨ͠ w ߦ΍ྻͷฒͼ·ͰݫີʹνΣοΫ͍ͨ͠έʔεɺཁૉͷ஋͑͋ͬ͞ ͍ͯΕ͹ྑ͍έʔεɺܕͷҧ͍ʢJOUͱqPBUͳͲʣ͸ڐ༰͍͍ͯ͠ έʔε

    w ὎/VN1Z QBOEBT͕ఏڙ͍ͯ͠Δςετ༻ͷػೳΛ࢖͏ w ظ଴஋Λఆٛ͢Δίετ͕ߴ͍ w ὎લճ࣮ߦͨ࣌͠ͷ஋Λظ଴஋ʹ࢖͏ w ύϑΥʔϚϯεΛνΣοΫ͍ͨ͠ w ὎QZUFTUCFODINBSL 14
  15. [email protected] /VN1ZͷͨΊͷςετ w OVNQZUFTUJOHϞδϡʔϧ w /VNQZͷςετͷαϙʔτʹಛԽͨ͠Ϟδϡʔϧ w IUUQTOVNQZPSHEPDTUBCMFSFGFSFODFSPVUJOFTUFTUJOHIUNM w OQUFTUJOH[email protected]@FRVBM

     w /VN1Z഑ྻΛൺֱͯ͠ɺ ෆҰகͩͱྫ֎"TTFSUJPO&SSPSΛग़ྗ͢Δ w ग़ྗ݁Ռ͕આ໌తͰɺ ҧ͏ͷ͕஋ͳͷ͔ܗঢ়ͳͷ͔ڭ͑ͯ͘ΕΔ w OQUFTUJOH[email protected]  w ුಈখ਺఺Λ࣋ͭ/VN1Z഑ྻͷൺֱʹ࢖͏ w ࠩ෼ͷڐ༰஋ΛύϥϝʔλͰࢦఆͰ͖Δ 15
  16. [email protected] OQUFTUJOH[email protected]@FRVBM 16 ࣮ߦ݁Ռ ࣮ߦ݁Ռ ஋͕ҟͳΔ৔߹ ܗঢ়͕ҟͳΔ৔߹

  17. [email protected] QBOEBTͷͨΊͷςετ w QBOEBTUFTUJOHϞδϡʔϧ w [email protected]@FRVBM  w QBOEBTͷσʔλϑϨʔϜΛൺֱ͠ɺ ෆҰகͩͱྫ֎"TTFSUJPO&SSPSΛൃੜͤ͞Δ

    w Ͳ͜·ͰݫີʹҰகੑΛݟΔͷ͔Ҿ਺ͰࢦఆͰ͖Δ ʢܕɺྻ΍ߦͷฒͼॱͳͲʣ w [email protected]@FRVBM  w [email protected]@FRVBM 17
  18. [email protected] [email protected]@FRVBM 18 ࣮ߦ݁Ռ

  19. [email protected] ։ൃʹ͓͚Δςετͱͷҧ͍ w ֬ೝ͍ͨ͠ର৅͕/VN1Z΍QBOEBTͷσʔλߏ଄ w ޡࠩΛڐ༰ͯ͠ςετ͍ͨ͠ w ߦ΍ྻͷฒͼ·ͰݫີʹνΣοΫ͍ͨ͠έʔεɺཁૉͷ஋͑͋ͬ͞ ͍ͯΕ͹ྑ͍έʔεɺܕͷҧ͍ʢJOUͱqPBUͳͲʣ͸ڐ༰͍͍ͯ͠ έʔε

    w ὎/VN1Z QBOEBT͕ఏڙ͍ͯ͠Δςετ༻ͷػೳΛ࢖͏ w ظ଴஋Λఆٛ͢Δίετ͕ߴ͍ w ὎લճ࣮ߦͨ࣌͠ͷ஋Λظ଴஋ʹ࢖͏ w ύϑΥʔϚϯεΛνΣοΫ͍ͨ͠ w ὎QZUFTUCFODINBSL 19
  20. ![email protected] લճ࣮ߦͨ࣌͠ͷ஋Λظ଴஋ͱͯ͠࢖͏ w ίʔυͷมߋʹΑͬͯӨڹ͕ग़͍ͯͳ͍͜ͱ͚ͩΛ֬ೝ͢Δ ʢճؼςετʣ w Ұ౓+VQZUFS/PUFCPPL্Ͱ࣮ߦɾ֬ೝࡁͷίʔυͳΒɺ ͦͷ࣌ͷ݁ՌΛσʔλΛ$47ग़ྗͯ͠ظ଴஋ͱͯ͠࢖͏ w TOBQTIPUUFTUύοέʔδΛ࢖͏

    w ಛఆͷ࣌఺ͷίʔυͷग़ྗΛه࿥͠ɺ ίʔυมߋ࣌ʹग़ྗʹมԽ͕ͳ͍͔νΣοΫͰ͖Δ 20
  21. [email protected] ։ൃʹ͓͚Δςετͱͷҧ͍ w ֬ೝ͍ͨ͠ର৅͕/VN1Z΍QBOEBTͷσʔλߏ଄ w ޡࠩΛڐ༰ͯ͠ςετ͍ͨ͠ w ߦ΍ྻͷฒͼ·ͰݫີʹνΣοΫ͍ͨ͠έʔεɺཁૉͷ஋͑͋ͬ͞ ͍ͯΕ͹ྑ͍έʔεɺܕͷҧ͍ʢJOUͱqPBUͳͲʣ͸ڐ༰͍͍ͯ͠ έʔε

    w ὎/VN1Z QBOEBT͕ఏڙ͍ͯ͠Δςετ༻ͷػೳΛ࢖͏ w ظ଴஋Λఆٛ͢Δίετ͕ߴ͍ w ὎લճ࣮ߦͨ࣌͠ͷ஋Λظ଴஋ʹ࢖͏ w ύϑΥʔϚϯεΛνΣοΫ͍ͨ͠ w ὎QZUFTUCFODINBSL 21
  22. [email protected] QZUFTUCFODINBSL w QZUFTUͷϓϥάΠϯ w ϓϩάϥϜͷಛఆ෦෼ͷύϑΥʔϚϯεΛܭଌ͢ΔςετΛ࡞Ε Δ w ࣮ߦ࣌ؒͷཁ໿౷ܭྔ΍ώετάϥϜͷग़ྗ w

    աڈͷ݁ՌΑΓύϑΥʔϚϯε͕ѱԽ͍ͯͨ͠ΒΤϥʔʹ͢Δ ʢCFODINBSLDPNQBSFΦϓγϣϯʣ 22
  23. ·ͱΊ

  24. [email protected] ·ͱΊ w ਺஋࣮ݧ΍σʔλॲཧΛߦ͏ਓʹͱͬͯͷ ςετͷϝϦοτʹ͍ͭͯ঺հ͠·ͨ͠ w ςετίʔυΛॻ͘ͱ҆৺࣮ͯ͠ݧ΍෼ੳ͕ߦ͑Δ w ։ൃͱҟͳΔ఺ͱରԠʹ͍ͭͯ঺հ͠·ͨ͠ w

    ϝϦϋϦΛ͚ͭͯςετίʔυΛॻ͍ͯɺ ਫ਼ਆ͕҆ఆ࣮ͨ͠ݧΛ͠·͠ΐ͏ 24