Is Python a viable language to do statistical analysis in?
Python is more &quot;general purpose&quot; while R has a clear(er) focus on statistics. However, most (if not all) things you can do in R can be done in Python as well. The difference is that you need to use additional packages in Python for some things you can do in base R.
Some examples:

Data frames are base R while you need to use Pandas in Python.
Linear models (lm) are base R while you need to use statsmodels or scikit in Python. There are important conceptional differences to be considered.
For some rather basic mathematical operations you would need to use numpy.

Overall this leads to some additional effort (and knowledge) needed to work fluently in Python. I personally often feel more comfortable working with base R since I feel like being &quot;closer to the data&quot; in (base) R.
However, in other cases, e.g. when I use boosting or neural nets, Python seems to have an advantage over R. Many algorithms are developed in C++ (e.g. Keras, LightGBM) and adapted to Python and (often later to) R. At least when you work with Windows, this often works better with Python. You can use things like Tensorflow/Keras, LightGBM, Catboost in R, but it sometimes can be daunting to get the additional package running in R (especially with GPU support).
Many packages (or methods) are available for R and Python, such as GLMnet (for R / for Python). You can also see based on the Labs of &quot;Introduction to Statistical Learning&quot; - which are available for R and for Python as well - that there is not so much of a difference between the two languages in terms of what you can do. The difference is more like how things are done.
Finally, since Python is more &quot;general purpose&quot; than R (at least in my view), there are interesting and funny things you can do with Python (beyond statistics) which you cannot do with R (at least it is harder).