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. !LPNP@GS 8IPBN* !LPNP@GS 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
  2. !LPNP@GS ࠓ೔࿩͢͜ͱ w ಺༰ w 1ZUIPOΛ࢖ͬͯ਺஋࣮ݧ΍σʔλॲཧΛߦ͏ਓʹରͯ͠ /VN1Z΍QBOEBTʹඋΘ͍ͬͯΔςετͷػೳʹ͍ͭͯ ঺հ͠·͢ w ର৅

    w /VN1Z΍QBOEBTΛ࢖ͬͨܦݧ͕͋Δ͕ ීஈςετΛॻ͘श׳͕ͳ͍ਓ w 4MJEF w 5XJUUFS্Ͱ63-Λެ։͠·͢ 3
  3. !LPNP@GS ͳͥςετίʔυ͕ඞཁͳͷʁ  w Α͋͘Δ͓೰Έྫ w ʮ͜ͷσʔλΛ࢖ͬͯ˓˓ͳ͜ͱ͕Ͱ͖ͳ͍͔ʯͱ ະ੔උͷσʔλΛ͍ͨͩ͘ w +VQZUFS/PUFCPPL্ͰQBOEBTͳͲͰσʔλ֬ೝɺ

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

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

    QZUFTU w /VN1Z QBOEBTଞɺσʔλαΠΤϯεͰΑ͘࢖ΘΕΔ044 Ͱ࠾༻͞Ε͍ͯΔͷͰɺςετίʔυΛࢀߟʹ͠΍͍͢ w ʰςετۦಈ1ZUIPOʱʢᠳӭࣾʣ 7
  6. !LPNP@GS ςετͷೖ໳ʹ޲͍͍ͯΔίʔυ w ग़ྗ͕໌֬ͰɺԿճ΋मਖ਼͢Δػձ͕͋Δίʔυ w σʔλ੔ܗ΍ม׵ͷ෦෼ w ྫ ϩʔΧϧʹ͋Δ)5.-ϑΝΠϧ͔ΒσʔλΛநग़ͯ͠ DTWܗࣜʹม׵͢Δલॲཧ

    w ग़ྗ͕໌֬ͳͷͰɺςετΛॻ͖΍͍͢ w ೖྗ͸ͨ·ʹ૝ఆ͠ͳ͍ܗࣜͷIUNM͕དྷΔमਖ਼ػձଟ w ਺ࣜΛ࣮૷͍ͯ͠Δ෦෼ 11
  7. !LPNP@GS ։ൃʹ͓͚Δςετͱͷҧ͍ w ֬ೝ͍ͨ͠ର৅͕/VN1Z΍QBOEBTͷσʔλߏ଄ w ޡࠩΛڐ༰ͯ͠ςετ͍ͨ͠ w ߦ΍ྻͷฒͼ·ͰݫີʹνΣοΫ͍ͨ͠έʔεɺཁૉͷ஋͑͋ͬ͞ ͍ͯΕ͹ྑ͍έʔεɺܕͷҧ͍ʢJOUͱqPBUͳͲʣ͸ڐ༰͍͍ͯ͠ έʔε

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

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

     w /VN1Z഑ྻΛൺֱͯ͠ɺ ෆҰகͩͱྫ֎"TTFSUJPO&SSPSΛग़ྗ͢Δ w ग़ྗ݁Ռ͕આ໌తͰɺ ҧ͏ͷ͕஋ͳͷ͔ܗঢ়ͳͷ͔ڭ͑ͯ͘ΕΔ w OQUFTUJOHBTTFSU@BMMDMPTF  w ුಈখ਺఺Λ࣋ͭ/VN1Z഑ྻͷൺֱʹ࢖͏ w ࠩ෼ͷڐ༰஋ΛύϥϝʔλͰࢦఆͰ͖Δ 15
  10. !LPNP@GS QBOEBTͷͨΊͷςετ w QBOEBTUFTUJOHϞδϡʔϧ w BTTFSU@GSBNF@FRVBM  w QBOEBTͷσʔλϑϨʔϜΛൺֱ͠ɺ ෆҰகͩͱྫ֎"TTFSUJPO&SSPSΛൃੜͤ͞Δ

    w Ͳ͜·ͰݫີʹҰகੑΛݟΔͷ͔Ҿ਺ͰࢦఆͰ͖Δ ʢܕɺྻ΍ߦͷฒͼॱͳͲʣ w BTTFSU@TFSJFT@FRVBM  w BTTFSU@JOEFY@FRVBM 17
  11. !LPNP@GS ։ൃʹ͓͚Δςετͱͷҧ͍ w ֬ೝ͍ͨ͠ର৅͕/VN1Z΍QBOEBTͷσʔλߏ଄ w ޡࠩΛڐ༰ͯ͠ςετ͍ͨ͠ w ߦ΍ྻͷฒͼ·ͰݫີʹνΣοΫ͍ͨ͠έʔεɺཁૉͷ஋͑͋ͬ͞ ͍ͯΕ͹ྑ͍έʔεɺܕͷҧ͍ʢJOUͱqPBUͳͲʣ͸ڐ༰͍͍ͯ͠ έʔε

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

    w ὎/VN1Z QBOEBT͕ఏڙ͍ͯ͠Δςετ༻ͷػೳΛ࢖͏ w ظ଴஋Λఆٛ͢Δίετ͕ߴ͍ w ὎લճ࣮ߦͨ࣌͠ͷ஋Λظ଴஋ʹ࢖͏ w ύϑΥʔϚϯεΛνΣοΫ͍ͨ͠ w ὎QZUFTUCFODINBSL 21