If one could just take all different packages as building blocks and seamlesly feed output of one function to another there would be no problem at all : you would just use different packages as building blocks. But the problem is that there are different types, even for the simplest “categorical” variables, and when you try to smoothly pass structure from one package into another, the problems begins:
" No, i do not work with THAT type, give me another"
" No, i have my own implemented categorical variable type, please encode in this new format"
“This is DataFrame, but i want array”
“No, this is array, and i work only with dataframes!”
And so on, so you literally spend a lot of time on this reinterpretation of the data.