Código Julia para tareas menores que hago a cada rato y que no quiero tener que andar buscando en la web. Si a alguien le sirve, bienvenido.
using DataFrames
using XLSX
XLSX.writetable("new_file.xlsx", "sheet1" => df)
Extraido de: https://stackoverflow.com/questions/76090037/how-to-save-changes-of-dataframe-from-julia-to-excel-as-new-excel
using DataFrames
using XLSX
df = DataFrame(XLSX.readtable("new_file.xlsx", "sheet1"))
using DataFrames
using CSV
CSV.write("new_file.csv", df)
using DataFrames
using CSV
df = CSV.read("new_file.csv", DataFrame)
using DataFrames
using CSV
df |> CSV.write("new_file.csv")
Tip extraído de este post de Stack Overflow.
using DataFrames
function filter_transform!(df, pred, args...)
fdf = filter(pred, df; view=true)
fdf .= DataFrames.transform(copy(fdf), (col => f => col for (col,f) in args)...)
end
# Ejemplo de uso
# Cambia el valor de 'column2' a 200 en aquellos casos que 'column1' sea mayor a 100
filter_transform!(df, :column1 => >(100), :column2 => column2->200)
using DataFrames
df.columna = Int64.(df.columna)
Ahora bien, si a los datos del dataframe los queresmo utilizar con algún modelo de Machine Learning, con la biblioteca MLJ, la transformación debe hacerse mediante la función coerce, que no solo cambia el tipo en memoria, sinó que le asocia una interpretación en el contexto del aprendizaje automático. Por ejemplo, si queremos convertir una columna a un tipo de data (para aprendizaje automático) del tipo categórico:
using DataFrames
using ScientificTypes
coerce!(df, :columna => ScientificTypes.Multiclass)
Y si queremos convetir todas las columnas del tipo Count (el tipo de dato con el cual se asocian los enteros) a Continuous (el tipo de datos asociados a reales), podemos hacer:
using DataFrames
using ScientificTypes
coerce!(df, ScientificTypes.Count => ScientificTypes.Continuous)
coerce! es muy potente porque cambia las dos cosas, la forma de almacenar el dato en memoria, como la interpretación del dato.
Dado un conjunto de predictores Xtrain y una variable a predecir ytrain, el siguiente código nos lista (en un dataframe) todos los modelos que permiten el tipo de datos asociado a las features y al target:
using MLJ
DataFrame(models(matching(Xtrain,ytrain)))
Ahora bien, si queremos averiguar si, para un modelo particular, los predictores o la variable dependiente son compatibles. Por ejemplo, con un DecisionTreeClassifier del paquete DecisionTreeInterface:
using MLJ
using DecisionTreeInterface
println("¿Es el formato del target compatible?: ",
scitype(ytrain) <: target_scitype(DecisionTreeClassifier()))
println("¿Es el formato de las features compatible?: ",
scitype(Xtrain) <: input_scitype(DecisionTreeClassifier()))