Skip to content

Commit 4f446eb

Browse files
committed
Lisää ohjeistusta
1 parent a76e94a commit 4f446eb

File tree

1 file changed

+66
-3
lines changed

1 file changed

+66
-3
lines changed

README.md

Lines changed: 66 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,72 @@ Ohjeet ovat enimmäkseen Ubuntu Linuxille. Useimmat ohjelmistot asennetaan
1111
`sudo apt-get install csvkit`)
1212
* [curl](https://curl.se/) (todennäköisesti on jo mukana Linux-asennuksessa)
1313

14+
## Traficomin avoin data
15+
16+
Ajoneuvotiedot ovat [Traficomin avointa dataa](https://tieto.traficom.fi/fi/tietotraficom/avoin-data).
17+
18+
## Datan siivous
19+
20+
Traficomin ajoneuvodata on CSV-muodossa ja pakattu ZIP-tiedostoon. Pura ZIP-paketti sopivaan
21+
hakemistoon `unzip`-komennolla. Dataan kuuluu myös muuttujien kuvaus, joka on Excel-tiedostossa.
22+
Sitä voi tarkastella Linuxissa esimerkiksi LibreOffice-ohjelmistolla.
23+
24+
Kopioidaan alkuperäinen tiedosto ensin toiselle nimelle, jotta komennoista ei tule niin hankalia (alkuperäinen tiedosto on edelleen saatavissa Traficomin sivuilta ladatussa ZIP-paketissa):
25+
26+
$ cp Ajoneuvojen_avoin_data_5_21.csv ajoneuvot-original.csv
27+
28+
Käyttämällä file-komentoa voidaan nähdä, että ajoneuvodata on Windows-rivimuodossa
29+
(eli rivinvaihto on kaksi merkkiä, CR ja LF) ja se käyttää ISO 8859-1 -merkistökoodausta:
30+
31+
$ file ajoneuvot-original.csv
32+
ajoneuvot-original.csv: ISO-8859 text, with very long lines (578), with CRLF line terminators
33+
34+
$ file -i ajoneuvot-original.csv
35+
ajoneuvot-original.csv: text/plain; charset=iso-8859-1
36+
37+
Näemmä `file`-ohjelma ei kuitenkaan tunnista tiedostoa CSV:ksi, koska ei ehdota
38+
MIME-tyypiksi `text/csv`.
39+
40+
Ensimmäisessä vaiheessa muunnetaan rivinvaihdot Unix-tyylisiksi
41+
`dos2unix`-ohjelmalla, jonka pitäisi olla valmiiksi käytettävissä Linux-asennuksessa:
42+
43+
$ dos2unix -v -n ajoneuvot-original.csv ajoneuvot-unix.csv
44+
dos2unix: Converted 5360982 out of 5360982 line breaks.
45+
dos2unix: converting file ajoneuvot-original.csv to file ajoneuvot-unix.csv in Unix format...
46+
47+
Toisessa vaiheessa muunnetaan ISO 8859-1 -merkistökoodaus UTF-8:ksi käyttäen `iconv`-komentoa:
48+
49+
$ iconv -f iso-8859-1 -t utf-8 ajoneuvot-unix.csv >ajoneuvot-unix-utf8.csv
50+
51+
Komentojen `-v`- tai `--verbose`-optiot eivät ole välttämättömiä, mutta tässä vaiheessa ne voivat olla
52+
hyödyllisiä (verbose = enemmän selittävää tulostusta, mikä ei Unix-komennoissa
53+
lähtökohtaisesti ole tapana).
54+
55+
Lopputuloksena meillä on kolme CSV-tiedostoa: alkuperäinen, Unix-rivinvaihdoilla varustettu
56+
alkuperäinen sekä vielä UTF-8-merkistöksi muunnettu Unix-rivinvaihdollinen versio:
57+
58+
$ ls -goh --time-style=long-iso *.csv
59+
-rw-rw-r-- 1 920M 2024-01-15 11:26 ajoneuvot-original.csv
60+
-rw-rw-r-- 1 915M 2024-01-15 11:29 ajoneuvot-unix.csv
61+
-rw-rw-r-- 1 916M 2024-01-15 11:55 ajoneuvot-unix-utf8.csv
62+
63+
Jatkokäsittelyä varten kannattanee nimetä viimeisen vaiheen tiedosto uudelleen:
64+
65+
$ mv ajoneuvot-unix-utf8.csv ajoneuvot.csv
66+
67+
Tässä repossa oleva skripti `siivous.sh` suorittaa kaikki nämä toiminnot
68+
yhdellä kertaa, ja poistaa vielä lopuksi välivaiheissa syntyneet tiedostot.
69+
70+
## CSVKit ja muita työkaluja
71+
72+
CSV-tiedostojen määritys löytyy [RFC 4180](https://www.ietf.org/rfc/rfc4180.txt):sta.
73+
74+
Tarkastelemalla `ajoneuvot.csv`-tiedostoa `head`-komennolla nähdään,
75+
että ensimmäinen rivi on otsikkorivi. Tiedosto on CSV-muotoinen, mutta
76+
siinä on käytetty erotinmerkkinä puolipistettä suomalaisen standardin
77+
mukaisesti. Jos jonkin sarakkeen arvoon sisältyy sama erotinmerkki,
78+
niin CSV-määrityksen mukaan sarake pitää sulkea lainausmerkkien sisään.
79+
1480
## Python
1581

1682
Esimerkeissä on käytetty Pythonin versiota 3.10.6. Tarkista oma Python 3-versiosi:
@@ -46,9 +112,6 @@ Kun olet lopettanut projektin työstämisen, anna komento `deactivate`. Sen jäl
46112
virtuaaliympäristö näkyy komentokehotteessa, mutta voit tarkistaa tilanteen
47113
komennolla `which python3`.
48114

49-
## Traficomin avoin data
50-
51-
Ajoneuvotiedot ovat [Traficomin avointa dataa](https://www.traficom.fi/fi/ajankohtaista/avoin-data?toggle=Ajoneuvojen%20avoin%20data).
52115

53116
## Sähköautojen ensirekisteröintien kehitys
54117

0 commit comments

Comments
 (0)