012026_Q7B7 Run Advertisement 012026_Q7B7 Run Advertisement 012026_Q7B7 Run Advertisement

AI nástroje na analýzu dátových súborov xls a csv – príprava údajov

Digitálne zručnosti
0

Prakticky každá platforma na prácu s údajmi podporuje import a export údajov vo formáte csv (Comma Separated Values čiže hodnoty oddelené čiarkou). Tento formát dokáže priamo načítať aj tabuľkový program Excel napriek tomu, že natívny formát jeho dokumentov má príponu xlsx. Údaje vo formáte csv generuje aj väčšina zariadení na meranie rôznych veličín a na monitorovanie procesov. Námetom článku je analýza údajov v týchto súboroch.

SAMSUNG 0126_W8 Advertisement

Predspracovanie údajov

Pravdepodobne čakáte, že hneď na úvod predstavíme množinu AI nástrojov, ktoré dokážu súbory vo formáte csv a xlsx analyzovať tak, že v prirodzenom jazyku napíšete zadanie a AI nástroj, bežiaci či už v cloude, alebo lokálne na vašom PC, vám za krátky čas vygeneruje požadovaný výstup v textovej, tabuľkovej, prípadne aj grafickej podobe. V prípade rozumného objemu dobre štruktúrovaných údajov to takto naozaj môže fungovať.

Určite si položíte parafrázovanú otázku zo známeho kultového filmu: A čo dátoví analytici a dátoví vedci, nepripravia ich AI nástroje o prácu? Určite nie. Jednak sa bavíme o súboroch s jednoduchou tabuľkovou štruktúrou údajov bez relačných vzťahov, jednak takáto koncepcia, nazývaná samoobslužná Business Intelligence (BI), umožňuje tvorbu analytických modelov priamo ľuďom, ktorí tieto analýzy potrebujú, napríklad manažérom. Minimálne dve desaťročia môžu vďaka samoobslužnej BI nielen dátoví analytici, ale aj bežní používatelia bez podrobnej znalosti štruktúr databáz spracovávať a analyzovať veľké množstvo údajov z rôznych zdrojov bez nutnosti oslovovať analytikov špecialistov či IT oddelenia. Zjednodušene povedané, čo bolo, bolo, teraz tu máme AI, teda nástroje pre samoobslužnú BI sú takisto zahrnuté pod tento fenomén.


Zdroj: pola.rs

Vráťme sa však k súborom csv. V dnešnej ére veľkých dát očakávať rozumný objem údajov je skôr zbožné prianie než realita, takže v prípade reálnych scenárov si budete musieť poradiť s veľkými súbormi obsahujúcimi milióny či stovky miliónov záznamov. Jeden takýto súbor využijeme aj ako ilustračný príklad. Zadajte do vyhľadávača „kaggle simulated transaction". Dostanete sa na stránku, z ktorej si môžete stiahnuť súbor csv obsahujúci náhodne vygenerované transakcie pre 75 000 zákazníkov. Súbor obsahuje 261 969 719 záznamov o transakciách a má 21,7 GB. Posielať súbory tejto veľkosti do cloudu, prípadne ich analyzovať na lokálnom PC nie je úplne triviálna záležitosť. A v prípade, že platíte za objem údajov prenesený do cloudu, ani lacná. 

Výhoda formátu csv je v tom, že údaje v textovom formáte oddelené čiarkou sú dobre čitateľné tak pre ľudí, ako aj pre počítače. Nevýhodné však je, že takto uložené údaje zaberajú veľký objem. Preto vo väčšine prípadov bude treba údaje najskôr spracovať tak, aby ste pomocou filtrov s podmienkami získali relevantnú množinu údajov. Samozrejme, aj v tomto vám môže teoreticky pomôcť AI, ale to by ste už mohli rovno napísať zadanie na analýzu a čakať na výsledok.

Pre príklady v tomto článku potrebujete mať nainštalované prostredie programovacieho jazyka Python. Na prácu s pomalšou knižnicou Pandas môžete použiť prostredie Windows. Ak chcete na prácu s údajmi použiť rádovo rýchlejšiu knižnicu Polars, ktorá využíva grafickú kartu, potrebujete PC s Linuxom, prípadne vo Windows prostredie WSL2 (Windows Subsystem for Linux). Podrobný postup inštalácie a konfigurácie WSL2, ako aj prostredia na dátové analýzy v Linuxe nájdete vo videách na našom kanáli YouTube.

Najskôr sa pokúsime zredukovať objem údajov bez toho, aby sme ich filtrovali. Určite vám napadne použiť nejaký algoritmus bezstratovej kompresie, napríklad ZIP. Dátový súbor takto dokážeme podstatne zmenšiť, v tomto prípade z 21,7 na 5,6 GB, teda na 25 % pôvodnej veľkosti, ale z prehľadne štruktúrovaného textového súboru dostaneme neštruktúrovaný binárny súbor, nevhodný na spracovanie a analýzy. Preto potrebujeme kompresiu, ktorá zmenší objem údajov, ale zachová ich štruktúru. Riešením je napríklad komprimovaný formát Parquet. Podobne ako csv aj Parquet je stĺpcovo orientovaný formát na ukladanie dát, ktorý sa často využíva v prostredí práce s veľkými dátami. Kompresia v Parquete funguje na úrovni jednotlivých stĺpcov. V praxi to znamená, že každý stĺpec je uložený samostatne, čo prináša niekoľko výhod, predovšetkým optimalizáciu kompresie. Keďže údaje v stĺpci majú zvyčajne rovnaký dátový typ (čísla alebo textové reťazce), možno aplikovať špecifické algoritmy, ktoré sú vhodnejšie a efektívnejšie pre daný typ dát. Každý stĺpec môže byť komprimovaný pomocou iného algoritmu. Najčastejšie sa používajú kompresné algoritmy:

  • Snappy – rýchly, ale nie najefektívnejší kompresný algoritmus, vhodný na rýchle čítanie dát
  • GZIP – lepšia kompresia, ale pomalšie čítanie
  • LZ4 – efektívny pre scenáre častého čítania a zápisu
  • ZSTD – vyvážený medzi rýchlosťou a efektivitou kompresie

