The compilation process is a process of taking code from language "A" and translating it to code from language "B".
Lets start by saying that python doesn't compile at all - it stays python code all of the time.
On the other hand, $C$ compiles into assembly, which then turns into a standalone executable.
Since python stays python, this means that to run python code, you will need a special program - an interpreter. This interpreter reads the python code line-by-line, and executes it. But $C$ compiles into assembly, which is natural for the computer and can be executed without requiring help from other programs.
While creating an interpreter is usually simpler, a compiler is a much better option - here are a few advantages:
- Compiled code doesn't need to rely on external programs to run code
- The compiler can catch some errors even before the program is executed, while this is not possible when using an interpreter
- A compiler is capable of introducing optimizations into the compiled code, so that it will run faster (nowadays, its significantly faster!)
All of that being said, even though python is an interpreted language, it doesn't make it a bad one. The core concept of python is being simple, easy to learn and use, and still powerful - and python achieves those well.
In this answer I was talking about the most basic versions and usages of python and $C$. Yes, you can create a compiler for any language, even python. And yes, python already isn't a "fully" interpreted language - there are some compilation steps that are done. But it is still considered an interpreted language since there really isn't a native compiler that translates it into machine code (assembly)