Closed zopletalova closed 3 years ago
drop
specifikovat ve kterych sloupcich NaN nechces -> gdp.dropna(subset=['2017','2018','2019'])
rename
, tak jen dodam, ze i s timto si samotny merge
umi poradit->
# Da se specifikovat jak se na kazde strane joinu jmenuje dany sloupec, po mergi pak zustanou v tabulce oba, proto drop
staty = pd.merge(staty,gdp,how='left',left_on='alpha3Code', right_on='Country Code')
staty = staty.drop(columns=['Country Name','Country Code'])
DataFrameGroupBy
objekt(to vraci groupby-precetla jsem si v dokumentaci) indexovat timto zpusobem. Je to podobne jako klasicky dataframe, kdyz z nej chces dostat vice sloupcu davas je do indexovani taky jako list (df[[column1,column2]]
), to znamena ze obalenim sloupcu do listu warning zmizi -> subregiony = staty_gdp.groupby(["subregion"])[["population", "gdp2019"]].sum()
teploty.groupby('Region').agg([min,max]).AvgTemperature
(pouzivam moje nazvy promenych)
get_fill(subject)
, ktera vraci na zaklade jmena predmetu barvu vyplne, abych trosku oddelila ty ify (ale ty tam mas jen jeden takze to neni moc dlouhe)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 :)
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.
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! ☺️
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