Python and R are undoubtedly the most loved programming languages for building data models and have been neck-and-neck for years in terms of their popularity. KDnuggets' annual software poll illustrates that Python’s usage in the field has been growing faster than R for several years — and even overtook R by a narrow margin in the most recent survey. This post explores the major differences between the two and some common reasons for choosing one over the other.

R was developed in 1992 and was the preferred programming language of most data scientists for years. That’s because it was developed explicitly for data analysis by statisticians looking for an open-source solution that could replace expensive legacy systems like SAS and MATLAB. R is a procedural language like BASIC, Pascal, and Go: that means it works by breaking down a programming task into a series of steps, procedures, and subroutines. This is a plus when it comes to building data models because it makes it relatively easy to understand how complex operations are carried out; however, it is often at the expense of performance and code readability.

R’s analysis-oriented community has developed open-source packages for specific complex models that a data scientist would otherwise have to build from scratch. R also emphasizes quality reporting with support for clean visualizations and the Shiny framework for creating interactive web applications. On the other hand, slower performance and a lack of key features like unit testing and web frameworks are common reasons that some data scientists prefer to look elsewhere.

For these individuals, Python is likely to be the programming language of choice for data science work. It was released in 1989 with a philosophy that emphasizes code readability and efficiency. Unlike R, it’s an object-oriented programming language, which means it groups data and code into objects that can interact with and even modify one another. Java, C++, and Scala are other examples. This sophisticated approach allows data scientists to execute tasks with better stability, modularity, and code readability.

Data scientists are only a small portion of the diverse Python community. This extensive community has a distinct advantage because its members develop programs for the language that are a lot more diverse than those for R with respect to functionality. Most notably, Python’s suite of specialized deep learning and other machine learning libraries includes popular tools like scikit-learn, Keras, and TensorFlow, which enable data scientists to develop sophisticated data models that plug directly into a production system. The NumPy and Pandas libraries cover many of the general data analysis needs that are baked into R, and new interactive Python plotting libraries like Bokeh and Plotly are making up for some of the difference in support for quality reporting that has historically been an easy win for R. However, there are still some holes in Python’s support for highly specialized data analysis.

All things considered, it’s not surprising that R and Python have remained so close in popularity for such a long time. Both are viable options for building data models and both languages are well-supported by communities of developers and data scientists committed to expanding their capabilities. Use case is the most important factor in the decision to choose one or the other: Python’s popularity is growing with the rise of deep learning and other machine learning techniques, but R will likely remain a favorite for complex statistical models.

Nikki Castle
Nikki Castle

Marketing operations specialist at