加载与写入 CSV 文件

Julia 中的数据操作

Katerina Zahradova

Instructor

分隔符

  • 分隔符:用于分隔值的字符或字符串
  • 分隔符示例:如 ","" ""\t"
# 使用空格作为分隔符加载文件
penguins = DataFrame(CSV.File("penguins.csv",delim=" "))
Julia 中的数据操作

小数标记

  • 小数点(蓝色),如 3.14
  • 小数逗号(绿色),如 3,14
  • 二者皆用(深绿色)
  • 阿拉伯小数分隔符(红色)

世界各地的小数标记

# 使用逗号作为小数标记加载文件
penguins = DataFrame(CSV.File(
        "penguins.csv",
        decimal=',', delim=" "))
1 作者:NuclearVacuum,维基百科
Julia 中的数据操作

按部分加载数据集

# 加载第 13 到 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             ...
Julia 中的数据操作

表头

# 将某一行作为表头
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             ...
...
Julia 中的数据操作

多行表头

# 多行表头
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                   ...
...
Julia 中的数据操作

替换表头

# 替换表头
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             ...
...
Julia 中的数据操作

写入 CSV 文件

# 保存 DataFrame
CSV.write("temp/transformed_penguins.csv", delim = " ", decimal = ',')
Julia 中的数据操作

速查表

  • delim=:用于分隔列值的 CharString,如 species,island,...

  • decimal=:指示浮点小数分隔符的 Char,如 3.14 中的 .

  • skipto=Int,从文件的第几行开始读取;注意:包含表头!

  • limit=Int,要读取的行数

  • header=Int 表示表头行号,Vector{Int} 表示多行,Vector{String}Vector{Symbol} 用于重写表头

  • CSV.File(path) 读取 path 中的文件

  • CSV.write(path, df)df 写为 path 下的 CSV

CSV.File()CSV.write 文档

Julia 中的数据操作

Vamos praticar!

Julia 中的数据操作

Preparing Video For Download...