How to split train/test datasets having equal classes proportion
If what you want to do is keep the same proportions across the splits, what you are doing is right.
In order to validate properly your model, the class distribution should be constant along with the different splits (train, validation, test).
In the train test split documentation , you can find the argument:

stratifyarray-like, default=None
If not None, data is split in a stratified fashion, using this as the class labels.

One step beyond will be using Stratified K-Folds cross-validator.

This cross-validation object is a variation of KFold that returns stratified folds. The folds are made by preserving the percentage of samples for each class.

There are more splitting techniques in scikit learn that you can use, have a look.
In order to check what is the function doing just calculate the percentages in the splits:
 np.unique(y_train, return_counts=True)
 np.unique(y_val, return_counts=True)

But this will make you have the same proportions across the whole data, if your original label proportion is 1/5, then you will have 1/5 in train and 1/5 in test
If what you want is have the same proportion of classes 50% - 0 and 50% - 1. Then there is two techniques oversampling and undersampling. But I wont recommend you this for your problem. Your label seems fairly good balanced 1/5 its a great proportion.
Still this library has some implementations to do that
In this blog you can see an overview of imbalanced datasets but yours is not. Choosing a proper metric is more important.