Rohit Malshe, Chemical Engineer, Programmer, Author, Thinker, Engineer at Intel Corporation
First a joke! My girlfriend broke up with me, because she wrote elaborate code in C over 15 days, for a problem that I could solve using Python with code in about 60 mins, with merely 100 lines of code :)
There is some serious work that can be done with Python. In reality the biggest regret of my life is ~ Why did I not start using Python about 5 years earlier? I could have been earning at least ~ 50 % more than what I earn today.
Once I got my hands on Python I used it to the best of my capabilities, and I am learning so much everyday. The learning curve has been amazing! In fact every hour you spend with Python, you would learn a lot and you would get significant improvements very quickly compared to some other programming languages.
Check out some of the best answers on what people are doing all over the world using Python. This is straight from Quora, and I occasionally visit this question just to see new additions. What are the best Python scripts you've ever written?. A lot of people from all over the world have given their Python programs which you should be able to download and use easily.
My biggest recommendation to anyone and everyone usually is to start learning programming, that too with Python.
One more time ~ If you made zero resolutions for the new year, make this one resolution. “I will learn Python this year.” Period.
Here is what is amazing about Python in my opinion:
It is a very light, and an extremely logical language.
The Anaconda suite has provided some amazing capabilities for various OSes.
Of all the programming languages I have ever used, it has the cleanest and simplest syntax, as if it was written for the beauty of the syntax.
It has an enormous library and packages maintained by a very large community. These include Pandas, NumPy, SciPy and so on. These libraries carry millions of lines of codes, which you can simply borrow and use. So you would be building on the top of some of the world’s best programmers.
There are just too many Python enthusiasts all over the world, so no matter where you are, you would have no trouble in finding someone who knows more than you. Stack Overflow now overflows with Python support.
Implementing machine learning algorithms is much simpler because many of them are available as packages and pretty much very minimal programming has to be done to get up and running.
There are libraries available for web development. I usually don’t do web development, but some of my friends do, and they love it.
One can process human readable language with packages such as NLTK. And you can be up and running in very little time. Think for example about this project ~ You have data given by Amazon on how much people like Apple phones and all that carries human text. You can create beautiful word clouds in very little time.
The speed is really good. For all practical purposes, I always weigh the amount of time needed to code something, and the speed, and I always end up picking Python over C. In fact, in last ~ 2 to 3 years, I have pretty much moved everything to Python.
Now, I do admit that I did PhD in molecular simulations, and if I chose Python to do molecular simulations, probably that would not have worked.
C/C++/Fortran are hardcore scientific computing languages, and Python cannot really come close to them when the things we want to solve are fluid simulations, molecular simulations, and aerodynamic simulations.
Some of my friends who work in options trading world tell me that their language of use is C++. C++ is object oriented, and lightening quick when it comes to speed. Coding is certainly much heavier, but folks in those businesses have to do with speed over functionality, because they are all competing for money.
People working in industries like Intel, Exxon, BP, all kinds of FMCG industries, and industries like Nike, Adidas, and so on, can benefit the most from Python. I am more specifically talking about non-software folks, who have not exactly learned the computer science fundamentals, and cannot really spend 4–6 year of their lives learning programming languages and software development.
Python will take 2–3 months only for you to make a significant improvement.
I have friends who are biologists who were able to learn Python for their practical purposes and could derive a large value out of it in very little time spent.
Check out what one can do with just one to two lines of code in Python: This answer of mine had gotten a ton of hits when I published it. I was actually shocked that it got so many upvotes. Rohit Malshe's answer to What are some of the greatest Python one liners?
What have I not liked about Python? (Some people’s opinions may differ)
Perhaps the only thing I want to point out is that if someone wanted to develop GUIs, their GUIs may not look as good as some of those developed in Visual Studio. I have personally liked Visual Studio GUIs better, but I may be wrong. Libraries like PyQT, Tkinter, etc. are available. I have just stayed away from them.
Some Java programmers, or C# enthusiasts will never have any trouble whatsoever when they would want to program GUIs, but Python people will not shine here so easily.
For anyone with just an year of experience in Python, one can make significant achievements.
One can create all sorts of data reports by getting data from various sources. Usually in industry setting, SQL becomes an important part, but Python lets one run SQL very easily.
I highly recommend the readers of this answer to also learn SQL if they need it, and learn it systematically. Their data science skills will take a step jump. Rohit Malshe's answer to Why is Python considered a good language for AI and Machine Learning?
One can then use iPython notebooks, that look very pretty for presenting lots of data, plots, and so on, and things can be automated to run on a daily basis.
This is an enormous and vast field. One can do all sorts of statistical analysis, and compete with someone using JMP, R, SAS and so on.
I answered some time back, if Python is better than R. And I have to tell you that I use Python although I know how to use R. Rohit Malshe's answer to Is Python better than R?
Python programmers will usually have an edge over all of the above.
Read my answer on data science world: Rohit Malshe's answer to How can I become a data scientist?
Machine learning in itself is a vast field, but using Python’s pre-existing packages such as Sci-kit learn, one can become a machine learning engineer in very little time. At least you can easily begin working with datasets on Kaggle, and derive value out of it.
Checkout out the type of plots one can easily make using the Seaborn library in Python.
Same way, making correlations plots is easy too:
Automating boring stuff:
One can use PyAutoGUI module to automate a large number of screen tasks.
This is extremely simple to use, and one can learn this in just 3 to 4 hours and can build substantial automation in their work.
To learn this, Google ~ Automate boring stuff with Python.
In addition to this, one can create and maintain websites ~ for which they would have to learn Django and other frameworks, but the basics remain the same.
This is an elaborate field and would take some time to be good at it, but there is just no limit to what you cannot do.
25 of the Most Popular Python and Django Websites: You would be amazed to see the websites people have designed using Python.
Web scraping and API usage:
Imagine this project: Download S&P500, Nasdaq, volatility, interest rates, and so on ~ data from federal reserve bank, Yahoo or Google Finance, and derive value and conclusions out of it. Python will crack this in no time. There are APIs available for this and some already existing packages that you only have to import to start doing this.
To develop a program that can plot S&P500, and every possible index from Federal reserve bank website, it took me merely 2 to 3 hours.
Constantly updating schedules:
By using Raspberry Pi, one can automate things like ~ “Constantly show me the timings of upcoming buses, or trains”. So if you have a screen, a Raspberry Pi, and some Python programming skills, you can build an automatic schedule display in no time, and at a very low price.
A friend of mine who lives in Chicago travels to most places by some or the other public transport, and he has reverse engineered the code to tell him when to make a move from his home to catch the bus. Sure, this can be done easily by a cell phone app, but why not do it yourself for the fun and love of it.
One can control robotics using Raspberry Pi, and Python programming.
This science is also quite elaborate, but once you know how to use a Raspberry Pi, it is not tremendously hard.
Probably I am not the best person to comment on this, but a lot of programmers use Python for game development. Python is quick enough, and fast to code for such purposes.
I have to say, there may be better programming languages for this. Microsoft support for many other programming languages has been better than that for Python.
My wish will come true, when Python and Visual Basic are combined one day to be fully integrated. Then one can enjoy the graphics of visual basic, and programming capabilities of Python.
AI type of solutions:
You can use Python’s libraries to talk to the computer, and get some enhancements from some of the other already existing software that does this task. The backend can then be built in Python.
Check out this answer on how you can talk to your computer: Rohit Malshe's answer to What should I do after reading "Building Machine Learning Systems With Python" if I want to be able to make a system that can speak like a person?
My job requires image processing, and some scientific computing such as calculating Fourier transforms, and deriving conclusions out of them. This can be done by Python programming easily enough compared to some other programming languages. Probably some people who have used MATLAB would be delighted to know that Python can crack this problem easily enough.
Automating emails and reports:
One can setup automatic reports to send you information on one or the other thing. Imagine this ~ What are the prices of 100 stocks at the open ~ send mails to you on this on a daily basis ~ Python will achieve this very easily.
Download reports from your organizations SQL server, process everything according to a particular sequence and logic and send you a report every morning ~ Python will achieve it a day or less.
Today I wrote about how can one go about learning machine learning. Some readers may find this helpful, hence I am somewhat interlinking my answers. Rohit Malshe's answer to How do I learn machine learning?
Now the biggest question: How do I learn all this?
I would recommend following pathway, which somewhat worked for me, although I keep jumping to and fro these days wherever I get stuck:
First things first: Installation: I suggest beginners to use ~ Installation from Download Anaconda Now!. I started with Python 2.7, and I am happy with it. I have used Python 3.5 too, but then I kept coming back to 2.7. I think it is the most supported branch, and it works for all practical purposes.
Where to program: To program, one can use Spyder, or Jupyter notebooks. Complex programming platforms exist such as those given in the below:
Where to program: Sublime Text: Sublime Text - Download,
Where to program: Atom: A hackable text editor for the 21st Century. This was somewhat harder because it doesn’t really allow installing themes and packages so easily. I actually stopped using it. It did have some amazing features though ~ For example ‘code complete’.
Where to program: Pycharm: PyCharm. As you grow in Python programming as profession, move on to using PyCharm. That is what most hardcore programmers use. But the licence for this can be costly.
Now the basic learning:
Which website to go to: Go to Python Programming Tutorials and learn the basics. The programmer is very nice and teaches everything in a very simple way. My idea about learning anything and everything is to get the basics out of the way, and this website will achieve the purpose.
Which website to go to: The second source should be: Learn Python The Hard Way: Learn Python the Hard Way. I spend a decent amount of time on this, though I moved on to next thing whenever I thought I had gotten a reasonable solution.
Which website to go to: Similarly there are other programmers: Such as Python for Developers.
Which website to go to: One really good source I found is ~ Automate the Boring Stuff with Python. You would find detailed answers to a lot of questions on this website/book, and you should be able to get some good value out of it.
Which website to not go to: I would actually recommend that people stay away from Udemy, and Coursera, because they can confuse themselves initially. It is not that those courses are not good, but my opinion is that they aren’t made to be interesting and practical.
Which website to go to: A few of data-scientists I know suggested Google’s Python class: Google's Python Class | Python Education
| Google Developers. I spent some time here as well, but I felt like I knew a few things already, so I quickly moved on.
How to go about loading up packages: Packages can be loaded up from here: vinta/awesome-python
What packages to learn: Quickly as you have learned the basics, dive into learning the packages, and begin with Pandas, NumPy, SciPy, Matplotlib, Seaborn, and Scikit Learn.
What packages to learn: Learn pandas from here: 10 Minutes to pandas, and detailed synopsis from http://pandas.pydata.org/pandas-..., or pandas: powerful Python data analysis toolkit
What packages to learn: Learn machine learning from here: scikit-learn: machine learning in Python
How to learn from others: Follow other people and how they write codes on Kaggle: Your Home for Data Science
For plotting, follow this website: Seaborn: statistical data visualization
How to learn from others: Get inspiration from how to come up with beautiful notebooks from here: Notebook Gallery
Is there one resource for everything I need to know? You can probably make this your homepage or something: vinta/awesome-python. It gives a long curated list of Python packages that can keep someone busy for several months.
How can I program for GUI development: WxGlade seems to be one of the best resources. FrontPage - wxPyWiki
Kivy Kivy: Cross-platform Python Framework for NUI also seems to be a very nice GUI development tool.
If I get some more comments on this answer, I will surely add more. I am going to take this answer to greater heights and keep adding more to it as I get some comments and more inspiration. For now, I should put my pen down, but before that, I wanted to make this answer inspirational too, so here is some.
And since I said inspiration, why not from Steve Jobs and Elon Musk?
“I observed something fairly early on at Apple, which I didn’t know how to explain then, but have thought a lot about it since. Most things in life have a dynamic range in which average to best is at most 2:1. For example if you go to New York City and get an average taxi cab driver versus the best taxi cab driver, you’ll probably get to your destination with the best taxi driver 30% faster. And an automobile; What’s the difference between the average car and the best? Maybe 20% ? The best CD player versus the average CD player? Maybe 20% ? So 2:1 is a big dynamic range for most things in life. Now, in software, and it used to be the case in hardware, the difference between the average software developer and the best is 50:1; Maybe even 100:1. Very few things in life are like this, but what I was lucky enough to spend my life doing, which is software, is like this. So I’ve built a lot of my success on finding these truly gifted people, and not settling for ‘B’ and ‘C’ players, but really going for the ‘A’ players. And I found something… I found that when you get enough ‘A’ players together; when you go through the incredible work to find these ‘A’ players, they really like working with each other. Because most have never had the chance to do that before. And they don’t work with ‘B’ and ‘C’ players, so it’s self policing. They only want to hire ‘A’ players. So you build these pockets of ‘A’ players and it just propagates.”
Elon Musk: Movement of molecules is expensive, but that of electrons is cheap. If one can optimize the movement of molecules by movement of electrons, they can be orders of magnitude better.
Read this analysis at: Rohit Malshe's answer to Is Elon Musk the next Steve Jobs?
Stay blessed and stay inspired!