Data Science Programming Languages and When To Use Them
Read this guide through the most common data science programming languages and when to use them in data science.
Using programming languages is something data science doesn’t exist without. The broadness of data science and the sheer number of programming languages available makes it quite hard to decide which language to use and when.
My approach here is to show you the most common use cases of programming in data science. From there on, I’ll go through programming languages that are most suited to a specific use case. I couldn’t analyze them all, of course. I needed to narrow them down.
Which I did, thanks to a certain survey.
When is Programming Languages Used in Data Science?
When it comes to programming language popularity, we will use Anaconda’s (Python’s distribution) 2021 survey.
Source: https://www.anaconda.com/state-of-data-science-2021
The survey shows the use frequency of the most popular data science programming languages. With a sample of 3,104, it’s pretty safe to conclude these programming languages reflect popularity in data science. Some other lists include some other languages, but we’ll stick to this one to analyze every one of them.
The question is, when are these programming languages used in data science? There’s no point in telling you ‘use this language’ if you don’t know when you should use it.
The data scientist job generally includes these phases:
- data extraction and manipulation
- statistical analysis
- data visualization
- modeling/machine learning (ML)
- model deployment
- automation
Data Extraction and Manipulation
Data extraction means getting data from a database or other sources.
Once you get data, you need to clean it to make sure you have correct and suitable data. By cleaning it, you remove errors, inconsistencies, duplicate data, replace incomplete data and format it accordingly.
After data cleaning comes data manipulation. It means you want to modify data to make it more readable and organized.
Hopefully, you don’t think you should do this manually. There are programming languages very suitable for performing these tasks. They are:
- SQL
- Python
- R
Here’s an overview of what they’re good for:
SQL
Pros: The primary purpose of SQL is to work with data and databases. Therefore, it’s ideal for data extraction and manipulation (to a certain extent), especially when working with relational databases. It’s fast in data retrieving and relatively simple. The syntax is also standardized.
Cons: Relatively limited in data manipulation
Python
Pros: Ideal for manipulating data because of its built-in analytics tool. It’s an open-source language, so its popularity and active community give you access to plenty of analytics libraries. It’s easy to use, and complex data manipulations end up with fewer lines of code.
Cons: Not ideal for data extraction, but its libraries partly compensate for it.
R
Pros: Designed by mathematicians and data scientists for mathematicians and data scientists. Again, an open-source language gives you a vast amount of R packages for data manipulation. It is designed with enormous amounts of data.
Cons: Although data can be extracted in R, it’s not that suitable due to its complexity and relative slowness.
Statistical Analysis
The next phase in the data science cycle is statistical analysis. Once you collect the data and have it manipulated according to your need, you need to analyze it. The purpose of this is to find patterns within data, which is then turned into insights, predictions and reports.
The best programming languages for that are:
- R
- Python
- Java
- JavaScript
- Julia
Here’s the overview of how good they are at statistical analysis:
R
Pros: Statistical analysis being R’s main purpose, it’s no wonder it shines here. It offers plenty of data analysis tools for undertaking complex statistical calculations. It can work with a vast amount of data.
Cons: Being a relatively old language, it can sometimes be slow and require more code lines.
Python
Pros: Its data-analytics libraries make it excellent for most statistical analyzes. Libraries are designed to work well with the high data volume. Faster than R.
Cons: Not as many libraries as R for statistical analysis.
Java
Pros: Swift programming language; faster than both R and Python. It can run without any special software; it only requires Java Virtual Machine (JVM). This also offers the opportunity to work with many analytical frameworks, such as Kafka, Hadoop, Hive, or Apache Spark, which all run on JVM. Here are some recommendations on what to do with Java statistics-wise and which libraries to use.
Cons: Not that suited for hardcore statistical analysis as R.
JavaScript
Pros: It offers some possibilities for statistical analysis. Combined with its ability to run on any computer (with JVM), it could be suited for some lighter statistical analysis. You can find recommendations for some JavaScript libraries on Stack Overflow.
Cons: While there are some libraries for statistical analysis, the range of their possibilities is somewhat limited, especially compared to R.
Julia
Pros: Its syntax is simple, with mathematical operations being written very similarly to the real world. It’s also faster than Python. It can call other programming languages’ libraries, such as Python’s. For descriptive statistics, here are Julia’s standard statistics and other libraries, and here are some additional libraries and useful examples. If you want probability statistics, Julia has a vast amount of those packages too, which shows statistics are really at the heart of this programming language. There’s even a book published on statistics with Julia.
Cons: Relatively less popular, making the community and range of libraries smaller. Also not that suited to hardcore statistical analysis as R.
Data Visualization
Once you’ve analyzed data, you have to present your insights. You’ll usually have to show them to non-technical people, so you can’t expect them to go through infinite data, tables, and calculations. You want them to understand you, and the easiest way to do that is to create some attractive data visualizations that explain everything (almost) at a glance.
You’d want to use programming languages that are great at this:
- R
- Python
- JavaScript
- Julia
Here’s how they perform in data visualization:
R
Pros: Data visualizations being the extension of statistical analysis, no wonder this statistical programming language is great at them too. Offers plenty of visualization packages. They allow showing very informative visualizations in a small space. Allows the use of geographical maps.
Cons: -
Python
Pros: Also good for data visualizations because it offers plenty of libraries for that purpose.
Cons: The libraries it offers are still somewhat weaker than in R.
JavaScript
Pros: Offers a lot of libraries for data visualization, which makes it ideal for that. Again, it can be run on any machine, so you don’t need any additional software to create or show your insights.
Cons: -
Julia
Pros: Relatively good for data visualizations, because it offers some packages for that purpose.
Cons: Still a relatively new language, so there’s not such a vast amount of libraries as, say, Python.
Modeling/Machine Learning (ML)
Now that you have data ready and analyzed, everything is in place to build a model. This includes choosing a modeling technique and then writing an algorithm. Writing an algorithm is a crucial part of machine learning; how model training goes depends on it. Yes, how good you’re at writing algorithms is what makes a model good at finding patterns and giving business predictions.
So which data science programming languages offer you the most for this susceptible task? Here they are:
- Python
- R
- Java/JavaScript
- C/C++
- Julia
- TypeScript
I’ve tried to assess their suitability according to pros and cons:
Python
Pros: Python’s simplicity makes it easy to write complex codes for machine learning. It’s also very flexible due to its libraries. Speaking of libraries, there are plenty of them (and mighty ones!) that will help you get a very high quality of machine learning.
Cons: None.
R
Pros: Especially good for those experts that are a little less adept at coding. Its robust computing capabilities are ideal for complex machine learning. Also offers a wide range of excellent packages designed for machine learning.
Cons: Could be slow. Not very suited to really hardcore neural networks. Also not that suitable for deploying to production.
Java/JavaScript
Pros: Very fast (faster than Python) and reliable in heavy-duty data processing. There are high-quality frameworks that support different machine learning techniques and algorithms.
Cons: Not that flexible as Python.
C/C++
Pros: Its code is very easily read by the machine. Offers possibilities of memory management and other performance parameters. Its speed and the fact that plenty of many machine learning libraries are written in C/C++ (even the Python ones) make it great for very sophisticated machine learning use cases. Perfect for programmers. Here are rather good recommendations for ML libraries for Java, JavaScript, and C++.
Cons: Its pros are also its pitfalls. It’s rather a code-heavy programming language, which could be hard to learn for those with less coding experience. Also, debugging complex algorithms is usually very difficult. Not very flexible, so not that good if still experimenting with parameters.
Julia
Pros: Developed for ML calculations and statistical tasks. It’s very fast and easy to learn for users without a heavy programming background. Probably has the best libraries for machine learning, linear algebra, differential equations, mathematical optimization, parallel and distributed computing, and automatic differentiation. Very versatile, which means its code is executable in C, Python, and R.
Cons: Still relatively small community contributing to its libraries.
TypeScript
Pros: It’s a superset of JavaScript. Ideal for users already familiar with JavaScript wanting to get rid of some of its disadvantages. Has strong machine learning libraries, such as Kalimdor, TensorFlow Deep Playground, R.js, Machinelearn.js, Machine-learning, or ML Classifier UI. It runs on a browser or JS engine, so it’s ideal for browser-based machine learning. Its option of static typing allows finding bugs in the code before the model is deployed.
Cons: Requires more lines of code compared to JavaScript. Because of that, its performance could be slower.
Model Deployment
One of the important tasks for any data scientist is to deploy the model they created. That’s where the model and your previous work will have a real impact. It’s not a joke anymore because deploying a model means it goes into the production of an existing business environment. This means real people will use it, and how good it is at providing insights will influence business decisions and the real world massively.
To get the model to people for them to use it, you have to create some application (be it mobile or web-based), desktop software, or API. Some of the best data science programming languages for doing that are:
- Python
- Java
- JavaScript
- C#
- HTML/CSS
- PHP
- Rust
- GoLang
Here’s how they perform the task:
Python
Pros: Being a general-purpose programming language, no wonder it’s great for deploying models. It’s especially good for software development and building web-based applications. Its general advantage is plenty of quality libraries. This also makes it shine here too, with Django, Pyramid, TurboGears, and Flask being some of the recommended libraries. It is very expressive, flexible, and simple to use, making creating applications quicker. The code debugging is made easier because the code is executed line by line, and it’s not executed further in case of an error. One of Python’s main advantages is its portability, which means it can run perfectly on multiple platforms.
Cons: Could be slower than other programming languages. It’s also almost completely unsuitable for mobile app development. It uses a lot of memory, so you should be careful when simultaneously performing several tasks that consume a lot of memory. Applications built by Python require detailed testing, because it being dynamically typed language means variables can change their data types.
Java
Pros: Still a prevalent programming language in development circles. It's suitable for any kind of software, mobile or web-based app. One of the reasons for that is surely its platform independence, meaning no additional software is required except the JVM. In practice, you’ll write your code only once, and then you can run it in any environment. Its syntax is quite simple, which makes it easier to deploy models. Additionally, it is an object-oriented program; the code can easily be upgraded, adapted, and reused. One of main Java’s advantages is its rather high level of security, due to it not having pointers and having a Security Manager. This makes Java highly recommended when security is one of your main concerns.
Cons: The speed may be its main downside. Java is quite memory-consuming and, with a garbage collector running, it may slow down performance. Also, not that suited for easily building sexy and user-friendly GUI.
JavaScript
Pros: One of its main advantages is its speed. Being interpreted language, and because of that not requiring compilation, makes it speedy. Additionally, it’s a client-side script, which means it runs on a browser without the need to connect to the server, which contributes to its speed. It works well with other programming languages, making it suitable for deploying models within the larger system. The language is fairly simple, making deploying models and code debugging easier. Has great interfaces, which makes it easy to create attractive and practical GUI.
Cons: Its security since the user can see the code.
C#
Pros: Being a general-purpose programming language, like Python, it’s very flexible for building various types of applications across different platforms. As a language based on object-oriented principles (like Java, for example), this inherently leads to building applications being easier to build, test, and upgrade with fewer lines of code. This is also helped by C# being type-safe, meaning the variable can’t change its data type in the code. It has a robust memory backup, so there should be no issues with the memory leak.
Cons: Speed - the applications can sometimes run a bit slow when written in C#. It requires the .NET platform to be cross-platform flexible.
HTML/CSS
Pros: HTML is ideal for web-based applications specifically used for displaying web pages. Every browser supports it and, since it runs in a browser, doesn’t require additional software to be installed. It’s a very simple language, which makes it very fast. It also allows using the templates, making it easier for data scientists to deploy their models easily into a web application.
Cons: Alone, it’s not generally suitable for anything but the basic web apps. This is improved by combining it with CSS. HTML also has rather limited security, so not recommended if that’s one of your main concerns. Usually has to be combined with another programming language to create dynamic web pages.
PHP
Pros: It’s a server-side scripting language, which means applications don’t run on web browsers but web servers. This crucial characteristic makes it ideal for creating interactive and dynamic websites and applications. It’s also easy to embed it with the HTML code. PHP, therefore, doesn’t depend on the platform the application is being run on. It’s fast because it uses its own memory. It doesn’t require a huge amount of code, so making rather complex web apps becomes rather easy, especially when debugging. PHP is a very stable programming language, ensuring your model’s functionality is adequately translated to the user experience. It also has a great range of libraries that enhance data presentation and easily connects to a database, which makes it perfect for presenting your work on models. It’s also worth mentioning the PHP syntax is the same as C syntax, so it’ll be easy for you to use it if you have C knowledge.
Cons: If you’re concerned about security, PHP might be a little lacking here. However, its community has addressed this issue by providing various tools and frameworks over the years. This programming language is probably not ideal for massive applications or effortless use of multiple features at a time; it can result in poor performance. It could also be hard to maintain and upgrade them due to PHP not being very modular. It also makes debugging quite difficult since it lacks debugging tools.
Rust
Pros: Rust was designed with the safety of applications in mind and its performance. No wonder these are two areas where this data science programming language shines. It’s good for developing desktop programs or mobile applications, but it’s developed for making web-based apps. Supports C and C++, so if you have experience with these programming languages, you could also utilize Rust's benefits over them and easily integrate it with other languages. It balances between being easy to create an application (the benefit of dynamic typing) and code maintainability, which is the benefit of static typing. Rust is also considered one of the most secure programming languages. It provides you with the low-level control of your deployed application, so you can truly tune it up and optimize its performance.
Cons: It’s a relatively new language, so the libraries might not be as good as for some other languages. The low-level control makes it more suitable for the back-end than the front-end.
GoLang
Pros: Its main advantage is stability. It is based on the C language, so if you have experience with it, you could easily learn it and benefit from its advantages. This language is very fast because it’s a compiled language. It comes with plenty of tools designed to make coding easy, which makes it great if you want to build your app quickly. It’s a very scalable language, which makes it great if you want your model to be deployed for a longer period and if you want to develop it further. GoLang’s standard library comes with testing support. If you want to build a little more complex application, GoLang could be, pun intended, a go-to language. It’s very good at handling multiple tasks at the same time. Being a new language, it is built to go hand-in-hand with cloud computing.
Cons: Being compiled language and the speed that comes with it means you’ll probably have to write comparatively a lot of lines of code to perform even a rather simple task. This is the offset of its simplicity, which is why the language is occasionally not suited for hardcore programmers.
Automation
One additional task, the one that involves and influences all others, gaining increasing significance in data science is automation. It’s an all-encompassing task that tries to automate data scientists’ manual work. That is because plenty of data scientists’ work includes manual, repetitive, and tedious work, which they could use more purposefully.
However, not all parts of a data scientist’s job can be automated. For now, only machine learning could be fully automated. Extracting and manipulating data, as well as data analysis and its visualization, can be only partially automated. The same goes with model deployment.
It doesn’t mean you couldn’t try to automate at least part of your work. I’m going to have a look at some of the best data science programming languages for that:
- Python
- Bash/Shell
- Java
- C#
- Julia
- R
Have a look at how they rank:
Python
Pros: It’s a general-purpose language, so it’s also good for automation. What makes Python good for data science, in general, makes it also good for automation. Its simplicity, expressiveness, and a number of extremely solid libraries for machine learning and its automation are its main force. They bring flexibility to it, and Python’s platform independence only contributes to it. It’s good for automating all parts of a data science job. Here are some suggestions on how you could use Python for automation.
Cons: Not that suitable for mobile platforms.
Bash/Shell
Pros: Created for automating repetitive tasks on Linux (it works on Windows 10, too), it’s no wonder it’s great for automation. Its main use is data extraction and manipulation in data science, which makes it perfect for building data pipelines. If you’re on Medium, the Towards Data Science blog has an article on automating boring stuff with Bash.
Cons: Not suited for automating other parts of a data scientist’s job. Not that commonly used as a general automation language.
Java
Pros: Where Python lacks, Java shines: it’s perfect for mobile apps. That’s not a surprise. Java being a scripting language makes it specifically designed to automate tasks execution. Its code is also very easily changed and updated, making it great for dynamic environments where workflow parameters are often changing. Allows frameworks that help in automation. Additionally, it runs on any machine with JVM installed, and it’s very fast. Here are some ETL tools you can play with and integrate with the Java code.
Cons: Lacks flexibility.
C#
Pros: One of the best automation languages in general, especially if you want to automate building models. Why? Because there’s a Model Builder, which uses, as Microsoft documentation says, “automated machine learning to explore different machine learning algorithms and settings”. To do that, it uses C# code.
Cons: It’s platform-dependent.
R
Pros: As one of the kings in statistical analysis and visualization, this is a perfect tool for automating this part of the data science process. Especially if the process involves heavy statistical analysis, its quality is more important than speed. If you’re interested in automating exploratory data analysis, here are some R packages that might help you.
Cons: If the speed is of critical importance, then R might not be that good choice compared to other data science programming languages. It’s also not that commonly used as an overall automation language.
How to Choose Which Data Science Programming Language(s) to Learn?
Easy, learn the one which is the best. Which one is that? The one that suits your requirements.
The single most important question you have to ask yourself is: What do I need programming for? If you don’t ask yourself (and answer) that question, you could end up trying to teach an elephant to climb a tree.
What is it that you do primarily on your job? What do you want to do next in your current or future job? What interests you as a student, and in which direction do you want your career to go?
Of course, you’re free to randomly choose one of the data science programming languages simply because you have time and want to learn. However, most of the time, the choice depends on what your work requires or will require. Because of that, it’s essential that you know what every data science job encompasses.
For example, if you're a business analyst, data modeler, database administrator, or data analyst, you’ll probably be good only with SQL. It’s because you’ll mainly work on data extraction and manipulation.
If you’re a data analyst, SQL is good. Still, you’ll also probably need to know Python for some heavier statistical work and automation, maybe even some other language suited for automation.
Besides SQL and Python, marketing scientists, BI developers, statisticians, or quants might also need to know R. Adding Python and/or R to SQL becomes more important if your job is more to analyze and visualize data than to extract it.
On the other hand, data architects might want to learn Python, Java, or any other data science programming language suitable for building applications.
As a data scientist, you’re covering all the steps in the data science cycle to a certain extent. You’ll probably want to add Java/JavaScript, C languages, or some other languages suitable for machine learning, model deployment, and automation.
Data engineers are mostly focused on extracting, transforming, and loading data. Aside from SQL and other languages used for that, they will probably use the languages used for automation.
If you’re a machine learning engineer, that means you’re focused on building and deploying machine learning models. So you might want to add some additional learning programming languages in the Modeling/ML, Model Deployment, and Automation section.
Software engineers are focused on software development, so they probably won’t need extensive knowledge of programming languages for other purposes.
Is There an Ideal Mix of Programming Languages for Data Scientists?
I’m usually not the one to claim something being popular inherently means it’s also good. In this case, however, the programming languages’ popularity reflects their suitability for data science.
And yes, the first three most popular ones make the (almost) ideal mix of programming languages in data science. Have a look at the first three languages in the chart at the article beginning, and you’ll see them. Yes, the holy trinity of data science is Python, SQL, and R.
Again, what you do in data science is the most important factor in deciding. Based on that, you might prefer some other languages too, or maybe you won’t need one of those three data science programming languages.
Still, these languages’ ubiquity means there’s a high demand on the job market for skillful data scientists using them.
Such high demand is there for a reason. The reason is: Python, SQL, and R are really good at what they do. Using them, you’ll be able to perform high-quality work at any stage of a data science project. All three are great in data extraction and manipulation. When it comes to statistical analysis and visualization, you can use Python or R. The same goes for machine learning. And when deploying models or automating certain processes, you can again use Python, feeling comfortable with the work you’ve done.
If you also want to know about MATLAB and SAAS as well, check out this “Top 5 Data Science Programming Languages” post.
Summary
There’s no significant conclusion here. Except there’s no one best data science programming language. Instead, use the overview below to easily find which programming language(s) suit you most.
Nate Rosidi is a data scientist and in product strategy. He's also an adjunct professor teaching analytics, and is the founder of StrataScratch, a platform helping data scientists prepare for their interviews with real interview questions from top companies. Connect with him on Twitter: StrataScratch or LinkedIn.