Почему типы столбцов фреймов данных, созданных XLSX, всегда имеют тип any

#dataframe #julia #xlsx

#фрейм данных #джулия #xlsx

Вопрос:

У меня есть некоторые переменные в Excel, я хочу загрузить их в Julia и оценить линейную модель. Мои переменные состоят из действительных чисел, однако каждый столбец в фрейме данных, созданном XLSX, имеет тип Any.

Мне было интересно, есть ли у XLSX способ присвоить правильный тип каждому столбцу.

Спасибо

Ответ №1:

Просто используйте infer_eltypes=true вот пример:

 julia> DataFrame(XLSX.readtable("file.xlsx",1;infer_eltypes=true)...)
3×3 DataFrame
│ Row │ col1  │ col2    │ col3   │
│     │ Int64 │ Float64 │ String │
├─────┼───────┼─────────┼────────┤
│ 114.5     │ txt1   │
│ 225.5     │ txt2   │
│ 336.7     │ txt3   │
 

Ответ №2:

Я не знаю, возможно ли это в reader, но вот способ сделать это в постобработке:

 julia> df = DataFrame(a=Any[1,2], b=Any[1,missing], c=Any[1.0,2.0], d=Any[1.0,missing])
2×4 DataFrame
 Row │ a    b        c    d
     │ Any  Any      Any  Any
─────┼────────────────────────────
   11    1        1.0  1.0
   22    missing  2.0  missing

julia> transform!(df, names(df) .=> ByRow(identity), renamecols=false)
2×4 DataFrame
 Row │ a      b        c        d
     │ Int64  Int64?   Float64  Float64?
─────┼────────────────────────────────────
   11        1      1.0        1.0
   22  missing      2.0  missing