zopletalova / python-012021

0 stars 0 forks source link

Šestý týden #7

Closed zopletalova closed 3 years ago

zopletalova commented 3 years ago

Ahoj Andy, @andywaltlova

odevzdala jsem úkoly za šestý týden. Zjistila jsem, že asi neumím elegantně vyřešit situaci, kdy mám udělat groupby a pak tam v rámci těch skupin vypočítat více hodnot - tedy dát tam více sloupců. Když tam bylo ještě sum u dvou sloupců, tak jsem to nadrzo udělala takto - i když mě varovala nějaká hláška (nakopírovaná v program28): subregiony = staty_gdp.groupby(["subregion"])["population", "gdp2019"].sum()

U dalšího programu už se chtělo minimum a maximum, tak jsem si udělala pro každý případ tabulku zvlášť a pak je spojila přes union, aby tam byl sloupeček jak s minimem, tak s maximem. Výsledek vypadá profesionálně, ale skoro bych čekala, že existuje nějaký lepší postup :-)

Děkuji a měj se zatím fajn! :-) Zuzka

andywaltlova commented 3 years ago

26 ✔️


Kod mas moc pekny, mam radost, ze nad tim i premyslis mimo ramec zadani. Jen tak dal ! 👍

Tyden 6 tedy taky uzaviram, kdyby jsi se k tomu chtela neco zeptat, tak klidne pridej dalsi komentar :)

zopletalova commented 3 years ago

Ahoj Andy, díky moc! vše chápu, napadá mě jenom jedna otázka - jestli se dá nějak funkce isnull aplikovat na všechny sloupce - tedy vypiš mi řádky, které mají nulovou hodnotu v kterémkoliv sloupci. Já jsem to "v kterémkoliv sloupci" zkoušela zapsat různými způsoby, ale nějak my to python nechtěl vzít (zápisy jako [:]). Teda samozřejmě kromě varianty, že vyloženě všechny sloupce vyjmenuješ. Díky a zatím! Z.

andywaltlova commented 3 years ago

Ahoj! 👋

vetsina metod se v pandasu da volat na Series (sloupce) i na celem DataFrame (tabulka) :-)

Takze muzes udelat klidne neco ve smyslu staty[staty.isnull().any(axis=1)], kde staty.isnull() vlastne vraci DataFrame kde jsou jen True a False hodnoty (True pokud je hodnota NaN). No a pak to pouzijes jako klasicky filtr, akorat musis vyuzit nejakou metodu ktera pandasu rekne ktere hodnoty chces ponechat (u filtrovani podle jednotlivych sloupcu jsme pouzivali operatory ==,<,> apod. , ale tady jedes pres cele radky/sloupce, proto musis uzpusobit i ten filtr).

Tady konkretne mam any, ktera vraci True pokud v radku (nebo sloupci) je alespon jeden True (vlastne takovy or na hodnotach v radku/sloupci). Opakem a ekvivalentem and by byla metoda all. A axis=1 znaci akorat ze chces vlastne redukovat sloupce (to znamena podivat se na cely radek a rict jestli je True nebo False, zredukujes sloupce na jednu hodnotu -> je to trosku neintuitivni, ale po zamysleni to dava smysl), uplne stejny zapis by byl axis='columns', ale to uz muzes najit v dokumentaci :)

Jinak any() a all() existuji i v cistem Pythone jako obycejne funkce a chovaji se stejne.

Snad to pomuze! ☺️