Pri dopytoch alebo analýzach sa načítavajú iba relevantné stĺpce, čím sa znižuje množstvo prenášaných dát a zrýchľuje sa proces spracovania a analýzy údajov. Komprimovaný formát Parquet oceníte hlavne pri spracúvaní údajov v cloudových službách, kde sa platí za objem prenesených a spracovaných dát.

Vďaka jeho stĺpcovej štruktúre a kompresným vlastnostiam je Parquet vhodný na ukladanie a spracovávanie obrovského množstva dát pri zachovaní rýchleho prístupu k nim a minimalizovaní nákladov na úložný priestor a výpočtové zdroje. Na ilustráciu, keď náš súbor csv s údajmi o transakciách s veľkosťou 21,7 GB prekonvertujeme do formátu Parquet, získame súbor vo veľkosti 4,3 GB, čiže kompresia je efektívnejšia ako pri algoritme ZIP, pričom štruktúra údajov zostane zachovaná.

Pri predspracovaní údajov z csv nám AI môže pomôcť pri napísaní programu na konverziu do komprimovaného formátu. Použijeme jednoduché zadanie pre ChatGPT:

Napíš program v Pythone, ktorý súbor transakcie.csv prekonvertuje do formátu Parquet

import pandas as pd

# Načítaj CSV súbor

df = pd.read_csv('transakcie.csv')

# Ulož DataFrame do Parquet súboru použijeme kompresiu Snappy

df.to_parquet('transakcie.parquet', engine='pyarrow', compression='snappy')

Tento trojriadkový miniprogram využíva knižnicu Pandas v kombinácii s knižnicou ­PyArrow. Knižnice, samozrejme, treba najskôr nainštalovať príkazom: pip install pandas pyarrow.

Knižnicu Pandas môžete následne po­užiť na filtrovanie údajov. Pri väčšom objeme údajov však zistíte, že táto knižnica nie je na rýchle spracovanie väčšieho objemu údajov optimálna, pretože využíva procesor. Preto sa poohliadneme po knižnici na prácu s údajmi, ktorá využíva grafickú kartu – či už na lokálnom PC, alebo v cloude – a vďaka tomu je podstatne rýchlejšia. Využijeme knižnicu Polars (https://pola.rs). Zmeníme zadanie pre ChatGPT:

Napíš program v Pythone, ktorý súbor trans­akcie.csv prekonvertuje do formátu Parquet s využitím knižnice Polars.

import polars as pl

# Načítanie CSV súboru pomocou Polars

df = pl.read_csv('transakcie.csv')

# Uloženie do Parquet formátu

df.write_parquet('transakcie.parquet', compression='snappy') # použijeme kompresiu Snappy

Knižnicu nainštalujeme príkazom: pip ­install polars

Knižnica Polars aj s využitím cenovo dostupných kariet NVIDIA GeForce RTX 4060 či už na PC, alebo v notebooku dokáže údaje spracovať 5 – 10-krát rýchlejšie než knižnica Pandas.

Pokračujeme v scenári s cvičnými údajmi. Budeme pracovať s komprimovaným súborom vo formáte parquet. Potrebujeme zoskupiť transakcie zákazníkov podľa vymenovaných kategórií. Napíšeme zadanie pre ChatGPT, v ktorom sme úmyselne zabudli zadať názov atribútu, ktorý obsahuje údaj o kategórii výdavkov. AI túto nejednoznačnosť, samozrejme, zobrala do úvahy.

Napíš program v Pythone s využitím knižnice Polars, ktorý načíta údaje zo súboru vo formáte parquet a atribút AMOUNT zoskupí podľa kategórií Groceries, Clothing, Housing, Education a Health.

Tento program predpokladá, že súbor Parquet obsahuje stĺpec AMOUNT (predstavujúci hodnoty transakcií) a stĺpec CATEGORY, ktorý obsahuje kategórie výdavkov. Ak sú kategórie uložené v inom stĺpci alebo sa nazývajú inak, bude treba upraviť názvy stĺpcov.

import polars as pl

# Načítanie údajov z Parquet súboru

df = pl.read_parquet('transakcie.parquet')

# Definovanie kategórií, podľa ktorých chceme zoskupiť údaje

kategorie = ["Groceries", "Clothing", "Housing", "Education", "Health"]

# Filtrovanie a zoskupovanie dát podľa kategórie a súčet AMOUNT pre každú z nich

df_grouped = (

  df.filter(pl.col("CATEGORY").is_in(kategorie))

  .groupby("CATEGORY")

  .agg(pl.col("AMOUNT").sum().alias("Total_Amount"))

)

# Zobrazenie výsledku

print(df_grouped)

Vo voľnom pokračovaní v nasledujúcom čísle ukážeme sofistikovanejšie nástroje, ktoré pomocou jednoduchého zadania umožnia analyzovať údaje, ktoré máme predpripravené, vyfiltrované a uložené vo vhodnom formáte tak, aby súbory mali rozumnú veľkosť.

ÚVODNÝ OBR. ZDROJ: FREEPIk / FREEPIK.com
 

 

Zobrazit Galériu

Pridať komentár

Mohlo by vás zaujímať

Mohlo by vás zaujímať