It is not a secret that Python is one of the most widely used programming languages in Data Science. There are many reasons for such a popularity of Python in this particular branch since this programming language is featured by elegance and simplicity that allows its users to create advanced mathematical algorithms for the purposes of machine learning. Furthermore, Python has multiple libraries for data preparation, data modelling, data mining and data visualisation. Let’s look at the Python libraries every data scientist or analyst should know!

## Python libraries for Data Mining

Data Mining is more effective and simple if you use **BeautifulSoup** or **Scrapy**. The first one is a very useful library including tools for data scraping and web crawling especially when you want to get some data from a particular website without an API or CSV. BeautifulSoup can easily scrape the data and arrange the information into a wide variety of formats.

Scrapy is used for creating so-called spider bots which are crawling programmes used for obtaining structured data from websites. Some examples of information that can be retrieved by Scrapy is contact data or URL. Many developers use Scrapy for machine learning models written in Python.

## Data preparation and modelling

You can perform advanced mathematical operations on your data if you transform it into the Python n-arrays or matrices and use functions offered by the Numerical Python library that is also known as **NumPy**. If you want to accelerate the time of execution and thus increase the performance of your programme, you should definitely use NumPy.

Other crucial Python structures for working with data are one-dimensional series and two-dimensional data frames. You will find plenty of tools for working with series and data frames in the Python **Pandas** library. With the help of Pandas, you will be able to convert your data into the Data Frame objects, manage its columns, handle missing data and even create histograms and box plots. Thus, Pandas are useful for data processing and visualisation.

**SciPy** is built upon NumPy and it provides users with advanced mathematical modules for statistics, algebra, optimisation and integration. One of the greatest examples of packages available in the SciPy library is **SciKit-Learn**. This one provides data scientists with many standard machine learning algorithms used in the industry such as regression, clustering, classification, model selection or dimensionality reduction.

One of the most popular Python libraries used for creating data models and building neural networks is **Keras**. This library uses many other libraries as its backends, for instance, TensorFlow, Theano or Microsoft’s CNTK (Microsoft Cognitive Toolkit).

If you need to perform tasks in deep learning, you should check the **PyTorch** framework based on an open-source C library Torch. You can do many other complex things with the help of PyTorch as well, for example, automatic gradient calculation or creation of computational graphs.

**TensorFlow** developed at Google Brain is a perfect tool for working with artificial neural networks. Some of the tasks that can be done with TensorFlow are speech recognition and object identification. A crucial feature of TensorFlow is the fact it is constantly being under development so many new functions are regularly added to the library. Furthermore, the developers pay a lot of attention to the security issues connected with the use of this library.

In case you need to use the Gradient Boosting framework for implementation of your machine learning algorithms, use a flexible and portable **XGBoost** Python library. A code written with XGBoost can be run on MPI, Hadoop, SGE and many other distributed environments.

## Data Visualisation with Python

One of the standard Python libraries used for data visualisation is **Matplotlib** which is widely used for creating two-dimensional plots such as scatterplots, histograms and non-Cartesian coordinates graphs.

In case you need to visualise more complex statistics, you should check the functionality of **Seaborn** which is widely used for joint plots, violin diagrams, time series and heatmaps.

Seaborn is based on Matplotlib whereas another great Python visualisation library **Bokeh** is completely independent of Matplotlib. The main task of this library is creation of scalable interactive visualisations inside Internet browsers with the use of JavaScript widgets.

Another Python library used for data visualisation within Internet browsers is **Plotly** which supports animation, multiple linked views and crosstalk integration.

Finally, for those data architects, who need to develop algorithms with decision trees or neural network, **pydot** can be appear particularly helpful. Some of the tasks you will be able to do with the help of pydot is the visualisation of the structure of a graph.