Olvasd be a data
könyvtárban található cities.csv
nevű fájlt! (A beolvasás előtt érdemes szövegszerkesztőben megnézni, hogyan néznek ki a sorok.) Ez a világ összes 15.000 főnél népesebb városának koordinátáit, országát, illetve népességét tartalmazza.
Keresd meg benne Európa összes 2.000.000-nál népesebb városát! Írasd ki őket lakosság szerint csökkenő sorrendbe rendezve!
Európát definiálja a következő téglalap:
Olvassuk be a data/T_adat.csv
fájlt pandas adattáblaként, majd számítsuk ki az évenkénti átlaghőmérsékletet az egyes hónapokra vonatkozó oszlopok átlagaként. Ábrázoljuk a kapott átlagértékeket az évszám függvényében.
Olvassuk be a data/co2_adat.txt
fájlt pandas adattáblaként. A fájlban a sor elején elhelyezett "#" karakterek azokat a sorokat jelölik, melyek az értelmezést segítő megjegyzések, de az adatokat tartalmazó táblázatnak nem részei. Ábrázoljuk az évszám függvényében az évi átlagos $CO_2$-koncentrációt.
Vessük össze az előző feladatban beolvasott két adattáblát.
Fésüljük össze a két adattáblát az éveket tartalmazó oszlop értékei alapján úgy, hogy csak azokhoz az évekhez tartozó sorok maradjanak meg, melyekhez mindkét táblázatban szerepel adat.
Az így kapott összefésült táblázatban nézzük meg, hogy a korábban kiszámolt éves átlaghőmérséklet mennyire korrelál az átlagos $CO_2$-koncentrációval. (Számoljunk korrelációt!) Ábrázoljuk az éves átlaghőmérsékletet a $CO_2$-koncentráció függvényében.
A data/hpattributes.txt
a Harry Potter könyvek különböző szereplőinek adatait (id, schoolyear, gender, house) tartalmazzák a szereplők nevei nélkül. A nevek a data/hpnames.txt
fájlban találhatók a megfelelő id-kkal ellátva.
(nemek: 1 - férfi, 2 - nő; házak: 1 - Griffendél, 2 - Hugrabug, 3 - Hollóhát, 4 - Mardekár)
Fésüljük össze a két adattáblát az "id" oszlop segítségével és írjuk ki a Hollóhátba járó diákokat a koruk szerint növekvő sorrendben, vagyis a legfiatalabbtól indulva.
Mennyi a Griffendélbe járó diákok átlagos életkora (2017-ben)? (A diákok 11 évesen kezdik a tanulmányaikat.)
Írjuk ki a táblázatban szereplő 5 leggyakoribb évet gyakoriság szerint csökkenő sorrendben.
Gyakran előfordul, hogy olyan adatbázisokból kell értelmezhető eredményeket gyártani, amiket különböző helyeken, különböző elveket szem előtt tartva, kézzel gépeltek be. Ráadásul sok adat kézi bevitelekor számtalan figyelmetlenségi hiba is előfordul. Az ilyenek kezdeti kigyomlálása nagyon fontos lépése az adatelemzésnek.
A titkarno1.csv és a titkarno2.csv fájlokban tárolt adattáblákban magyar emberek alapvető személyi adatai találhatók, mint a név, születési dátum, nem, állampolgárság és TAJ-szám.
Olvassuk be a mintapéldákban tárgyalt data/json_example
fájlt a mintapéldában bemutatott módon:
import pandas as pd
import json
d=[json.loads(s) for s in open("data/json_example").readlines()]
df = pd.DataFrame.from_dict(d)
Tegyük fel, hogy az azonos keresőszavakra érkezett találatok közül mindig a legnagyobb ID-jú a helyes. Az összes többit dobjuk is el az adattáblából.
Ezek után generáljunk egy új, "result long names" nevű oszlopot, ami a results oszlop értékéből kibányászott összes "long_name" értéket (mindegyiket egyszer) tartalmazza vesszőkkel elválasztva, sztringként. (Először írjuk meg a függvényt, ami a "long_name" értékek kiválasztását szolgálja egy adott sorra, majd ezt alkalmazzuk az összes sorra az apply()
segítségével.)
Írjuk ki az összes olyan query-t, amire a "result long names" oszlop tartalmazza a "Sare Pol" sztringet.
Olvasd be egy pandas DataFrame-be a mintapéldában is használt érettségikről szóló adatfájlt!
Az ember gyakran hallja, hogy a lányok szóban jobban teljesítenek, mint a fiúk. Vegyük évenként csoportosítva az emelt szintű érettségik szóbeli pontszámának átlagát a lányokra és a fiúkra egy DataFrame-be, ábrázoljuk ezeket a DataFrame plot metódusának segítségével oszlopdiagramon! Megjelenik-e a nemek közötti különbség a szóbeli pontszámában?
A data/movie_metadata.csv
fájl az IMDB adatbázisának egy viszonylag kis részletét tartalmazza. Az alábbi feladatok ábrázolás részeit a seaborn csomaggal valósítsuk meg.
Reprodukáljuk részben a Gapminder projekt nevű interaktív gazdasági és szociális adatokat megjelenítő interaktív eszközét!
Készítsünk az itt megtalálható adatok alapján egy pandas adatbázist ami tartalmazza az országok várható életkor adatait és a GDP adatait. Ezen kívül minden országról tároljuk el a következő atribútumokat:
Ábrázoljuk minden országban a várható életkort a GDP függvényében. Az országokat jellemző marker méretét állítsuk be a népességük alapján. A markerek szinezését, hasonlóan a Gapminderhez lehessen változtatni. Egy legördülő menü alapján döntse el a program hogy az országokat vallás vagy kontinens alapján szinez.
A Twitter szociális hálózaton a publikus üzeneteket egy részét bárki ingyen letöltheti. Ezekből néhányat megtalálhatsz a data/twitter_sample.gz
fájlban.
Először olvasd be a tömörített fájl sorait egy listába a következő parancs segítségével:
import gzip
l=[json.loads(str(s).strip("\r\n")) for s in gzip.open("../data/twitter_sample.gz",mode="rt").readlines()]
A created_at
nevű oszlop tartalmazza az üzenetek feladási dátumát. Ábrázold ez alapján, melyik percben hány darab tweetet adtak fel a felhasználók! Használd a datetime modul strptime()
és strftime()
függvényeit, melyeknek itt és itt tudsz utánaolvasni.
Figyelj arra, hogy nem minden sorban van created_at
mező, az adatot nem tartalmazó sorokat ki kell dobni az adatokból!