Läsa in och skriva CSV-filer

Datamanipulering i Julia

Katerina Zahradova

Instructor

Avgränsare

  • Avgränsare = ett tecken eller en sträng som separerar värden
  • Exempel på avgränsare: ",", " ", "\t", ...
# Loading file with a space as a delimiter
penguins = DataFrame(CSV.File("penguins.csv",delim=" "))
Datamanipulering i Julia

Decimaltecken

  • Decimalpunkt (blå), t.ex. 3.14
  • Decimalkomma (grön), t.ex. 3,14
  • Båda (mörkgrön)
  • Arabisk decimalseparator (röd)

Decimaltecken runt om i världen

# Loading file with comma as decimal mark
penguins = DataFrame(CSV.File(
        "penguins.csv",
        decimal=',', delim=" "))
1 Av NuclearVacuum, Wikipedia
Datamanipulering i Julia

Läsa in delar av datamängder

# Loading lines 13 till 27
penguins_part = DataFrame(CSV.File("penguins.csv", skipto=10, limit=3))
3×7 DataFrame
Row species  island     culmen_length_mm  culmen_depth_mm  ...
    String7  String15   Float64           Float64          ...
______________________________________________________________
1   Adelie   Torgersen  38.6              21.2             ...
2   Adelie   Torgersen  34.6              21.1             ...
3   Adelie   Torgersen  36.6              17.8             ...
Datamanipulering i Julia

Rubrikrad

# Specifying header as a line
penguins_header = DataFrame(CSV.File("penguins.csv", header = 1))
333×7 DataFrame
Row species  island     culmen_length_mm  culmen_depth_mm  ...
    String7  String15   Float64           Float64          ...
______________________________________________________________
1   Adelie   Torgersen  39.1              18.7             ...
2   Adelie   Torgersen  39.5              17.4             ...
3   Adelie   Torgersen  40.3              18.0             ...
...
Datamanipulering i Julia

Rubrikrad över flera rader

# Multiline header
penguins_header = DataFrame(CSV.File("penguins.csv", header = [1, 2]))
332×7 DataFrame
Row species_Adelie  island_Torgersen  culmen_length_mm_39.1  ...
    String7         String15          Float64                ...
________________________________________________________________
1   Adelie          Torgersen         39.5                   ...
2   Adelie          Torgersen         40.3                   ...
3   Adelie          Torgersen         36.7                   ...
...
Datamanipulering i Julia

Ersätta rubrikraden

# Replacing header
penguins_header = DataFrame(CSV.File("penguins.csv",
                        header = [:species, :area, :culmen_l_mm, :culmen_d_mm,
                            :flipper_l_mm, :weight_g, :sex]))
333×7 DataFrame
Row species  area       culmen_l_mm  culmen_d_mm      ...
    String7  String15   Float64      Float64          ...
____________________________________________________
1   Adelie   Torgersen  39.1         18.7             ...
2   Adelie   Torgersen  39.5         17.4             ...
3   Adelie   Torgersen  40.3         18.0             ...
...
Datamanipulering i Julia

Skriva CSV-filer

# Save DataFrame
CSV.write("temp/transformed_penguins.csv", delim = " ", decimal = ',')
Datamanipulering i Julia

Snabbreferens

  • delim=: ett Char eller String som separerar värden i kolumner; t.ex. species,island,...

  • decimal=: ett Char som anger hur decimaler separeras i flyttal; t.ex. . i 3.14

  • skipto=: ett Int som anger radnumret i filen där inläsningen ska börja; observera – rubrikraden räknas!

  • limit=: ett Int som anger antalet rader att läsa in

  • header=: ett Int för rubrikradens radnummer, ett Vector{Int} för flera rader, ett Vector{String} eller Vector{Symbol} för att ersätta rubrikraden

  • CSV.File(path) läser in en fil från path

  • CSV.write(path, df) skriver df som en CSV-fil till path

Dokumentation för CSV.File() och CSV.write

Datamanipulering i Julia

Nu kör vi en övning!

Datamanipulering i Julia

Preparing Video For Download...