“Data science” is just about as broad of a term as they come. It may be easiest to describe what it is by listing its more concrete components:
Data exploration & analysis.
- Included here: Pandas; NumPy; SciPy; a helping hand from Python’s Standard Library.
Data visualization. A pretty self-explanatory name. Taking data and turning it into something colorful.
- Included here: Matplotlib; Seaborn; Datashader; others.
Classical machine learning. Conceptually, we could define this as any supervised or unsupervised learning task that is not deep learning (see below). Scikit-learn is far-and-away the go-to tool for implementing classification, regression, clustering, and dimensionality reduction, while StatsModels is less actively developed but still has a number of useful features.
- Included here: Scikit-Learn, StatsModels.
Deep learning. This is a subset of machine learning that is seeing a renaissance, and is commonly implemented with Keras, among other libraries. It has seen monumental improvements over the last ~5 years, such as AlexNet in 2012, which was the first design to incorporate consecutive convolutional layers.
- Included here: Keras, TensorFlow, and a whole host of others.
Data storage and big data frameworks. Big data is best defined as data that is either literally too large to reside on a single machine, or can’t be processed in the absence of a distributed environment. The Python bindings to Apache technologies play heavily here.
- Apache Spark; Apache Hadoop; HDFS; Dask; h5py/pytables.
Odds and ends. Includes subtopics such as natural language processing, and image manipulation with libraries such as OpenCV.
- Included here: nltk; Spacy; OpenCV/cv2; scikit-image; Cython.