A big data mennyiségű adathalmazok egyre nagyobb körben történő megjelenése, ezáltal az elemzésük iránt növekvő igények a big data elemzők és adattudománnyal foglalkozó szakemberek iránti igény növekedését is eredményezték. Az adattudomány és a big data elemzés azonban már a vizsgálatok megkezdése előtt felveti a kérdést, hogy milyen programnyelvet alkalmazzunk. Mi a best practice? Ez a kérdés felmerül egy-egy adatelemzési projekt megkezdésekor is, de ugyanígy döntési helyzetet teremt a pályájuk elején lévő adatelemzők számára is. A választást tovább árnyalja, hogy az adatelemzési projekt és a kapcsolódó adathalmaz mélységétől, jellegétől, méretétől függően az elemzési folyamat során különböző igények merülhetnek fel, amelyeket az adott programnyelv alkalmazásával lehet hatékonyan kezelni.
Számos technológiai, informatikai vagy bigdata-elemzésre szakosodott felületen találhatunk arra vonatkozóan tanulmányokat, blogcikkeket vagy posztokat, hogy az R vagy a Python programnyelvet érdemes használni vagy éppenséggel megtanulni. Ezek különböző szempontokat vesznek figyelembe a két programnyelv összehasonlítása során, illetve a mellettük való érvelést vagy választást illetően. Az egyes cikkek azonban a sok hasonlóság mellett különbségeket is mutatnak a két programnyelv mellett érvelés terén. Az R és Python is nyílt forráskódú programnyelv, ami aktív közösséggel rendelkezik, így a támogatói és fejlesztői felülete is széleskörű. Az R és a Python is könnyen integrálható más alkalmazásokba, jellegüket és céljukat tekintve azonban ezek mozgástere eltérhet. Az R elsődlegesen a tudományos kutatások, illetve az azokhoz kapcsolódó statisztikai és adattudományi elemzések terén mutat nagy népszerűséget, míg a Python általánosabb adatelemzési céllal rendelkezik, illetve alkalmas web- és szoftverfejlesztésre, könnyen integrálható mérnöki, műszaki környezetbe. Ezáltal a nagyobb és sokrétűbb projekteknél a Python a sokoldalúságából fakadóan hatékonyabban integrálható más rendszerekbe.
A két programnyelv vizsgálata során két további szempontrendszert szükséges figyelembe venni az adattudomány szempontjából: az adatokra, illetve az elemzésre vonatkozó paramétereket, valamint az adott programnyelv elsajátításának lehetőségeit és kihívásait. Az adatokat illetően általános megállapításként fogalmazható meg, hogy a Python a nagyobb adathalmazoknál hatékonyabb adatelemzésre képes, míg az R elsődlegesen kisebb vagy közepes méretű adatmennyiség esetén lehet megfelelő eszköz. Ez kihatással lehet az adatelemzések körére is.
Számos érvelés szól amellett, hogy az R az adatvizualizáció terén hatékonyabbnak, sokrétűbbnek tekinthető, illetve a kész ábrák az egyes csomagokban részletesebbek. Azonban ugyanennyi más megközelítés cáfolja is ezt. Amennyiben módszertani, statisztikai oldalról vizsgáljuk a két programnyelvet, úgy megállapítható, hogy a Python kevésbé specializált a különböző statisztikai elemzésekre, modellezésekre, illetve statisztikai tesztekre, mint az R. Ezzel párhuzamosan az R elsődlegesen a hagyományos statisztikai és módszertani megközelítésekre specializálódott, így a gépi és mély tanulási algoritmusokra kevésbé. Ez szoros összefüggést mutat a korábbi megállapítással az adathalmazok méretére, illetve azok kezelhetőségére vonatkozóan. Az természetesen nem állítható, hogy R-ben nem lehet gépi és mélytanulási folyamatokat futtatni (pl. a caret vagy a tidymodels csomagok), csupán a Python ezen a terén nagyobb hatékonyságot és több lehetőséget biztosít. Szükséges megemlíteni továbbá, hogy általánosságban R-ben a rendelkezésre álló statisztikai tesztek gyakran külön csomagokban érhetők el, amelyek telepítése a felhasználótól függ. Ezáltal az elemzés megköveteli a biztos módszertani háttérismeretet is az elemzőtől, annak érdekében, hogy a megfelelő statisztikai teszt kerüljön telepítésre. Ez előny és egyben hátrány is lehet. Az elemző ugyanis széles skálán elérhető tesztekkel találkozhat, így nagyobb választási lehetősége van, az eredmények szempontjából robusztusabb lehet a több, eltérő módszertani megközelítésen alapuló teszt alkalmazása. Mindazonáltal ez hátránnyá is válhat, ugyanis megköveteli a különböző tesztekhez tartozó csomagok technikai ismeretét, telepítését és alkalmazását egy-egy elemzési probléma során. Ez a probléma Python esetében is felmerülhet a moduláris jellegből fakadóan, mindazonáltal általánosságban kijelenthető, hogy kevesebb könyvtár alkalmazása szükséges egy-egy problémakör vizsgálatának lefedéséhez (a legegyszerűbb esettel élve, például a lineáris regressziós és kapcsolódó tesztek vizsgálatához). Ez azonban azt is eredményezi, hogy a statisztikai vizsgálatok kevésbé sokszínűek. Az elemzési lehetőségek, illetve a rendelkezésre álló csomagok, illetve algoritmusok nagyban befolyásolhatják a programnyelv elemzési projekthez való illesztéséhez, illetve azok tanulási folyamatához is.
A két programnyelv elsajátításának oldaláról vizsgálva megállapítható, hogy általánosságban a Python könnyebben tanulható a kezdők számára az intuitív és könnyen elsajátítható szintaxisok révén, míg az R esetében a tanulási görbe meredekebb lehet. Ez természetesen nem jelenti azt, hogy ez mindenki számára triviálisan így alakul. A tanulási folyamathoz szoroson kapcsolódnak a kódok írása során kapott hibaüzenetek is, amelyek az R-nél általában nem igazán informatívak, gyakran az általános megfogalmazás nehezítheti a konkrét hiba azonosítását. Ezzel ellentétben a Python esetében az elkövetett hibák csupán a programkód lefuttatása során jelentkeznek, így rendkívül fontos az alapos és rendszeres tesztelés.
Fontos kiemelni, hogy a két programnyelv közötti választást elsődlegesen az adathalmaz mérete és jellemzői, illetve az adatelemzési projekt jellege, valamint a kapcsolódó vizsgálati kérdés határozzák meg. Ezek együttes figyelembevételével lehet egyértelműen optimalizálni az elemzés problémakörét, s ezáltal lehatárolni az alkalmazott programot. Ehhez azonban az R és Python nyelvekben való jártasság is szükséges, illetve az azokhoz kapcsolódó csomagok és könyvtárak beható ismerete. Ezek hiányában, illetve felületes ismerete mellett ugyanis nehézkessé válhat az elemzés során történő alkalmazásuk, s a projekt közbeni esetleges váltás további problémákat, illetve időveszteséget generálhat. Nem triviális, hogy a két programnyelv között választani szükséges. A két programnyelv együttes használata is célravezető lehet, olyan esetekben például, ahol az adattisztítás Pythonban, míg a vizualizáció és elemzés R-ben történik.
Nyitókép forrása: Godfrey Atima