{"id":913,"date":"2024-12-30T21:07:16","date_gmt":"2024-12-30T20:07:16","guid":{"rendered":"https:\/\/lewoniewski.info\/blog\/?p=913"},"modified":"2025-11-11T18:56:10","modified_gmt":"2025-11-11T17:56:10","slug":"nauka-o-danych-z-excelem-pythonem-transport-tycoonem-wideo","status":"publish","type":"post","link":"https:\/\/lewoniewski.info\/blog\/2024\/nauka-o-danych-z-excelem-pythonem-transport-tycoonem-wideo\/","title":{"rendered":"Nauka o Danych z Excelem, Pythonem, Transport Tycoonem (wideo)"},"content":{"rendered":"<p>Wyk\u0142ad z analizy danych, podczas kt\u00f3rego om\u00f3wimy dzia\u0142anie funkcji &#8222;JE\u017bELI&#8221; w Excelu oraz instrukcje warunkowe w Pythonie. Przeanalizujemy te koncepty na przyk\u0142adzie z gry Transport Tycoon, znanej r\u00f3wnie\u017c jako OpenTTD.<!--more--><\/p>\n<p style=\"text-align:center;\">Nagranie z wyk\u0142adu:<br \/>\n<iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/wpI6xGq13NU?si=RBN05TEp8VvXSr_X\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h2>Autobus czy poci\u0105g?<\/h2>\n<p>Wyobra\u017acie sobie, \u017ce mamy dwa rozwijaj\u0105ce si\u0119 miasta w grze OpenTTD, kt\u00f3re chcemy po\u0142\u0105czy\u0107, aby u\u0142atwi\u0107 transport pasa\u017cer\u00f3w. Naszym celem jest zdecydowanie, kt\u00f3ry \u015brodek transportu b\u0119dzie najodpowiedniejszy w zale\u017cno\u015bci od liczby pasa\u017cer\u00f3w chc\u0105cych podr\u00f3\u017cowa\u0107 mi\u0119dzy tymi miastami. Najpierw tworzymy po\u0142\u0105czenie autobusowe mi\u0119dzy miastami. W naszej grze ka\u017cdy autobus mo\u017ce przewie\u017a\u0107 maksymalnie 35 pasa\u017cer\u00f3w. <\/p>\n<p>Ale co je\u015bli popyt wzro\u015bnie? Autobusy nie b\u0119d\u0105 ju\u017c wystarczaj\u0105ce. Dlatego budujemy po\u0142\u0105czenie kolejowe. Nasz poci\u0105g ma 3 wagony, ka\u017cdy zdolny przewie\u017a\u0107 40 pasa\u017cer\u00f3w, co daje \u0142\u0105cznie 120 pasa\u017cer\u00f3w na kurs. Ten uk\u0142ad jest idealny dla \u015bredniej liczby pasa\u017cer\u00f3w.<\/p>\n<h3>Excel: funkcja JE\u017bELI<\/h3>\n<p>Prze\u0142o\u017cymy ten scenariusz do Excela, aby zdecydowa\u0107, kt\u00f3ry \u015brodek transportu u\u017cy\u0107 w zale\u017cno\u015bci od liczby pasa\u017cer\u00f3w. Za\u0142\u00f3\u017cmy, \u017ce mamy kom\u00f3rk\u0119 A2, w kt\u00f3rej wprowadzamy liczb\u0119 pasa\u017cer\u00f3w. Chcemy, aby Excel wybra\u0142 &#8222;Autobus&#8221;, je\u015bli liczba pasa\u017cer\u00f3w jest r\u00f3wna lub mniejsza ni\u017c 35, i &#8222;Poci\u0105g&#8221; w przeciwnym razie.<\/p>\n<p>Formu\u0142a, kt\u00f3rej u\u017cyjemy, to:<\/p>\n<pre>=JE\u017bELI(A2<=35; \"Autobus\"; \"Poci\u0105g\")<\/pre>\n<p>Formu\u0142a jest wpisywana do kom\u00f3rki, a wynik jest pokazywany w zale\u017cno\u015bci od r\u00f3\u017cnych warto\u015bci wej\u015bciowych. Ta prosta funkcja JE\u017bELI sprawdza warunek A2<=35. Je\u015bli jest spe\u0142niony, zwraca \"Autobus\", w przeciwnym razie zwraca \"Poci\u0105g\".\n\n\n\n<h3>Python: instrukcja if-else<\/h3>\n<p>Osi\u0105gniemy t\u0119 sam\u0105 logik\u0119 za pomoc\u0105 Pythona.<br \/>\nOto kod:<\/p>\n<pre>\r\npasazerowie = int(input(\"Wprowad\u017a liczb\u0119 pasa\u017cer\u00f3w: \"))\r\n\r\nif pasazerowie <= 35:\r\n    print(\"Wybierz Autobus jako \u015brodek transportu.\")\r\nelse:\r\n    print(\"Wybierz Poci\u0105g jako \u015brodek transportu.\")\r\n<\/pre>\n<p>Ten skrypt prosi o podanie liczby pasa\u017cer\u00f3w, a nast\u0119pnie u\u017cywa instrukcji <em>if-else<\/em> do podj\u0119cia decyzji o \u015brodku transportu. <\/p>\n<p>Kod \u017ar\u00f3d\u0142owy jest r\u00f3wnie\u017c dost\u0119pny na <a href=\"https:\/\/github.com\/Lewoniewski\/Data-Science\/blob\/main\/pl\/01_1.py\" rel=\"noopener\" target=\"_blank\">GitHubie<\/a>.<\/p>\n<h2>Autobus, poci\u0105g czy samolot?<\/h2>\n<p>W miar\u0119 jak nasze miasta rosn\u0105, popyt mo\u017ce przekroczy\u0107 mo\u017cliwo\u015bci poci\u0105g\u00f3w. Dlatego wprowadzamy po\u0142\u0105czenie lotnicze. Samoloty w naszej grze mog\u0105 przewie\u017a\u0107 do 300 pasa\u017cer\u00f3w. <\/p>\n<h3>Excel: zagnie\u017cd\u017cona funkcja JE\u017bELI<\/h3>\n<p>Dzi\u0119ki dodaniu opcji samolotu musimy zaktualizowa\u0107 nasz\u0105 formu\u0142\u0119 w Excelu, aby uwzgl\u0119dni\u0107 t\u0119 trzeci\u0105 opcj\u0119.<\/p>\n<p>Rozszerzona formu\u0142a to:<\/p>\n<pre>=JE\u017bELI(A2<=35; \"Autobus\"; JE\u017bELI(A2<=120; \"Poci\u0105g\"; \"Samolot\"))<\/pre>\n<p>Oto jak to dzia\u0142a:<\/p>\n<ul>\n<li>Je\u015bli warto\u015b\u0107 w kom\u00f3rce A2 jest mniejsza ni\u017c lub r\u00f3wna 35, zwraca \"Autobus\".<\/li>\n<li>W przeciwnym razie sprawdza, czy warto\u015b\u0107 w kom\u00f3rce A2 jest mniejsza ni\u017c lub r\u00f3wna 120. Je\u015bli tak, zwraca \"Poci\u0105g\".<\/li>\n<li>Je\u015bli \u017caden z warunk\u00f3w nie jest spe\u0142niony, domy\u015blnie wybiera \"Samolot\".<\/li>\n<\/ul>\n<h3>Python: instrukcja if-elif-else<\/h3>\n<p>Teraz zaktualizujemy nasz skrypt w Pythonie, aby uwzgl\u0119dni\u0107 opcj\u0119 samolotu.\"<\/p>\n<p>Oto zaktualizowany kod:<\/p>\n<pre>\r\npasazerowie = int(input(\"Wprowad\u017a liczb\u0119 pasa\u017cer\u00f3w: \"))\r\n\r\nif pasazerowie <= 35:\r\n    print(\"Wybierz Autobus jako \u015brodek transportu.\")\r\nelif pasazerowie <= 120:\r\n    print(\"Wybierz Poci\u0105g jako \u015brodek transportu.\")\r\nelse:\r\n    print(\"Wybierz Samolot jako \u015brodek transportu.\")\r\n\r\n<\/pre>\n<p>Ten skrypt teraz u\u017cywa instrukcji elif (else if), aby sprawdzi\u0107 wiele warunk\u00f3w:<\/p>\n<ul>\n<li>Je\u015bli liczba pasa\u017cer\u00f3w jest r\u00f3wna lub mniejsza ni\u017c 35, wybierz \"Autobus\".<\/li>\n<li>W przeciwnym razie, je\u015bli liczba pasa\u017cer\u00f3w jest r\u00f3wna lub mniejsza ni\u017c 120, wybierz \"Poci\u0105g\".<\/li>\n<li>W przeciwnym razie wybierz \"Samolot\".<\/li>\n<\/ul>\n<p>Kod \u017ar\u00f3d\u0142owy jest r\u00f3wnie\u017c dost\u0119pny na <a href=\"https:\/\/github.com\/Lewoniewski\/Data-Science\/blob\/main\/pl\/01_2.py\" rel=\"noopener\" target=\"_blank\">GitHubie<\/a>.<\/p>\n<h2>Podsumowanie<\/h2>\n<p>Zobaczyli\u015bmy, jak u\u017cywa\u0107 funkcji JE\u017bELI w Excelu oraz instrukcji warunkowych w Pythonie do podejmowania decyzji na podstawie danych \u2014 w naszym przypadku liczby pasa\u017cer\u00f3w. Spr\u00f3bujcie poeksperymentowa\u0107 z tymi konceptami w swoich projektach lub nawet w grach takich jak Transport Tycoon. <\/p>\n<p>Ten wyk\u0142ad jest dost\u0119pny r\u00f3wnie\u017c w <a href=\"https:\/\/www.youtube.com\/playlist?list=PLSuFHksj5XiEwgGQH1uqNBDDaWVTpM8pO\" rel=\"noopener\" target=\"_blank\">innych j\u0119zykach<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wyk\u0142ad z analizy danych, podczas kt\u00f3rego om\u00f3wimy dzia\u0142anie funkcji &#8222;JE\u017bELI&#8221; w Excelu oraz instrukcje warunkowe w Pythonie. Przeanalizujemy te koncepty na przyk\u0142adzie z gry Transport Tycoon, znanej r\u00f3wnie\u017c jako OpenTTD.<\/p>\n","protected":false},"author":1,"featured_media":916,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[171,178,172,137,8],"class_list":["post-913","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artykuly","tag-excel","tag-lekcja","tag-openttd","tag-python","tag-wideo"],"_links":{"self":[{"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/posts\/913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/comments?post=913"}],"version-history":[{"count":0,"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/posts\/913\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/media\/916"}],"wp:attachment":[{"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/media?parent=913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/categories?post=913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lewoniewski.info\/blog\/wp-json\/wp\/v2\/tags?post=913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}