Matematikai Algoritmusok és Felfedezések I.

11. Előadás: Pandas

2021 április 22.

Adatok beolvasása egy csv fájlból

Szegedi időjárási adatokat gyűjtöttünk össze a weather.csv fálba

pandas.read_csv(filepath_or_buffer, sep=<object object>, delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, cache_dates=True, iterator=False, chunksize=None, compression='infer', thousands=None, decimal='.', lineterminator=None, quotechar='"', quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, dialect=None, error_bad_lines=True, warn_bad_lines=True, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None, storage_options=None)

Tipikus beállítások:

Adatok lekérdezése

Amikor beolvasunk egy CSV fájlt egy DataFrame objektum jön létre, ami oszlopokból és sorokból áll. Egy oszlophoz hasonlóan férhetünk hozzá, mint egy dictionaryben egy elemhez.

Egy oszlop egy Series objektumnak felel meg.

Egy DataFrame-re érdemes úgy gondolni, mint olyan Series-ekből álló készlet, amiknek megegyezik az indexe.

A loc és iloc függvényekkel tudunk sorokat lekérdezni.

Sorokat a szokásos tömb indexeléssel is tudunk lekérdezni. Például az első nap adatait idojaras[:24]-ként kapjuk.

Grafikon készítés

Egyszerűen .plot()-ot rakunk a végére.

Egymásik példa

20000 sakjátszmát és a hozzájuk tartozó adatokat tartalmazó adatbázis.

Ha kiíratunk egy DataFrame-et csak néhány sort mutat

A két módszert kombinálhatjuk, tetszőleges sorrendben:

Több oszlop

Melyik a leggyakoribb megnyitás?

A .value_counts() metódust használhatjuk:

Sőt grafikont is könnyen tudunk rajzolni!

Adatok szűrése

Melyik mecccseken játszották a szicíliai megnyitást? ('Sicilian Defense')

Mit történik a háttérben?

A háttérben a Numpyból ismert indexelési trükkök működnek!

Például össze éselhetünk feltételeket:

Minden kombinálható:

Fehér vagy fekete figurákkal éri meg jobban játszani?

A fehér győzelmek hogyan értek véget?

Adott játék vége típuson belül fehér győzelmek aránya?

A DataFrame megváltoztatása

Mennyi a két játékos közötti pontszámkülönbség?

Itt valami gond van:

Szedjük szét az időpontokat két oszlopba.

Aggregálás

Mennyi az adott megnyitást játszók átlagpontszáma?

A groupby() függvényt használhajuk:

Több aggregálás egyszerre elvégezhető:

String műveletek

Győzelmek száma első lépések szerint?

Ez nem jó!

Fehér győzelmek száma

Idő alapú adatok

Átalakítás a Pandas idő formátumává

Vegyük csak a 2006, 2007, 2008 évek adatait.

Resample()

Három havonta vett minimum, maximum és átlag.