You do not need to fill missing values or treat categorical with LightGBM.
You can pass the name of the columns that are categoricals when constructing the Booster or Data, and LightGBM will work with them under the hood treating them as a 1 hot encoded.
LightGBM also has a way of automatically treat missing values as either zeros, their own category, or the sample average (I might be mistaken on the last one)
All in all, you still need to do feature engineering and the like, but LightGBM removes a lot of the hassle from Xgboost.
You can pass the name of the columns that are categoricals when constructing the Booster or Data, and LightGBM will work with them under the hood treating them as a 1 hot encoded.
LightGBM also has a way of automatically treat missing values as either zeros, their own category, or the sample average (I might be mistaken on the last one)
All in all, you still need to do feature engineering and the like, but LightGBM removes a lot of the hassle from Xgboost.