Adatbányászati technikák 1. labor
Február 17., csütörtök 8:15-9:45, R4M labor
Órai feladatok: adatfileok feldolgozása (linux alapismeretek, AWK)
- Indítsuk el az xservert: XWin
Server (az asztalon).
- A megjelenő terminál ablakban beállíthatunk különféle dolgokat.
Például a VT
Options-ban
bállíthatjuk: Enable Scrollbar.
- Az első, általunk tanult parancs a man,
amellyel Linux parancsok ,,használati
útmutatóit"
jeleníthetjük meg.
Olvassuk el a cd parancs leírását (man cd)!
A leírás alapján mire való
a cd
parancs?
- Adjuk ki a cd
/cygdrive/c/user/
utasítást!
- Töltsük le az arlista-tab.txt,
bank-data.csv,
contact-lenses.arff
és uniq.txt
fileokat a C:/USER könyvtárba.
- Nyissuk meg a uniq.txt
filet az nedit
uniq.txt
&
paranccsal!
- Mire való az ls
parancs?
Mit csinál az ls -l
parancs?
Mit csinál az ls -lt
parancs?
Mit csinál az ls -l *.txt
parancs?
- Másolás: cp,
átnevezés: mv,
törlés:
rm,
alkönyvtár
létrehozása: mkdir, alkönyvtár
törlése:
rmdir.
- Szöveg kiírása a standard outputra: cat file.
Szöveg kiírása a standard outputra lapozhatóan: less file.
Próbáljuk ki:
less uniq.txt. Lapozás: Enter,
Space, fel-le nyilak, f, b. Kilépés: q.
- Karakter, szó és sorszámlálás: wc.
Tanulmányozzuk a lehetőségeket!
- Keresés: grep
Pl: Mely fileok, mely sorában szerepel a yes szó: grep yes *
- A standard kimenet átirányítása:>
Az ls -l
>tartalom.txt
parancs a tartalom.txt
fileba
teszi a kimenetet. Próbáljuk ki és ellenőrizzük, hogy tényleg az
került-e bele!
- Csővezetékes átirányítás: |
Az ls | wc
-w
parancs megszámolja, hogy az ls
kimenetében hány szó van.
Hányszor szerepel a contact-lenses.arff
fileban a yes
szó?
- További parancsok: cut, uniq,
sort, tr
- Tab szeparált file "," szeparált fileba alakítása: tr '\t' ','
< input > output
Próbáljuk ki a uniq.txt
állománnyal!
- Hajtsuk végre az alábbi parancsokat a uniq.txt
fileon, és fogalmazzuk
meg, hogy az egyes parancssorozatok
milyen műveleteket végeznek!
cut -f1 <adatfile>
cut -f1 <adatfile> | sort
cut -f1 <adatfile> | sort -n | uniq
cut -f1 <adatfile> | sort -n | uniq | wc -l
- Az előző feladatban megismert cut parancs
használatával
vágjuk ki a uniq.txt
file második oszlopa
negyedik szavának első három karakterét!
- A grep
parancs
használatával keressük meg a uniq.txt
fileban azokat a sorokat, amelyek tartalmazzák a ,,szor" mintát!
Szűrjük a kimenetet úgy, hogy az egymást követő azonos sorok csak
egyszer szerepeljenek!
Szűrjük a kimenetet úgy, hogy az azonos sorok csak egyszer
szerepeljenek!
Ha meggyőződtünk róla, hogy a kívánt kimenetet kaptuk, irányítsuk át a
kimenetet egy tetszőleges file-ba!
- Tekintsük át az eddig beírt parancsainkat a fel/le nyilak
használatával! Mi történik, ha egy félig beírt parancs vagy filenév
után leütjük a TAB billentyűt?
- Manuáljuk segítségével tekintsük át a következő parancsokat is: paste, join, sed.
- Az AWK program
bemutatása.
- Adott szót tartalmazó sorok:
awk
'/RURAL/' bank-data.csv
- Beépített változó az oszlop elválasztó karakter: FS és az
aktuális sor sorszáma: NR
- Oszlopok
mint
változók: $1,$2,...
az
egész sor: $0
- Csak a 3,4,5 oszlopot irja ki:
awk
'BEGIN {FS=","} /RURAL/ {print $3,$4,$5}' bank-data.csv
- 45 évnél fiatalabbak listázása:
awk
'BEGIN {FS=","} {if ($2 < 45) print $2," ",$3,$4,$5}' bank-data.csv
- Írjuk ki a bank-data.csv file
sorait
sorszámozva!
- Egy Awk program általános formája:
awk
'BEGIN
{<initializations>}
<search
pattern
1>
{<program actions>}
<search
pattern
2>
{<program actions>}
...
END
{<final actions>}'
- Példák:
Sorok száma:
awk
'END {print
NR,"sor"}' uniq.txt
(Ugyanaz, mint a wc -l uniq.txt)
- Átlag életkor:
awk
'BEGIN{FS=","} {s+=$2} END{print s/NR}' bank-data.csv
- Nyissunk meg egy új filet az editorban: nedit atlag.awk
&
Írjuk bele az előző sorban az idézőjelek között levő parancsokat (lehet
új sorba a különböző részeket).
Adjuk ki a következő parancsot: awk
-f atlag.awk bank-data.csv
- Számítsuk ki a nők átlagéletkorát!
- Az arlista-tab.txt
filben melyik termékkategóriából hány szerepel:
awk
'{v[$1]++} END{for (i in v) print
i,v[i]}' arlista-tab.txt
- Számítsuk ki az átlagárat termékkategóriánként!
- Készítsünk egy új táblázatot, melyben a termék neve mellett a
brutto webes ár, az ÁFA (25%) és a netto ár szerepel!
Kiegészítő feladat: adattisztítás
- Írjunk egy programot (tetszőleges programozási nyelven), mely a
bemenetként kapott esetlegesen elgépelt magyar városneveket megpróbálja
helyesen írt szóvá visszaalakítani:
- Szükségünk lesz egy referencia listára, mely a magyar
városneveket tartalmazza. Az itt
található forrás segítségével készítsünk egy fájlt, mely soronként
tartalmazza a helyesen írt városneveket!
- Először próbáljunk ki egy nagyon egyszerű eljárást: válasszuk azt
a városnevet a referencia listából, mely a legtöbb karakterben egyezik
meg a visszaalakítandó szóval.
Mikor jó ez a módszer, és mikor nem?
- Valósítsunk meg egy bonyolultabb algoritmust is, mely a
leghosszabb közös részsorozat hosszát számolja a kapott szó és a
referencia lista eleme között: LCS.
Hasonlítsuk össze az előbbi két módszert!
- További lehetőség a szerkesztési távolság meghatározása: Levenshtein
távolság.