Kódím.cz
9

Datum a čas a metoda shift

Naučíme se pracovat s datem a časem a porovnávat data v různých řádcích tabulky

2
Swing states

V případě amerických prezidentských voleb platí, že ve většině států dlouhodobě vítězí kandidáti jedné politické strany. Například v Kalifornii tradičně vítězí kandidáti Demokratické strany, zatímco v Texasu jsou úspěšní kandidáti Republikánské strany. Státy, kde se vítězné strany střídají, se označují jako swing states (kolísavé státy). Tvým úkolem je spočítat pro jeden konkrétní stát, kolikrát se v něm změnila vítězná politická strana. Pokud jsi již řešil(a) příklad Vítězové z lekce o agregacích, můžeš použít výslednou tabulku. Pokud ne, můžeš se k příkladu vrátit nebo využít data v souboru election-data.csv.

Soubor obsahuje následující důležité sloupce:

  • year: rok voleb,
  • state: stát,
  • party_simplified: zjednodušené označení politické strany,
  • rank: pořadí kandidáta v rámci státu a roku

Kroky k řešení:

Filtrace dat na vítězné kandidáty:
Vyber pouze řádky, kde hodnota ve sloupci rank je rovna 1, tj. data o vítězích.

Výběr dat pro stát PENNSYLVANIA:
Vytvoř tabulku obsahující pouze data za stát PENNSYLVANIA. Tabulku pojmenuj data_pen, abys zachoval(a) původní data s vítězi ve všech státech.

Přidání sloupce s vítězem předchozích voleb:
Vytvoř nový sloupec party_simplified_previous_election, který obsahuje politickou stranu vítěze z předchozích voleb. Tento sloupec lze vytvořit pomocí metody shift():

data_pen["party_simplified_previous_election"] = data_pen["party_simplified"].shift(1)

Určení změn vítězné strany:
Přidej sloupec swing, který bude obsahovat hodnotu True, pokud se vítězná strana oproti minulým volbám změnila, a False, pokud zůstala stejná. Použij k tomu následující příkaz:

data_pen["swing"] = data_pen["party_simplified"] != data_pen["party_simplified_previous_election"]

Spočítání změn:
Počet změn vítězné strany zjistíš spočítáním řádků, kde je hodnota ve sloupci swing rovna True. Nezapomeň ignorovat prázdné hodnoty ve sloupci party_simplified_previous_election (např. pomocí metody dropna()), které se objeví u prvních voleb v datasetu.

Pro stát PENNSYLVANIA by mělo vyjít, že ke změně vítězné strany došlo celkem čtyřikrát: v letech 1980, 1992, 2016 a 2020. Tento výsledek ověř pomocí dotazu a metody .sum() na sloupci swing.

Obecná analýza změn ve všech státech:
Pokud ti analýza funguje pro Pensylvanii, pokračuj výpočtem pro všechny státy. Přidej sloupec party_simplified_previous_election do původní tabulky dat, tentokrát s použitím metody groupby(), aby se hodnoty posunuly v rámci každého státu zvlášť:

data["party_simplified_previous_election"] = data.groupby("state")["party_simplified"].shift(1)

Spočítání změn ve všech státech:
Vytvoř pomocný sloupec swing podobným způsobem jako v předchozí části. Pomocí agregace spočítej, kolikrát se v jednotlivých státech změnila vítězná politická strana.

Tip: Porovnej rozdíl v použití metody shift() s a bez metody groupby() a ujisti se, že výsledky odpovídají očekávání. Nezapomeň opět odstranit řádky s neznámými hodnotami vítěze předchozích voleb.

Řešení