the first type of package shown in figure is mainly used in simple tasks and when data fits into memory the second type is used to optimize your code when you've finished prototyping and run into speed or memory issues the third type is specific to using python with big data technologies packages for working with data in memory when prototypingthe following packages can get you started by providing advanced functionalities with few lines of codescipy is library that integrates fundamental packages often used in scientific computing such as numpymatplotlibpandasand sympy numpy gives you access to powerful array functions and linear algebra functions matplotlib is popular plotting package with some functionality pandas is high-performancebut easy-to-usedata-wrangling package it introduces dataframes to pythona type of in-memory data table it' concept that should sound familiar to regular users of sympy is package used for symbolic mathematics and computer algebra statsmodels is package for statistical methods and algorithms scikit-learn is library filled with machine learning algorithms rpy allows you to call functions from within python is popular open source statistics program nltk (natural language toolkitis python toolkit with focus on text analytics these libraries are good to get started withbut once you make the decision to run certain python program at frequent intervalsperformance comes into play optimizing operations once your application moves into productionthe libraries listed here can help you deliver the speed you need sometimes this involves connecting to big data infrastructures such as hadoop and spark numba and numbapro--these use just-in-time compilation to speed up applications written directly in python and few annotations numbapro also allows you to use the power of your graphics processor unit (gpupycuda --this allows you to write code that will be executed on the gpu instead of your cpu and is therefore ideal for calculation-heavy applications it works best with problems that lend themselves to being parallelized and need little input compared to the number of required computing cycles an example is studying the robustness of your predictions by calculating thousands of different outcomes based on single start state cythonor for python--this brings the programming language to python is lower-level languageso the code is closer to what the computer eventually uses (bytecodethe closer code is to bits and bytesthe faster it executes computer is also faster when it knows the type of variable (called static typingpython wasn' designed to do thisand cython helps you to overcome this shortfall