A framework provides a structured, predefined way to build an application or perform a task. It often dictates the overall architecture of your code, guiding the developer on how to organize the codebase, and providing built-in mechanisms for various tasks. The key difference is inversion of control: the framework calls your code, whereas in a library, you call the library’s code.
Key Characteristics:
It provides a «skeleton» or structure, which you extend to fit your needs.
Enforces a specific workflow or architectural pattern.
Handles much of the «under-the-hood» operations, offering abstraction over complex processes.
Example: In a web framework, the framework might dictate how you handle routing, database interaction, and template rendering.
Objectives of frameworks
Guided Structure
Frameworks help to structure and organize code for more complex systems, often providing predefined pathways to achieve specific goals (por ejemplo, building an application, managing big data, etcétera).
Abstraction
They abstract away complex and repetitive tasks so the developer can focus on specific aspects of the project, such as model logic or UI.
Workflow Automation
They often automate tasks like routing, scaling, or serving an application, allowing for a streamlined development process.
Inversion of Control
The framework calls your code, which enforces a pattern on how to design and structure the solution.
Frameworks in Python for Data Analysis
Dask
Type: Framework
Objective: Parallel and distributed computing for data analysis, enabling users to work with larger-than-memory datasets by parallelizing computations.
Use Case: Scaling Pandas-like operations to larger datasets or distributed systems.
Dash
Type: Framework
Objective: Build analytical web applications and dashboards with minimal web development knowledge.
Use Case: Interactive data visualization dashboards, often used for business intelligence.
TensorFlow (can be a framework or library, depending on usage):
Type: Framework (as it provides a structured way to build deep learning models).
Objective: Build and train machine learning models, particularly deep learning models.
Use Case: Developing scalable and production-ready machine learning systems.
Keras
Type: High-level API framework (on top of TensorFlow).
Objective: Simplifies building deep learning models.
Use Case: Quick experimentation with neural networks without needing to worry about lower-level details.
Libraries in Python for Data Analysis
Pandas
Type: Library
Objective: Provides flexible and powerful tools for data manipulation and analysis, particularly suited for handling tabular data (DataFrames).
Use Case: Data cleaning, transformation, and exploratory analysis.
NumPy
Type: Library
Objective: Offers support for large, multi-dimensional arrays and matrices, along with mathematical functions to operate on them.
Use Case: Efficient numerical computations, serving as a foundation for many other data analysis libraries.
Matplotlib
Type: Library
Objective: Create static, interactive, and animated visualizations in Python.
Use Case: Data visualization for exploratory data analysis, reports, and presentations.
Seaborn
Type: Library
Objective: Simplify the creation of aesthetically pleasing and informative statistical plots, built on top of Matplotlib.
Use Case: Statistical data visualization and exploratory data analysis.
Scikit-learn
Type: Library
Objective: Provides simple and efficient tools for data mining and machine learning tasks.
Use Case: Classification, regression, clustering, dimensionality reduction, and model evaluation.
SciPy
Type: Library
Objective: Provides a collection of mathematical algorithms and convenience functions built on NumPy.
Use Case: Scientific and technical computing, including optimization, integration, and signal processing.
Objectives of Frameworks vs. Libraries