diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d2bded9..75279e3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -51,6 +51,17 @@ jobs: python3 generator.py ../changed_notebooks/ echo "Generated services:" ls -la services/ || echo "No services directory" + + - name: Install Test Dependencies + run: | + pip install pytest pytest-cov httpx fastapi starlette + + - name: Run Tests on Generated Service + run: | + cd ../ + export PYTHONPATH=$PYTHONPATH:$(pwd):$(pwd)/src + python -m pytest --cov=src --cov-report=term-missing -s + cd src/ - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v2 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..6ecd2f6 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,40 @@ +name: Run Tests + +on: + push: + branches: + - N2R-31 + workflow_dispatch: + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Run generator (create Dockerfile, main.py and requirements.txt) + run: | + pip install nbformat + rm -rf src/services/ + cd src/ + python3 generator.py ../notebooks/ + echo "Generated services:" + ls -la services/ || echo "No services directory" + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pytest pytest-cov httpx nbformat fastapi papermill uvicorn pandas lxml + + - name: Run tests with coverage + run: | + cd ../ + export PYTHONPATH=$PYTHONPATH:$(pwd):$(pwd)/src + python -m pytest --cov=src --cov-report=term-missing -s \ No newline at end of file diff --git a/.gitignore b/.gitignore index 82fe010..62f5b62 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,11 @@ .DS_Store +.coverage .terraform/ *.tfstate *.tfstate.backup *.auto.tfvars -/src/services \ No newline at end of file +/src/services + +__pycache__ \ No newline at end of file diff --git a/notebooks/dataframe/dataframe_output.ipynb b/notebooks/dataframe/dataframe_output.ipynb new file mode 100644 index 0000000..9b2b249 --- /dev/null +++ b/notebooks/dataframe/dataframe_output.ipynb @@ -0,0 +1,112 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "df = pd.DataFrame({\n", + " \"user\": [\"A\", \"B\", \"C\"],\n", + " \"score\": [10, 15, 8]\n", + "})" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
userscore
0A10
1B15
2C8
\n", + "
" + ], + "text/plain": [ + " user score\n", + "0 A 10\n", + "1 B 15\n", + "2 C 8" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/notebooks/error/error_output.ipynb b/notebooks/error/error_output.ipynb new file mode 100644 index 0000000..9490a7f --- /dev/null +++ b/notebooks/error/error_output.ipynb @@ -0,0 +1,46 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "division by zero", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mZeroDivisionError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[32;43m1\u001b[39;49m\u001b[43m \u001b[49m\u001b[43m/\u001b[49m\u001b[43m \u001b[49m\u001b[32;43m0\u001b[39;49m\n", + "\u001b[31mZeroDivisionError\u001b[39m: division by zero" + ] + } + ], + "source": [ + "1 / 0" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/linearRegression/docs.md b/notebooks/linearRegression/docs.md new file mode 100644 index 0000000..6f1a76d --- /dev/null +++ b/notebooks/linearRegression/docs.md @@ -0,0 +1,2 @@ +# Description +This example notebook runs linear regression on Kaggle advertising dataset. Contains longer running process and combination of outputs (text,images,dataframe) \ No newline at end of file diff --git a/notebooks/linearRegression/sales-prediction-simple-linear-regression.ipynb b/notebooks/linearRegression/sales-prediction-simple-linear-regression.ipynb new file mode 100644 index 0000000..e826136 --- /dev/null +++ b/notebooks/linearRegression/sales-prediction-simple-linear-regression.ipynb @@ -0,0 +1,1185 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "_uuid": "d98e260fd46b2018f8235d76d6b46d6e149ded86" + }, + "source": [ + "# Sales Prediction\n", + "## ( Simple Linear Regression)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "eb75d57ef5c0c094eb265c3fb4ef77b8f8c73dce" + }, + "source": [ + "### Problem Statement\n", + "\n", + "Build a model which predicts sales based on the money spent on different platforms for marketing.\n", + "\n", + "### Data\n", + "Use the advertising dataset given in ISLR and analyse the relationship between 'TV advertising' and 'sales' using a simple linear regression model. \n", + "\n", + "In this notebook, we'll build a linear regression model to predict `Sales` using an appropriate predictor variable." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "fab1024005bc13658e3ef2f8a2e46971881bc3ef" + }, + "source": [ + "## Reading and Understanding the Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "_uuid": "d68008018678c65564ddda5994cb05129f3ca72b" + }, + "outputs": [], + "source": [ + "# Supress Warnings\n", + "\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "# Import the numpy and pandas package\n", + "\n", + "import kagglehub\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "# Data Visualisation\n", + "import matplotlib.pyplot as plt \n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "_uuid": "1365d38deb407ea9c0f4e93830c5f9d4d65ebd9d" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TVRadioNewspaperSales
0230.137.869.222.1
144.539.345.110.4
217.245.969.312.0
3151.541.358.516.5
4180.810.858.417.9
\n", + "
" + ], + "text/plain": [ + " TV Radio Newspaper Sales\n", + "0 230.1 37.8 69.2 22.1\n", + "1 44.5 39.3 45.1 10.4\n", + "2 17.2 45.9 69.3 12.0\n", + "3 151.5 41.3 58.5 16.5\n", + "4 180.8 10.8 58.4 17.9" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "path = kagglehub.dataset_download(\"bumba5341/advertisingcsv\")\n", + "\n", + "advertising = pd.DataFrame(pd.read_csv(f\"{path}/Advertising.csv\"))\n", + "advertising.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "39753c6695c9c1fb90e9d0bbbba0bf8c09b600c2" + }, + "source": [ + "## Data Inspection" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "_uuid": "4f36948806d235d179b1a5c6b6c990a41afc6e4a", + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(200, 4)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "advertising.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "_uuid": "9578033b7d507aa4d901b48de36931066cc00241" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 200 entries, 0 to 199\n", + "Data columns (total 4 columns):\n", + "TV 200 non-null float64\n", + "Radio 200 non-null float64\n", + "Newspaper 200 non-null float64\n", + "Sales 200 non-null float64\n", + "dtypes: float64(4)\n", + "memory usage: 6.3 KB\n" + ] + } + ], + "source": [ + "advertising.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "_uuid": "b817b9601c376627448453b03d79bf8f9dd02eac" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TVRadioNewspaperSales
count200.000000200.000000200.000000200.000000
mean147.04250023.26400030.55400015.130500
std85.85423614.84680921.7786215.283892
min0.7000000.0000000.3000001.600000
25%74.3750009.97500012.75000011.000000
50%149.75000022.90000025.75000016.000000
75%218.82500036.52500045.10000019.050000
max296.40000049.600000114.00000027.000000
\n", + "
" + ], + "text/plain": [ + " TV Radio Newspaper Sales\n", + "count 200.000000 200.000000 200.000000 200.000000\n", + "mean 147.042500 23.264000 30.554000 15.130500\n", + "std 85.854236 14.846809 21.778621 5.283892\n", + "min 0.700000 0.000000 0.300000 1.600000\n", + "25% 74.375000 9.975000 12.750000 11.000000\n", + "50% 149.750000 22.900000 25.750000 16.000000\n", + "75% 218.825000 36.525000 45.100000 19.050000\n", + "max 296.400000 49.600000 114.000000 27.000000" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "advertising.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "fab7463f8ed5eb55f1357db16c69204351295edf" + }, + "source": [ + "## Data Cleaning" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "_uuid": "cf9580e58b78c0558d96f54272701b6d2d32a018" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "TV 0.0\n", + "Radio 0.0\n", + "Newspaper 0.0\n", + "Sales 0.0\n", + "dtype: float64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Checking Null values\n", + "advertising.isnull().sum()*100/advertising.shape[0]\n", + "# There are no NULL values in the dataset, hence it is clean." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "_uuid": "c427a8e8a84e617eccdeda7df5eccd25f740f25d" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Outlier Analysis\n", + "fig, axs = plt.subplots(3, figsize = (5,5))\n", + "plt1 = sns.boxplot(advertising['TV'], ax = axs[0])\n", + "plt2 = sns.boxplot(advertising['Newspaper'], ax = axs[1])\n", + "plt3 = sns.boxplot(advertising['Radio'], ax = axs[2])\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "_uuid": "3f18bb0cc6014b12746f45ea30a7b769a59ad1a4" + }, + "outputs": [], + "source": [ + "# There are no considerable outliers present in the data." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "81898c048d2b70a32615965535f9b7a6fdc626ae" + }, + "source": [ + "## Exploratory Data Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "d2ac5e56f61c3c9517621ad569068bbdcd65b8dd" + }, + "source": [ + "### Univariate Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "7ebb232846d9ae796b258eb26642ef73ca2dcacc" + }, + "source": [ + "#### Sales (Target Variable)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "_uuid": "d435bd318677f7a4234bf02efdf54aa19e8b2c16" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.boxplot(advertising['Sales'])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "_uuid": "2d6f716ebe182a58f9941c059256a09cc7f03703" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Let's see how Sales are related with other variables using scatter plot.\n", + "sns.pairplot(advertising, x_vars=['TV', 'Newspaper', 'Radio'], y_vars='Sales', height=4, aspect=1, kind='scatter')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "_uuid": "ea27ea99e47d578866a706f437d74a8fe1ad2264" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Let's see the correlation between different variables.\n", + "sns.heatmap(advertising.corr(), cmap=\"YlGnBu\", annot = True)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "de3f5b90d0b6165958efcf1a31b80141867987fe" + }, + "source": [ + "As is visible from the pairplot and the heatmap, the variable `TV` seems to be most correlated with `Sales`. So let's go ahead and perform simple linear regression using `TV` as our feature variable." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "1c10d5d48b611a9c66e1c99e66c44f6b36191a92" + }, + "source": [ + "## Model Building" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "6d593021918853ea7402f5efa6348425481dd538" + }, + "source": [ + "### Performing Simple Linear Regression" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "596550475e9050e4413572b184f66ddf74764878" + }, + "source": [ + "Equation of linear regression
\n", + "$y = c + m_1x_1 + m_2x_2 + ... + m_nx_n$\n", + "\n", + "- $y$ is the response\n", + "- $c$ is the intercept\n", + "- $m_1$ is the coefficient for the first feature\n", + "- $m_n$ is the coefficient for the nth feature
\n", + "\n", + "In our case:\n", + "\n", + "$y = c + m_1 \\times TV$\n", + "\n", + "The $m$ values are called the model **coefficients** or **model parameters**.\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "fe62b625cb69b757c37930b85ffc1b4b4805f4ca" + }, + "source": [ + "### Generic Steps in model building using `statsmodels`\n", + "\n", + "We first assign the feature variable, `TV`, in this case, to the variable `X` and the response variable, `Sales`, to the variable `y`." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "_uuid": "ae7285c79fd678fad0ee4fb18f8923daf024838b" + }, + "outputs": [], + "source": [ + "X = advertising['TV']\n", + "y = advertising['Sales']" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "b3d9b88574b3b83dd47e7e0425c8e627443c4ec3" + }, + "source": [ + "#### Train-Test Split\n", + "\n", + "You now need to split our variable into training and testing sets. You'll perform this by importing `train_test_split` from the `sklearn.model_selection` library. It is usually a good practice to keep 70% of the data in your train dataset and the rest 30% in your test dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "_uuid": "997311202075aaa98631ef95c1a0d91cdbefa2af" + }, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.7, test_size = 0.3, random_state = 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "_uuid": "07e568ebfdb6c838568e2df3dfd5fd0acadc7184" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "74 213.4\n", + "3 151.5\n", + "185 205.0\n", + "26 142.9\n", + "90 134.3\n", + "Name: TV, dtype: float64" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Let's now take a look at the train dataset\n", + "\n", + "X_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "_uuid": "873156cc1e983a63bfea8b5947bfb91e6992a7f5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "74 17.0\n", + "3 16.5\n", + "185 22.6\n", + "26 15.0\n", + "90 14.0\n", + "Name: Sales, dtype: float64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "a53ec07eb3235dca5ca72cc9c2f6ca0634a33a09" + }, + "source": [ + "#### Building a Linear Model\n", + "\n", + "You first need to import the `statsmodel.api` library using which you'll perform the linear regression." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "_uuid": "226e3704ff6b78a47273fd816009f9c30b8f0a81" + }, + "outputs": [], + "source": [ + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "7aace406b025306a7ba85016b8bd48ae662d1ec1" + }, + "source": [ + "By default, the `statsmodels` library fits a line on the dataset which passes through the origin. But in order to have an intercept, you need to manually use the `add_constant` attribute of `statsmodels`. And once you've added the constant to your `X_train` dataset, you can go ahead and fit a regression line using the `OLS` (Ordinary Least Squares) attribute of `statsmodels` as shown below" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "_uuid": "b80a766082e6c9c40c3f09499fec4cfc51f62763" + }, + "outputs": [], + "source": [ + "# Add a constant to get an intercept\n", + "X_train_sm = sm.add_constant(X_train)\n", + "\n", + "# Fit the resgression line using 'OLS'\n", + "lr = sm.OLS(y_train, X_train_sm).fit()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "_uuid": "fd4287b550d2f05555ae3e18d6f497912424f8cf" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "const 6.948683\n", + "TV 0.054546\n", + "dtype: float64" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Print the parameters, i.e. the intercept and the slope of the regression line fitted\n", + "lr.params" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "_uuid": "f841995801587a25a9b4c4b77ef396e538e9ad1f" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: Sales R-squared: 0.816\n", + "Model: OLS Adj. R-squared: 0.814\n", + "Method: Least Squares F-statistic: 611.2\n", + "Date: Thu, 07 Mar 2019 Prob (F-statistic): 1.52e-52\n", + "Time: 06:21:53 Log-Likelihood: -321.12\n", + "No. Observations: 140 AIC: 646.2\n", + "Df Residuals: 138 BIC: 652.1\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "const 6.9487 0.385 18.068 0.000 6.188 7.709\n", + "TV 0.0545 0.002 24.722 0.000 0.050 0.059\n", + "==============================================================================\n", + "Omnibus: 0.027 Durbin-Watson: 2.196\n", + "Prob(Omnibus): 0.987 Jarque-Bera (JB): 0.150\n", + "Skew: -0.006 Prob(JB): 0.928\n", + "Kurtosis: 2.840 Cond. No. 328.\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" + ] + } + ], + "source": [ + "# Performing a summary operation lists out all the different parameters of the regression line fitted\n", + "print(lr.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "b4184f39c773af135644179ad6f86e9e75c3d7d5" + }, + "source": [ + "#### Looking at some key statistics from the summary" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "2eb6f1c6f44cf4b216aaf184ef64be7358c12bb7" + }, + "source": [ + "The values we are concerned with are - \n", + "1. The coefficients and significance (p-values)\n", + "2. R-squared\n", + "3. F statistic and its significance" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "5c4fab83c0633fef6b7d7c164056f58e7bf6fedf" + }, + "source": [ + "##### 1. The coefficient for TV is 0.054, with a very low p value\n", + "The coefficient is statistically significant. So the association is not purely by chance. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "78f7b40f9e278a5261b382665b3e953524aeced3" + }, + "source": [ + "##### 2. R - squared is 0.816\n", + "Meaning that 81.6% of the variance in `Sales` is explained by `TV`\n", + "\n", + "This is a decent R-squared value." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "6f0cc01ea96a792ef1c9e369a67f5cf4949cda42" + }, + "source": [ + "###### 3. F statistic has a very low p value (practically low)\n", + "Meaning that the model fit is statistically significant, and the explained variance isn't purely by chance." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "355241eda62e0f3fb9b843256640d56ab6bf7fd1" + }, + "source": [ + "---\n", + "The fit is significant. Let's visualize how well the model fit the data.\n", + "\n", + "From the parameters that we get, our linear regression equation becomes:\n", + "\n", + "$ Sales = 6.948 + 0.054 \\times TV $" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "_uuid": "6e0dc97a88b9fc1d4e975c2fe511e59bd0cd2b8a", + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_train, y_train)\n", + "plt.plot(X_train, 6.948 + 0.054*X_train, 'r')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "b0127acdc8615bb40259e313f1d91e263091ce5c" + }, + "source": [ + "## Model Evaluation" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "422b3bc53bfd16e1583f66456a3997a53e60d4d7" + }, + "source": [ + "### Residual analysis \n", + "To validate assumptions of the model, and hence the reliability for inference" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "90fd70d36d73f8756d85b91132b7783fca68de51" + }, + "source": [ + "#### Distribution of the error terms\n", + "We need to check if the error terms are also normally distributed (which is infact, one of the major assumptions of linear regression), let us plot the histogram of the error terms and see what it looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "_uuid": "4dd8f2238cf72ced822605fc50ceedc3451ef5af" + }, + "outputs": [], + "source": [ + "y_train_pred = lr.predict(X_train_sm)\n", + "res = (y_train - y_train_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "_uuid": "14e47df1dd16feb210ba45abe9bd16e583dacd88", + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "sns.distplot(res, bins = 15)\n", + "fig.suptitle('Error Terms', fontsize = 15) # Plot heading \n", + "plt.xlabel('y_train - y_train_pred', fontsize = 15) # X-label\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "e4ee1c8edba5205ff0fb2d282f3cb04d3578d40e" + }, + "source": [ + "The residuals are following the normally distributed with a mean 0. All good!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "21220e799147c77afe520b1eaf29664fca414fb5" + }, + "source": [ + "#### Looking for patterns in the residuals" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "_uuid": "9273cbc44826c16c959a63707862371c9ff4301d" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_train,res)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "6b9b369334a8ce91ef15c05de37b463b2df53fd1" + }, + "source": [ + "We are confident that the model fit isn't by chance, and has decent predictive power. The normality of residual terms allows some inference on the coefficients.\n", + "\n", + "Although, the variance of residuals increasing with X indicates that there is significant variation that this model is unable to explain." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "a9f1c4e7245673932e604b4aa3a5cac748809d3d" + }, + "source": [ + "As you can see, the regression line is a pretty good fit to the data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "70d9188db6c5b404c66c0a1bc2b9002a86121318" + }, + "source": [ + "### Predictions on the Test Set" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "a88d571a4e726470bb1af84b6197e7065bcd23d4" + }, + "source": [ + "Now that you have fitted a regression line on your train dataset, it's time to make some predictions on the test data. For this, you first need to add a constant to the `X_test` data like you did for `X_train` and then you can simply go on and predict the y values corresponding to `X_test` using the `predict` attribute of the fitted regression line." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "_uuid": "f0bed7ce820292dceee1c3b00b9ecbcb9fdbbd37" + }, + "outputs": [], + "source": [ + "# Add a constant to X_test\n", + "X_test_sm = sm.add_constant(X_test)\n", + "\n", + "# Predict the y values corresponding to X_test_sm\n", + "y_pred = lr.predict(X_test_sm)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "_uuid": "0b64c5e3173c685b0715a93f0a77c759e90b2dff" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "126 7.374140\n", + "104 19.941482\n", + "99 14.323269\n", + "92 18.823294\n", + "111 20.132392\n", + "dtype: float64" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_pred.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "_uuid": "f67e3bf11f1ab0670339d4496a4b42df11d1b0cf" + }, + "outputs": [], + "source": [ + "from sklearn.metrics import mean_squared_error\n", + "from sklearn.metrics import r2_score" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "3d4c698357ac5a9b1dc5e82862c081a2843e8c2b" + }, + "source": [ + "##### Looking at the RMSE" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "_uuid": "58863bc73dfa751e6bade66b3b71f80be51d9ca6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2.019296008966232" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Returns the mean squared error; we'll take a square root\n", + "np.sqrt(mean_squared_error(y_test, y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "ab9e84c7ccf6d83fd215ba8771cb0243a59bc88e" + }, + "source": [ + "###### Checking the R-squared on the test set" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "_uuid": "6ce19fc28741a4d2b558a377f2fd39c81abdb72e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.792103160124566" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "r_squared = r2_score(y_test, y_pred)\n", + "r_squared" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "743c7b8425082fbb0a6811f2405fb7a4c1fa5a1f" + }, + "source": [ + "##### Visualizing the fit on the test set" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "_uuid": "eb08ac34d4e148e3221adfe126072f108adbfa24", + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_test, 6.948 + 0.054 * X_test, 'r')\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/notebooks/multipleplots/multiple_plots.ipynb b/notebooks/multipleplots/multiple_plots.ipynb new file mode 100644 index 0000000..625e213 --- /dev/null +++ b/notebooks/multipleplots/multiple_plots.ipynb @@ -0,0 +1,79 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "x = np.linspace(0,10,100)\n", + "plt.plot(x, np.sin(x))\n", + "plt.title(\"Sine Wave\")\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGdCAYAAABO2DpVAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAFKVJREFUeJzt3WGQVQXZwPFnYcerIaxCoLvDmhIGKWEGyjBkSYFIwFTjMA6jE1rTB2ejjJqp7UO0U7k0TY01Mmi0Qo0h6hTUUMIEDTBNkoBDQilJhWwBUim7wFvXZPf9Utu7r4Le5blcLvv7zZwP5+w5e54P1/HPOWfvqenu7u4OAIAEAyo9AABw7hAWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAECa2jN9wq6urjhw4EAMHjw4ampqzvTpAYA+6O7ujqNHj0ZDQ0MMGHDy6xJnPCwOHDgQjY2NZ/q0AECC9vb2GDly5El/fsbDYvDgwRH/HmzIkCFn+vQAQB90dnZGY2Njz//HT+aMh8V/bn8MGTJEWABAlXm9xxg8vAkApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAEAaYQEApBEWAECaksLi8ssvj5qamlctTU1N5ZsQAKgaJb0rZNu2bXHixIme9d27d8f06dNj7ty55ZgNAKgyJYXF8OHDe60vXrw43vrWt8Z73/ve7LkAgCrU57ebvvzyy/HQQw/FwoULT/mms2KxGMVisWe9s7Ozr6cEAM5yfQ6LNWvWxJEjR+KOO+445X6tra3R0tLS19NAVbn88z+t9AhU2L7Fsyo9AlRUn/8qpK2tLWbOnBkNDQ2n3K+5uTk6Ojp6lvb29r6eEgA4y/XpisXzzz8fGzZsiB/96Eevu2+hUIhCodCX0wAAVaZPVyyWL18eI0aMiFmzXPIDAP6r5LDo6uqK5cuXx/z586O2ts+PaAAA56CSw2LDhg2xf//++OhHP1qeiQCAqlXyJYebbropuru7yzMNAFDVvCsEAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEgjLACANMICAEhTclj85S9/idtvvz2GDRsWF1xwQbzjHe+I7du3l2c6AKCq1Jay80svvRRTpkyJqVOnxuOPPx7Dhw+P5557Li6++OLyTQgAVI2SwuJrX/taNDY2xvLly3u2XXHFFeWYCwCoQiXdCvnJT34SEydOjLlz58aIESPi2muvjWXLlpVvOgCgqpQUFn/84x9j6dKlceWVV8b69evjrrvuik9+8pPxve9976THFIvF6Ozs7LUAAOemkm6FdHV1xcSJE+Oee+6JiIhrr702du/eHffff3/Mnz//NY9pbW2NlpaWnGkBgLNaSVcs6uvr46qrruq17e1vf3vs37//pMc0NzdHR0dHz9Le3t73aQGAs1pJVyymTJkSe/bs6bXt97//fbzlLW856TGFQiEKhULfJwQAqkZJVyw+/elPx9atW+Oee+6JvXv3xsqVK+M73/lONDU1lW9CAKBqlBQW1113XaxevToefvjhGDduXHz5y1+Oe++9N2677bbyTQgAVI2SboVERMyePTtmz55dnmkAgKrmXSEAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkKSksvvSlL0VNTU2vZezYseWbDgCoKrWlHnD11VfHhg0b/vsLakv+FQDAOarkKqitrY1LL720PNMAAFWt5GcsnnvuuWhoaIhRo0bFbbfdFvv37z/l/sViMTo7O3stAMC5qaQrFpMmTYoVK1bEmDFj4uDBg9HS0hI33HBD7N69OwYPHvyax7S2tkZLS0vWvKd0+ed/ekbOw9lr3+JZlR4BoF8r6YrFzJkzY+7cuTF+/PiYMWNG/OxnP4sjR47Eo48+etJjmpubo6Ojo2dpb2/PmBsAOAud1pOXF110UbztbW+LvXv3nnSfQqEQhULhdE4DAFSJ0/oei2PHjsUf/vCHqK+vz5sIAKhaJYXFZz/72di8eXPs27cvfvWrX8WHP/zhGDhwYMybN698EwIAVaOkWyF//vOfY968efH3v/89hg8fHu9+97tj69atMXz48PJNCABUjZLCYtWqVeWbBACoet4VAgCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkERYAQBphAQCkOa2wWLx4cdTU1MTdd9+dNxEAULX6HBbbtm2LBx54IMaPH587EQBQtfoUFseOHYvbbrstli1bFhdffHH+VABAVepTWDQ1NcWsWbNi2rRpr7tvsViMzs7OXgsAcG6qLfWAVatWxVNPPRXbtm17Q/u3trZGS0tLX2YDAKpMSVcs2tvb41Of+lT84Ac/iPPPP/8NHdPc3BwdHR09S3t7e19nBQDOciVdsdixY0ccPnw43vWud/VsO3HiRGzZsiXuu+++KBaLMXDgwF7HFAqFKBQKeRMDAGetksLi/e9/f+zatavXtjvvvDPGjh0bn/vc514VFQBA/1JSWAwePDjGjRvXa9ugQYNi2LBhr9oOAPQ/vnkTAEhT8l+F/H+bNm3KmQQAqHquWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaYQFAJBGWAAAaUoKi6VLl8b48eNjyJAhMWTIkJg8eXI8/vjj5ZsOAKgqJYXFyJEjY/HixbFjx47Yvn17vO9974sPfvCD8dvf/rZ8EwIAVaO2lJ3nzJnTa/2rX/1qLF26NLZu3RpXX3119mwAQJUpKSz+rxMnTsRjjz0Wx48fj8mTJ590v2KxGMVisWe9s7Ozr6cEAM5yJYfFrl27YvLkyfHPf/4zLrzwwli9enVcddVVJ92/tbU1WlpaTndOAN6Ayz//00qPQIXtWzyroucv+a9CxowZEzt37oxf//rXcdddd8X8+fPjd7/73Un3b25ujo6Ojp6lvb39dGcGAM5SJV+xOO+882L06NERETFhwoTYtm1bfOtb34oHHnjgNfcvFApRKBROf1IA4Kx32t9j0dXV1esZCgCg/yrpikVzc3PMnDkzLrvssjh69GisXLkyNm3aFOvXry/fhABA1SgpLA4fPhwf+chH4uDBg1FXVxfjx4+P9evXx/Tp08s3IQBQNUoKi7a2tvJNAgBUPe8KAQDSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAII2wAADSCAsAIE1JYdHa2hrXXXddDB48OEaMGBEf+tCHYs+ePeWbDgCoKiWFxebNm6OpqSm2bt0aP//5z+Nf//pX3HTTTXH8+PHyTQgAVI3aUnZet25dr/UVK1bEiBEjYseOHfGe97wnezYAoMqUFBb/X0dHR0REDB069KT7FIvFKBaLPeudnZ2nc0oA4CzW54c3u7q64u67744pU6bEuHHjTrpfa2tr1NXV9SyNjY19PSUAcJbrc1g0NTXF7t27Y9WqVafcr7m5OTo6OnqW9vb2vp4SADjL9elWyCc+8YlYu3ZtbNmyJUaOHHnKfQuFQhQKhb7OBwBUkZLCoru7OxYsWBCrV6+OTZs2xRVXXFG+yQCAqlNSWDQ1NcXKlSvjxz/+cQwePDgOHToUERF1dXVxwQUXlGtGAKBKlPSMxdKlS6OjoyNuvPHGqK+v71keeeSR8k0IAFSNkm+FAACcjHeFAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABphAUAkEZYAABpSg6LLVu2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.bar([\"A\",\"B\",\"C\"], [5,7,3])\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.10" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/notebooks/seaborn/seaborn_rich_plots.ipynb b/notebooks/seaborn/seaborn_rich_plots.ipynb new file mode 100644 index 0000000..2561193 --- /dev/null +++ b/notebooks/seaborn/seaborn_rich_plots.ipynb @@ -0,0 +1,276 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Defaulting to user installation because normal site-packages is not writeable\n", + "Collecting seaborn\n", + " Downloading seaborn-0.13.2-py3-none-any.whl.metadata (5.4 kB)\n", + "Requirement already satisfied: numpy!=1.24.0,>=1.20 in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from seaborn) (2.4.2)\n", + "Collecting pandas>=1.2 (from seaborn)\n", + " Downloading pandas-3.0.1-cp313-cp313-win_amd64.whl.metadata (19 kB)\n", + "Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from seaborn) (3.10.8)\n", + "Requirement already satisfied: contourpy>=1.0.1 in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.3.3)\n", + "Requirement already satisfied: cycler>=0.10 in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (4.61.1)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.4.9)\n", + "Requirement already satisfied: packaging>=20.0 in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (26.0)\n", + "Requirement already satisfied: pillow>=8 in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (12.1.1)\n", + "Requirement already satisfied: pyparsing>=3 in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (3.3.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (2.9.0.post0)\n", + "Requirement already satisfied: tzdata in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from pandas>=1.2->seaborn) (2025.3)\n", + "Requirement already satisfied: six>=1.5 in c:\\users\\jiawe\\appdata\\roaming\\python\\python313\\site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.4->seaborn) (1.17.0)\n", + "Downloading seaborn-0.13.2-py3-none-any.whl (294 kB)\n", + "Downloading pandas-3.0.1-cp313-cp313-win_amd64.whl (9.7 MB)\n", + " ---------------------------------------- 0.0/9.7 MB ? eta -:--:--\n", + " -------- ------------------------------- 2.1/9.7 MB 10.3 MB/s eta 0:00:01\n", + " ----------------- ---------------------- 4.2/9.7 MB 10.5 MB/s eta 0:00:01\n", + " -------------------------- ------------- 6.6/9.7 MB 10.9 MB/s eta 0:00:01\n", + " ----------------------------------- ---- 8.7/9.7 MB 11.0 MB/s eta 0:00:01\n", + " ---------------------------------------- 9.7/9.7 MB 10.7 MB/s 0:00:00\n", + "Installing collected packages: pandas, seaborn\n", + "\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " ---------------------------------------- 0/2 [pandas]\n", + " -------------------- ------------------- 1/2 [seaborn]\n", + " -------------------- ------------------- 1/2 [seaborn]\n", + " -------------------- ------------------- 1/2 [seaborn]\n", + " -------------------- ------------------- 1/2 [seaborn]\n", + " -------------------- ------------------- 1/2 [seaborn]\n", + " ---------------------------------------- 2/2 [seaborn]\n", + "\n", + "Successfully installed pandas-3.0.1 seaborn-0.13.2\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n", + "[notice] A new release of pip is available: 25.2 -> 26.0.1\n", + "[notice] To update, run: python.exe -m pip install --upgrade pip\n" + ] + } + ], + "source": [ + "%pip install seaborn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import seaborn as sns\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "df = sns.load_dataset(\"tips\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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48cXVGoAoJQUFmS6d+8el1xySaN95557bj5nTP3+6dOnx9y5c6N37955y8qsWbPyEDNu3LiCSg0AlJJCB/v+NosXL4527drlLTLZ3UiTJk2K+++/v+hiAQAloqSCzPPPP9/odTYIeMmSJfkGAFDSQQZSVFVVVdi5+/btm8+tBNBWCTLQRIcP7IuIspg6dWphddilS9fYvLlKmAHaLEEGmqj27YMRUReXfuHW6De0otXrsWbXG7HukYVRXV0tyABtliADZ6jb+eXRu3y4egRoi2stAQA0lSADACRLkAEAkiXIAADJEmQAgGQJMgBAsgQZACBZggwAkCxBBgBIliADACRLkAEAkiXIAADJEmQAgGQJMgBAsgQZACBZggwAkCxBBgBIliADACRLkAEAkiXIAADJEmQAgGQJMgBAsgQZACBZggwAkCxBBgBIliADACRLkAEAkiXIAADJEmQAgGQJMgBAsgQZACBZggwAkCxBBgBIliADACRLkAEAkiXIAADJEmQAgGQJMgBAsgQZACBZggwAkCxBBgBIliADACRLkAEAkiXIAADJEmQAgGQJMgBAsgQZACBZggwAkCxBBgBIliADACRLkAEAkiXIAADJEmQAgGQJMgBAsgQZACBZggwAkCxBBgBIliADACRLkAEAklVokHnggQdi1KhR0aNHj3wbP358/OQnP2k4fuTIkZgxY0b06dMnunXrFlOmTIk9e/YUWWQAoIQUGmQGDRoUd911V2zcuDE2bNgQEyZMiOuuuy5effXV/PicOXPiySefjJUrV8aaNWti586dMXny5CKLDACUkPZFnvzaa69t9Ppv//Zv81aatWvX5iHn4YcfjuXLl+cBJ7N06dIYMWJEfnzcuHEFlRoAKBWFBpmTHT9+PG95eeutt/IupqyVpra2NiZOnNjwnoqKiigvL4/KysrTBpmjR4/mW72amppWKT8UpaqqqtDK79u3b/6/S4A2GWQ2bdqUB5dsPEw2Duaxxx6LkSNHxssvvxwdO3aMXr16NXp///79Y/fu3af9vkWLFsXChQtboeRQrMMH9kVEWUydOrXQcnTp0jU2b64SZoC2GWSGDx+eh5YDBw7ED37wg5g2bVo+Hqap5s2bF3Pnzm3UIjN48OBmKi2Ujtq3D0ZEXVz6hVuj39CKQspQs+uNWPfIwqiurhZkgLYZZLJWl4985CP5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LR07diw2btwY8+bNa9jXrl27mDhxYlRWVp52OfVsq3fgwIH8saamplnLdujQofzx1/+zJd45ejiKULPrf/LHA29ujQ7ty5xf/bsGXAOuAddAq6rZvb3hb2Jz/52t/76637ayeF0Je/PNN7PS17344ouN9v/VX/1V3eWXX37KzyxYsCD/jE0duAZcA64B14BrIJKvgx07drxnVijpFpmmyFpvsjE19U6cOBG//vWvo0+fPlFW1vqtFme7LDEPHjw4duzYET169Ci6OG2Gelf3bY1rvu3VfV1dXRw8eDAuuOCC93xfSQeZvn37xjnnnBN79uxptD97PWDAgFN+plOnTvl2sl69erVoOYn84hZkWp96L466V+9tTY8Cfud79uyZ9mDfjh07xpgxY2L16tWNWliy1+PHjy+0bABA8Uq6RSaTdRNNmzYtLrvssrj88svjnnvuibfeeiu/iwkAaNtKPsjccMMN8atf/Spuv/322L17d1x66aWxatWq6N+/f9FF4/+68rI5ft7dnUfLUu/FUffqva3pVOK/82XZiN+iCwEA0BQlPUYGAOC9CDIAQLIEGQAgWYIMAJAsQYb35YUXXohrr702n2ExmyH58ccfb3Q8GzOe3Vk2cODA6NKlS74e1tatW9XuGVq0aFF87GMfi+7du8f5558f119/fWzZsqXRe44cORIzZszIZ6/u1q1bTJky5TcmkeSDeeCBB2LUqFENE4Bl81b95Cc/Ueet7K677sp/b26++WZ138LuuOOOvK5P3ioqKpKod0GG9yWbu2f06NGxZMmSUx7/1re+Fffdd1++Ovm6devi3HPPjUmTJuUXP023Zs2a/Mdj7dq18fTTT0dtbW1cffXV+b9HvTlz5sSTTz4ZK1euzN+/c+fOmDx5smo/A4MGDcr/iGaL1m7YsCEmTJgQ1113Xbz66qvqvJWsX78+vvvd7+aB8mSu95Zz8cUXx65duxq2//zP/0yj3ptzkUfahuyyeeyxxxpenzhxom7AgAF1f/d3f9ewb//+/XWdOnWq+/73v19QKc9Oe/fuzet/zZo1DfXcoUOHupUrVza8p6qqKn9PZWVlgSU9+5x33nl1//iP/6jOW8HBgwfrhg0bVvf000/X/f7v/37d7Nmz8/2u95azYMGCutGjR5/yWKnXuxYZztjrr7+eT1aYdSedvD7G2LFjo7KyUg03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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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32H0c9che/N+ZG3ci15Xj4c+0IRtn1Rdr3HM89ehNLMAK56squS25f2f0GPKGIx4+ApsfvcHVRRCCkZsevfoQfWBnzag/03noPRwHvJ2HUJst1boPW0Cts337mtAlpdXIO3Q0eDh8JEs7Ni1F+FhoSdsrM8/8fyLb+Hd2c9j3frNWLNmA26+aRqCgwMx57356v5333kRR45k4H/3PQGz2Yw//9zp8vjCwmL1b+35kyadidycPKSlH0a3bp3w/LOPqGtB/fhTVVXG5sZ0PPLL4Gn//v2IiXHtJp40aRI6duyIdevqn+0gIiIi7yJjlgKjwjDwP5MQHBuOnG0H8dUVT6Eit+qAOiQ5xuVkaWlGPr68/EkMf/ByXPLD4+oCuJveWexS1nzZ/e9j0B3nq0ISQTFhapmtH/1cU1DCW23dsRtX3XRXze2nXn5T/XvOhNF47L7/wFstWPAVYmOi8NADd6iL5G7a9CfOOPNyZGdXFZFIaZl0zGOVJFh85qkHER8fg4yMbHz40ad49LEXcKJItT0iT9E463YR+Zni4mKEh4ejqKgIYWHuL+pHRGx/RP76G/heV9+6qOs/MX3DI/BngUn+X0zDZjnc5GV/Szi/ycsOz/z0H64R0QnoeZo4cSLmzJmjghT5uzGff/758XxpIiIiIjoJOMGeJ/KT4El6eKoLRcjfRERERETHk41pe+QvwdO7775b87dU1ZMc2uqL48p1nhYuXKiKRowbN+54viwRERERnSTY80R+War8nHPOwQcffKD+LiwsVBfKffbZZ3Huuefitddea66XJSIiIiI/5jiGichngqf169dj+PCqAY6ffvop4uPjcfDgQbz//vt46aWXmutliYiIiMjPe56aOhH5TKny8vJyhIaGqr9/+OEHVUBCrlItPVASRBERERERHSv2KJFf9jy1a9dOjXFKT0/H4sWLMXbsWDU/OzubJcOJiIiI6B+xQ9PkichngqcHHngAd9xxB1q1aoWBAwdi8ODBNb1QvXv3bq6XJSIiIiI/5tA0fSLymbS9888/H8OGDUNGRgZ69uxZM/+0007Deeed11wvS0RERER+zMEeJfLHnieRkJCgeplkrFO1AQMGoFOnTs35skRERETkp5zHMB2rWbNmqaypgIAAlTm1evXqBpcdNWqUur5p3emMM874V9tHJ2nP0/EiZc1lkutEia5d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iOpi2h41mKqwbNkyddZN0npkknQ3mTdgwACYTCYkJibi7rvvVtfzaOwxdrsdV199NVq3bo3AwEB07NhRLfNvyGveeOON6octJiYG999/v8vZwbppe0QnO3ftc86cOS5pe3I7IiJCpbi2b98eAQEBGDduHNLT0z29+kTN6tNPP0X37t3Vb1R0dDRGjx6NsrIyl7S96pTvupP06Fb7/fffMXz4cPU8LVu2xM0336yeh4j8B4MncksOsAYPHoxp06aptB6ZDAYDTj/9dPTv3x+bNm3Ca6+9htmzZ+PRRx9t8DHy4+FwONCiRQssWLBAXVX+gQcewL333otPPvnkH7/77733nrrA4urVq9XrPvfcc3j77bf5aRI1oKH2WVd5eTkee+wxvP/++/jjjz9UYHXxxRfzfSW/JW3hkksuwVVXXYXt27ersYATJ06sl64n7aW67ci0YcMGFWiNGDFC3b93716MHz8ekyZNwubNmzF//nwVTMmJPiLyH0zbI7ekR0dSeoKCgmrSev73v/+pH49XXnlFnW3r1KkTjhw5grvuuksFRO4eI3Q6HR5++OGa29IDtWLFChU8XXjhhf/oE5D1eP7559V6SE/Wli1b1G05MCSiprXpHTt21FvOarWqNj5w4MCaExWdO3dWJyqk15nI30ggJNkMEjClpqaqedILVZf8llW3ncrKStUjJSckHnroITVv5syZuOyyy2oKGknv7UsvvYSRI0eqk43Sk0tEvo89T9RkckZOfigkYKk2dOhQlJaW4tChQ40+dtasWejbt68aixQSEoI333wTaWlp//jdHzRokMt6yHrt3r1bpQgS0T8nPbrSu1xNTpJIKp+0fyJ/1LNnT5x22mkqYLrgggvw1ltvoaCgoNHHSC9VSUkJ5s6dC6226lBKMjIk9VV+46onSXuV7Iv9+/efoK0houbG4Ima3bx583DHHXeocU8//PCDKhE+depUWCwWvvtERORR0qP0448/4rvvvkOXLl3w8ssvq4yGhgIeSVVfvHgxvvrqK4SGhtbMlxOJ1113nfqNq54koJITe23btj2BW0REzYlpe9QgSfGp3ZMjqTufffaZygOv7vWRMRHy4yFjmtw9pnoZKYl8ww031MyT3PB/Y9WqVS63V65cqVIk5EeQiJrWpt2R9KW1a9fWpOjt3LlTjXuS9k/kr+Q3TTIpZJI0dEnf++KLL+otJ7+BjzzyiAq06gZEffr0UeN627VrdwLXnIhONPY8UYOkYp0EKVJhKDc3VwU/UnXrpptuUmMlvvzySzz44IO4/fbba9IW6j5G0hUkqJGDMTlTt2vXLlUZT67D9G9Iyp+8rhzYffzxx+pM4S233MJPk6gR7tpnXVIYRtq4LLdu3TpVbUzSZDneifyV7OuPP/64+p2S35bPP/8cOTk59U4YbN26FZMnT1bjfLt27YrMzEw15efnq/tl/vLly1WBCOl1kh4n+Z1kwQgi/8LgiRokqXbSkyNpDDJWSQaSf/vtt2rguOSIT58+XaXi3XfffQ0+Rn6IJI1BBuJedNFFahB6Xl6eSy/UPyE/YBUVFeqAbsaMGSpwuvbaa/lpEjXCXfusSwpKyEHgpZdeqs7Cy7gNqRpG5K/CwsLw66+/qmqyHTp0UL9pzz77LCZMmOCynARXUo1S0vbkUh3Vk/y+iR49eqjLAchJQilX3rt3b9WLlZSU5KEtI6LmoHHy0tlERPTXdZ6kUlj1dZ+IiIjIFXueiIiIiIiImoDBE3kVSSOqXea17vRvypsTEREREf0bTNsjryKVvmQwe2MD3uU6NEREREREJxqDJyIiIiIioiZg2h4REREREVETMHgiIiIiIiJqAgZPRERERERETcDgiYiIiIiIqAkYPBERERERETUBgyciIiIiIqImYPBERERERETUBAyeiIiIiIiI8Pf+H25lwy1z2i5UAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.histplot(df[\"total_bill\"])\n", + "sns.pairplot(df, hue=\"sex\")\n", + "numeric_cols = df.select_dtypes(include='number')\n", + "sns.heatmap(numeric_cols.corr(), annot=True)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/src/generated_api_template.py b/src/generated_api_template.py index 9d66188..16221e1 100644 --- a/src/generated_api_template.py +++ b/src/generated_api_template.py @@ -8,26 +8,25 @@ import asyncio from pydantic import create_model from helper import * +import logging +import sys -API_PREFIX = os.environ.get("API_PREFIX", "") -app = FastAPI(docs_url=f"{API_PREFIX}/docs") +#Setup logging to console +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) +console_handler = logging.StreamHandler(sys.stdout) +logger.addHandler(console_handler) # Getting the notebook in the directory -print("Getting notebook...") +logger.debug("Getting notebook...") notebooks = [f for f in os.listdir(".") if f.endswith(".ipynb")] - if len(notebooks) == 0: raise FileNotFoundError("No notebook found in current directory") elif len(notebooks) > 1: raise ValueError("More than one notebook found in current directory") -print(f"Got notebook: {notebooks}") - notebook_path = os.path.abspath(notebooks[0]) -print(f"Notebook path: {notebook_path}") - -parameterHandler = NotebookParameters(notebook_path) - +logger.info(f"Retrieved notebook: {notebooks} at path: {notebook_path}") # Remove leading slash route_path = notebooks[0].lstrip("/") @@ -35,17 +34,16 @@ # Lowercase and replace spaces with slash # ex. 1 New Notebook -> 1/new/notebook route_path = route_path.lower().replace(" ", "/") - route_path = "/run/" + route_path +logger.info(f"Route path set as: {route_path}") -print(f"Route path: {route_path}") - - +parameterHandler = NotebookParameters(notebook_path) PostModel = create_model("post_model",**parameterHandler.dynamic_model) - - def parse_output(output): + """ + Handle Notebook output depending on type + """ match output.get("output_type"): case "stream": return handle_streams(output) @@ -57,7 +55,7 @@ def parse_output(output): return handle_errors(output) def execute_notebook(notebook, params=None): - print(f"Notebook: {notebook}") + logger.info(f"Executing notebook: {notebook}") results = [] try: @@ -96,6 +94,9 @@ def execute_notebook(notebook, params=None): ############## # API Routes # ############## +API_PREFIX = os.environ.get("API_PREFIX", "") +app = FastAPI(docs_url=f"{API_PREFIX}/docs",openapi_url=f"{API_PREFIX}/openapi.json") + @app.get(f"{API_PREFIX}/") async def root(): return RedirectResponse(url=f"{API_PREFIX}{route_path}") diff --git a/src/generator.py b/src/generator.py index 75962de..8b7f040 100644 --- a/src/generator.py +++ b/src/generator.py @@ -4,10 +4,20 @@ import sys import pathlib import shutil -import sys +import logging + STDLIB_MODULES = sys.stdlib_module_names +#Setup logging to console +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) +console_handler = logging.StreamHandler(sys.stdout) +logger.addHandler(console_handler) + def normalize_name(file_name: str) -> str: + """ + Normalizes file names into lower case and replaces spaces, special characters + """ file_name = file_name.lower() file_name = file_name.replace(" ", "-") file_name = re.sub(r"[^a-z0-9\-]", "", file_name) @@ -17,6 +27,9 @@ def normalize_name(file_name: str) -> str: def extract_imports(notebook_path): + """ + Extract Notebook libraries and depdencies + """ nb = nbformat.read(notebook_path, as_version=4) imports = set() for cell in nb.cells: @@ -33,57 +46,44 @@ def extract_imports(notebook_path): imports.add(top_level) return sorted(imports) -if __name__ == "__main__": +def main(base_dir = None): GENERATED_DIR = "services" - BASE_DIR = sys.argv[1] if len(sys.argv) > 1 else os.getcwd() + BASE_DIR = (sys.argv[1] if len(sys.argv) > 1 else os.getcwd()) if base_dir is None else base_dir API_TEMPLATE_PATH = f"{pathlib.Path(__file__).resolve().parent}/generated_api_template.py" DOCKER_TEMPLATE_PATH = f"{pathlib.Path(__file__).resolve().parent}/generated_dockerfile" API_RESPONSE_TYPE_PATH = f"{pathlib.Path(__file__).resolve().parent}/generated_helper.py" - - main_py = "" - with open(API_TEMPLATE_PATH, "r", encoding="utf-8") as f: - main_py = f.read() - - dockerfile = "" - with open(DOCKER_TEMPLATE_PATH, "r", encoding="utf-8") as f: - dockerfile = f.read() - + EXCLUDED_DIRS = {"venv", ".venv", ".git", "__pycache__", ".ipynb_checkpoints","services", "devops"} + if not os.path.exists(GENERATED_DIR): os.makedirs(GENERATED_DIR) - EXCLUDED_DIRS = {"venv", ".venv", ".git", "__pycache__", ".ipynb_checkpoints","services", "devops"} - detectedNotebooks = [] for root, dirs, files in os.walk(BASE_DIR): dirs[:] = [d for d in dirs if d not in EXCLUDED_DIRS] for file in files: if file.endswith(".ipynb"): detectedNotebooks.append((root, file)) + logger.info(f"Notebooks detected:{detectedNotebooks}\n") for root, file in detectedNotebooks: - # Remove the excluded directories name = normalize_name(os.path.splitext(file)[0]) full_path = os.path.join(root, file) - print(f"FULLPATH: {full_path}") + logger.info(f"Full path: {full_path}") # ex. services/notebook1-service service_folder = os.path.join(GENERATED_DIR, f"{name}-service") - - print(service_folder) + logger.info(f"service folder name: {service_folder}") # Skip if already generated if os.path.exists(service_folder): - print("AlREADY EXISTS\n") + print(f"{service_folder} already exists\n") continue os.makedirs(service_folder) - # Copy notebook - print(f"COPYING {full_path} to {service_folder}") - shutil.copy(full_path, service_folder) + logger.info(f"Copying {full_path} to {service_folder}") - # TODO: Install the dependencies from the notebook - - # Copy fastapi and docker + #Copy files to generated directory + shutil.copy(full_path, service_folder) shutil.copy(API_TEMPLATE_PATH,f"{service_folder}/main.py") shutil.copy(DOCKER_TEMPLATE_PATH,f"{service_folder}/dockerfile") shutil.copy(API_RESPONSE_TYPE_PATH,f"{service_folder}/helper.py") @@ -102,4 +102,7 @@ def extract_imports(notebook_path): with open(os.path.join(service_folder, "requirements.txt"), "w") as f: f.write(requirements.strip()) - print(f"Generated service for notebook: {file}\n") + logger.info(f"Generated service for notebook: {file}\n") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/src/generator/__init__.py b/src/generator/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/fixtures/test_scattered_imports.ipynb b/tests/fixtures/test_scattered_imports.ipynb new file mode 100644 index 0000000..e826136 --- /dev/null +++ b/tests/fixtures/test_scattered_imports.ipynb @@ -0,0 +1,1185 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "_uuid": "d98e260fd46b2018f8235d76d6b46d6e149ded86" + }, + "source": [ + "# Sales Prediction\n", + "## ( Simple Linear Regression)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "eb75d57ef5c0c094eb265c3fb4ef77b8f8c73dce" + }, + "source": [ + "### Problem Statement\n", + "\n", + "Build a model which predicts sales based on the money spent on different platforms for marketing.\n", + "\n", + "### Data\n", + "Use the advertising dataset given in ISLR and analyse the relationship between 'TV advertising' and 'sales' using a simple linear regression model. \n", + "\n", + "In this notebook, we'll build a linear regression model to predict `Sales` using an appropriate predictor variable." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "fab1024005bc13658e3ef2f8a2e46971881bc3ef" + }, + "source": [ + "## Reading and Understanding the Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "_uuid": "d68008018678c65564ddda5994cb05129f3ca72b" + }, + "outputs": [], + "source": [ + "# Supress Warnings\n", + "\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "# Import the numpy and pandas package\n", + "\n", + "import kagglehub\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "# Data Visualisation\n", + "import matplotlib.pyplot as plt \n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "_uuid": "1365d38deb407ea9c0f4e93830c5f9d4d65ebd9d" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TVRadioNewspaperSales
0230.137.869.222.1
144.539.345.110.4
217.245.969.312.0
3151.541.358.516.5
4180.810.858.417.9
\n", + "
" + ], + "text/plain": [ + " TV Radio Newspaper Sales\n", + "0 230.1 37.8 69.2 22.1\n", + "1 44.5 39.3 45.1 10.4\n", + "2 17.2 45.9 69.3 12.0\n", + "3 151.5 41.3 58.5 16.5\n", + "4 180.8 10.8 58.4 17.9" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "path = kagglehub.dataset_download(\"bumba5341/advertisingcsv\")\n", + "\n", + "advertising = pd.DataFrame(pd.read_csv(f\"{path}/Advertising.csv\"))\n", + "advertising.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "39753c6695c9c1fb90e9d0bbbba0bf8c09b600c2" + }, + "source": [ + "## Data Inspection" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "_uuid": "4f36948806d235d179b1a5c6b6c990a41afc6e4a", + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(200, 4)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "advertising.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "_uuid": "9578033b7d507aa4d901b48de36931066cc00241" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 200 entries, 0 to 199\n", + "Data columns (total 4 columns):\n", + "TV 200 non-null float64\n", + "Radio 200 non-null float64\n", + "Newspaper 200 non-null float64\n", + "Sales 200 non-null float64\n", + "dtypes: float64(4)\n", + "memory usage: 6.3 KB\n" + ] + } + ], + "source": [ + "advertising.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "_uuid": "b817b9601c376627448453b03d79bf8f9dd02eac" + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
TVRadioNewspaperSales
count200.000000200.000000200.000000200.000000
mean147.04250023.26400030.55400015.130500
std85.85423614.84680921.7786215.283892
min0.7000000.0000000.3000001.600000
25%74.3750009.97500012.75000011.000000
50%149.75000022.90000025.75000016.000000
75%218.82500036.52500045.10000019.050000
max296.40000049.600000114.00000027.000000
\n", + "
" + ], + "text/plain": [ + " TV Radio Newspaper Sales\n", + "count 200.000000 200.000000 200.000000 200.000000\n", + "mean 147.042500 23.264000 30.554000 15.130500\n", + "std 85.854236 14.846809 21.778621 5.283892\n", + "min 0.700000 0.000000 0.300000 1.600000\n", + "25% 74.375000 9.975000 12.750000 11.000000\n", + "50% 149.750000 22.900000 25.750000 16.000000\n", + "75% 218.825000 36.525000 45.100000 19.050000\n", + "max 296.400000 49.600000 114.000000 27.000000" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "advertising.describe()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "fab7463f8ed5eb55f1357db16c69204351295edf" + }, + "source": [ + "## Data Cleaning" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "_uuid": "cf9580e58b78c0558d96f54272701b6d2d32a018" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "TV 0.0\n", + "Radio 0.0\n", + "Newspaper 0.0\n", + "Sales 0.0\n", + "dtype: float64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Checking Null values\n", + "advertising.isnull().sum()*100/advertising.shape[0]\n", + "# There are no NULL values in the dataset, hence it is clean." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "_uuid": "c427a8e8a84e617eccdeda7df5eccd25f740f25d" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Outlier Analysis\n", + "fig, axs = plt.subplots(3, figsize = (5,5))\n", + "plt1 = sns.boxplot(advertising['TV'], ax = axs[0])\n", + "plt2 = sns.boxplot(advertising['Newspaper'], ax = axs[1])\n", + "plt3 = sns.boxplot(advertising['Radio'], ax = axs[2])\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "_uuid": "3f18bb0cc6014b12746f45ea30a7b769a59ad1a4" + }, + "outputs": [], + "source": [ + "# There are no considerable outliers present in the data." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "81898c048d2b70a32615965535f9b7a6fdc626ae" + }, + "source": [ + "## Exploratory Data Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "d2ac5e56f61c3c9517621ad569068bbdcd65b8dd" + }, + "source": [ + "### Univariate Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "7ebb232846d9ae796b258eb26642ef73ca2dcacc" + }, + "source": [ + "#### Sales (Target Variable)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "_uuid": "d435bd318677f7a4234bf02efdf54aa19e8b2c16" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sns.boxplot(advertising['Sales'])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "_uuid": "2d6f716ebe182a58f9941c059256a09cc7f03703" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Let's see how Sales are related with other variables using scatter plot.\n", + "sns.pairplot(advertising, x_vars=['TV', 'Newspaper', 'Radio'], y_vars='Sales', height=4, aspect=1, kind='scatter')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "_uuid": "ea27ea99e47d578866a706f437d74a8fe1ad2264" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Let's see the correlation between different variables.\n", + "sns.heatmap(advertising.corr(), cmap=\"YlGnBu\", annot = True)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "de3f5b90d0b6165958efcf1a31b80141867987fe" + }, + "source": [ + "As is visible from the pairplot and the heatmap, the variable `TV` seems to be most correlated with `Sales`. So let's go ahead and perform simple linear regression using `TV` as our feature variable." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "1c10d5d48b611a9c66e1c99e66c44f6b36191a92" + }, + "source": [ + "## Model Building" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "6d593021918853ea7402f5efa6348425481dd538" + }, + "source": [ + "### Performing Simple Linear Regression" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "596550475e9050e4413572b184f66ddf74764878" + }, + "source": [ + "Equation of linear regression
\n", + "$y = c + m_1x_1 + m_2x_2 + ... + m_nx_n$\n", + "\n", + "- $y$ is the response\n", + "- $c$ is the intercept\n", + "- $m_1$ is the coefficient for the first feature\n", + "- $m_n$ is the coefficient for the nth feature
\n", + "\n", + "In our case:\n", + "\n", + "$y = c + m_1 \\times TV$\n", + "\n", + "The $m$ values are called the model **coefficients** or **model parameters**.\n", + "\n", + "---" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "fe62b625cb69b757c37930b85ffc1b4b4805f4ca" + }, + "source": [ + "### Generic Steps in model building using `statsmodels`\n", + "\n", + "We first assign the feature variable, `TV`, in this case, to the variable `X` and the response variable, `Sales`, to the variable `y`." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "_uuid": "ae7285c79fd678fad0ee4fb18f8923daf024838b" + }, + "outputs": [], + "source": [ + "X = advertising['TV']\n", + "y = advertising['Sales']" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "b3d9b88574b3b83dd47e7e0425c8e627443c4ec3" + }, + "source": [ + "#### Train-Test Split\n", + "\n", + "You now need to split our variable into training and testing sets. You'll perform this by importing `train_test_split` from the `sklearn.model_selection` library. It is usually a good practice to keep 70% of the data in your train dataset and the rest 30% in your test dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "_uuid": "997311202075aaa98631ef95c1a0d91cdbefa2af" + }, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, train_size = 0.7, test_size = 0.3, random_state = 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "_uuid": "07e568ebfdb6c838568e2df3dfd5fd0acadc7184" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "74 213.4\n", + "3 151.5\n", + "185 205.0\n", + "26 142.9\n", + "90 134.3\n", + "Name: TV, dtype: float64" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Let's now take a look at the train dataset\n", + "\n", + "X_train.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "_uuid": "873156cc1e983a63bfea8b5947bfb91e6992a7f5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "74 17.0\n", + "3 16.5\n", + "185 22.6\n", + "26 15.0\n", + "90 14.0\n", + "Name: Sales, dtype: float64" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_train.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "a53ec07eb3235dca5ca72cc9c2f6ca0634a33a09" + }, + "source": [ + "#### Building a Linear Model\n", + "\n", + "You first need to import the `statsmodel.api` library using which you'll perform the linear regression." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "_uuid": "226e3704ff6b78a47273fd816009f9c30b8f0a81" + }, + "outputs": [], + "source": [ + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "7aace406b025306a7ba85016b8bd48ae662d1ec1" + }, + "source": [ + "By default, the `statsmodels` library fits a line on the dataset which passes through the origin. But in order to have an intercept, you need to manually use the `add_constant` attribute of `statsmodels`. And once you've added the constant to your `X_train` dataset, you can go ahead and fit a regression line using the `OLS` (Ordinary Least Squares) attribute of `statsmodels` as shown below" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "_uuid": "b80a766082e6c9c40c3f09499fec4cfc51f62763" + }, + "outputs": [], + "source": [ + "# Add a constant to get an intercept\n", + "X_train_sm = sm.add_constant(X_train)\n", + "\n", + "# Fit the resgression line using 'OLS'\n", + "lr = sm.OLS(y_train, X_train_sm).fit()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "_uuid": "fd4287b550d2f05555ae3e18d6f497912424f8cf" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "const 6.948683\n", + "TV 0.054546\n", + "dtype: float64" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Print the parameters, i.e. the intercept and the slope of the regression line fitted\n", + "lr.params" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "_uuid": "f841995801587a25a9b4c4b77ef396e538e9ad1f" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " OLS Regression Results \n", + "==============================================================================\n", + "Dep. Variable: Sales R-squared: 0.816\n", + "Model: OLS Adj. R-squared: 0.814\n", + "Method: Least Squares F-statistic: 611.2\n", + "Date: Thu, 07 Mar 2019 Prob (F-statistic): 1.52e-52\n", + "Time: 06:21:53 Log-Likelihood: -321.12\n", + "No. Observations: 140 AIC: 646.2\n", + "Df Residuals: 138 BIC: 652.1\n", + "Df Model: 1 \n", + "Covariance Type: nonrobust \n", + "==============================================================================\n", + " coef std err t P>|t| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "const 6.9487 0.385 18.068 0.000 6.188 7.709\n", + "TV 0.0545 0.002 24.722 0.000 0.050 0.059\n", + "==============================================================================\n", + "Omnibus: 0.027 Durbin-Watson: 2.196\n", + "Prob(Omnibus): 0.987 Jarque-Bera (JB): 0.150\n", + "Skew: -0.006 Prob(JB): 0.928\n", + "Kurtosis: 2.840 Cond. No. 328.\n", + "==============================================================================\n", + "\n", + "Warnings:\n", + "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n" + ] + } + ], + "source": [ + "# Performing a summary operation lists out all the different parameters of the regression line fitted\n", + "print(lr.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "b4184f39c773af135644179ad6f86e9e75c3d7d5" + }, + "source": [ + "#### Looking at some key statistics from the summary" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "2eb6f1c6f44cf4b216aaf184ef64be7358c12bb7" + }, + "source": [ + "The values we are concerned with are - \n", + "1. The coefficients and significance (p-values)\n", + "2. R-squared\n", + "3. F statistic and its significance" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "5c4fab83c0633fef6b7d7c164056f58e7bf6fedf" + }, + "source": [ + "##### 1. The coefficient for TV is 0.054, with a very low p value\n", + "The coefficient is statistically significant. So the association is not purely by chance. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "78f7b40f9e278a5261b382665b3e953524aeced3" + }, + "source": [ + "##### 2. R - squared is 0.816\n", + "Meaning that 81.6% of the variance in `Sales` is explained by `TV`\n", + "\n", + "This is a decent R-squared value." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "6f0cc01ea96a792ef1c9e369a67f5cf4949cda42" + }, + "source": [ + "###### 3. F statistic has a very low p value (practically low)\n", + "Meaning that the model fit is statistically significant, and the explained variance isn't purely by chance." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "355241eda62e0f3fb9b843256640d56ab6bf7fd1" + }, + "source": [ + "---\n", + "The fit is significant. Let's visualize how well the model fit the data.\n", + "\n", + "From the parameters that we get, our linear regression equation becomes:\n", + "\n", + "$ Sales = 6.948 + 0.054 \\times TV $" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "_uuid": "6e0dc97a88b9fc1d4e975c2fe511e59bd0cd2b8a", + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_train, y_train)\n", + "plt.plot(X_train, 6.948 + 0.054*X_train, 'r')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "b0127acdc8615bb40259e313f1d91e263091ce5c" + }, + "source": [ + "## Model Evaluation" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "422b3bc53bfd16e1583f66456a3997a53e60d4d7" + }, + "source": [ + "### Residual analysis \n", + "To validate assumptions of the model, and hence the reliability for inference" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "90fd70d36d73f8756d85b91132b7783fca68de51" + }, + "source": [ + "#### Distribution of the error terms\n", + "We need to check if the error terms are also normally distributed (which is infact, one of the major assumptions of linear regression), let us plot the histogram of the error terms and see what it looks like." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "_uuid": "4dd8f2238cf72ced822605fc50ceedc3451ef5af" + }, + "outputs": [], + "source": [ + "y_train_pred = lr.predict(X_train_sm)\n", + "res = (y_train - y_train_pred)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "_uuid": "14e47df1dd16feb210ba45abe9bd16e583dacd88", + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "sns.distplot(res, bins = 15)\n", + "fig.suptitle('Error Terms', fontsize = 15) # Plot heading \n", + "plt.xlabel('y_train - y_train_pred', fontsize = 15) # X-label\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "e4ee1c8edba5205ff0fb2d282f3cb04d3578d40e" + }, + "source": [ + "The residuals are following the normally distributed with a mean 0. All good!" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "21220e799147c77afe520b1eaf29664fca414fb5" + }, + "source": [ + "#### Looking for patterns in the residuals" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "_uuid": "9273cbc44826c16c959a63707862371c9ff4301d" + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_train,res)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "6b9b369334a8ce91ef15c05de37b463b2df53fd1" + }, + "source": [ + "We are confident that the model fit isn't by chance, and has decent predictive power. The normality of residual terms allows some inference on the coefficients.\n", + "\n", + "Although, the variance of residuals increasing with X indicates that there is significant variation that this model is unable to explain." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "a9f1c4e7245673932e604b4aa3a5cac748809d3d" + }, + "source": [ + "As you can see, the regression line is a pretty good fit to the data" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "70d9188db6c5b404c66c0a1bc2b9002a86121318" + }, + "source": [ + "### Predictions on the Test Set" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "a88d571a4e726470bb1af84b6197e7065bcd23d4" + }, + "source": [ + "Now that you have fitted a regression line on your train dataset, it's time to make some predictions on the test data. For this, you first need to add a constant to the `X_test` data like you did for `X_train` and then you can simply go on and predict the y values corresponding to `X_test` using the `predict` attribute of the fitted regression line." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "_uuid": "f0bed7ce820292dceee1c3b00b9ecbcb9fdbbd37" + }, + "outputs": [], + "source": [ + "# Add a constant to X_test\n", + "X_test_sm = sm.add_constant(X_test)\n", + "\n", + "# Predict the y values corresponding to X_test_sm\n", + "y_pred = lr.predict(X_test_sm)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "_uuid": "0b64c5e3173c685b0715a93f0a77c759e90b2dff" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "126 7.374140\n", + "104 19.941482\n", + "99 14.323269\n", + "92 18.823294\n", + "111 20.132392\n", + "dtype: float64" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y_pred.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "_uuid": "f67e3bf11f1ab0670339d4496a4b42df11d1b0cf" + }, + "outputs": [], + "source": [ + "from sklearn.metrics import mean_squared_error\n", + "from sklearn.metrics import r2_score" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "3d4c698357ac5a9b1dc5e82862c081a2843e8c2b" + }, + "source": [ + "##### Looking at the RMSE" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "_uuid": "58863bc73dfa751e6bade66b3b71f80be51d9ca6" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2.019296008966232" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Returns the mean squared error; we'll take a square root\n", + "np.sqrt(mean_squared_error(y_test, y_pred))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "ab9e84c7ccf6d83fd215ba8771cb0243a59bc88e" + }, + "source": [ + "###### Checking the R-squared on the test set" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "_uuid": "6ce19fc28741a4d2b558a377f2fd39c81abdb72e" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.792103160124566" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "r_squared = r2_score(y_test, y_pred)\n", + "r_squared" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_uuid": "743c7b8425082fbb0a6811f2405fb7a4c1fa5a1f" + }, + "source": [ + "##### Visualizing the fit on the test set" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "_uuid": "eb08ac34d4e148e3221adfe126072f108adbfa24", + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X_test, y_test)\n", + "plt.plot(X_test, 6.948 + 0.054 * X_test, 'r')\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/tests/unit/test_generated_api_template.py b/tests/unit/test_generated_api_template.py new file mode 100644 index 0000000..8ad42f4 --- /dev/null +++ b/tests/unit/test_generated_api_template.py @@ -0,0 +1,96 @@ +import os +import shutil +import importlib.util +import pytest +import nbformat +from pathlib import Path +from fastapi.testclient import TestClient +from src.generator import main as run_generator + +BASE_DIR = Path(__file__).resolve().parent.parent.parent + +def create_test_notebook(path: Path): + """Creates a notebook with a tagged parameter cell.""" + nb = nbformat.v4.new_notebook() + # Cell 1: Parameters + param_cell = nbformat.v4.new_code_cell("x = 10") + param_cell.metadata['tags'] = ['parameters'] + # Cell 2: Logic + logic_cell = nbformat.v4.new_code_cell("print(f'Value is {x}')") + nb.cells.extend([param_cell, logic_cell]) + with open(path, "w", encoding="utf-8") as f: + nbformat.write(nb, f) + +@pytest.fixture(scope="module") +def generated_service(tmp_path_factory): + """ + 1. Sets up a mock project structure. + 2. Runs the generator. + 3. Returns the path to the generated service. + """ + old_cwd = os.getcwd() + tmp_root = tmp_path_factory.mktemp("integration_test") + try: + nb_dir = tmp_root / "notebooks" / "test" + nb_dir.mkdir(parents=True) + nb_path = nb_dir / "test_lifecycle.ipynb" + create_test_notebook(nb_path) + + mock_src = tmp_root / "src" + mock_src.mkdir() + shutil.copy( BASE_DIR / "src/generated_api_template.py", mock_src / "generated_api_template.py") + shutil.copy(BASE_DIR / "src/generated_dockerfile", mock_src / "generated_dockerfile") + shutil.copy(BASE_DIR / "src/generated_helper.py", mock_src / "generated_helper.py") + shutil.copy(BASE_DIR / "src/generator.py", mock_src / "generator.py") + + os.chdir(tmp_root / "src") + run_generator(base_dir=str(tmp_root)) + + service_path = tmp_root / "src" / "services" / "testlifecycle-service" + yield service_path + finally: + os.chdir(old_cwd) + +def test_generated_api_functionality(generated_service, monkeypatch): + """ + Dynamically loads the generated main.py and tests it with TestClient. + """ + monkeypatch.chdir(generated_service) + monkeypatch.syspath_prepend(str(generated_service)) + + # Dynamically import the generated main.py + module_name = "generated_service_app" + spec = importlib.util.spec_from_file_location(module_name, generated_service / "main.py") + service_module = importlib.util.module_from_spec(spec) + + # This executes the module, including the FastAPI app initialization + spec.loader.exec_module(service_module) + + # Use TestClient on the dynamically loaded app + client = TestClient(service_module.app) + + # Test discovery + resp_params = client.get("/getParameters") + assert resp_params.status_code == 200 + assert "x" in resp_params.json() + + # Test health + assert client.get("/health").status_code == 200 + + with monkeypatch.context() as m: + from unittest.mock import patch + + # Instead of f"{module_name}.execute_notebook", patch the object directly + # 'service_module' is the object created via exec_module + with patch.object(service_module, "execute_notebook") as mock_exec: + mock_exec.return_value = [{ + "type": "stream", + "stream": "stdout", + "content": "Value is 10" + }] + + # The route path is generated from the filename + response = client.get("/run/test_lifecycle.ipynb") + + assert response.status_code == 200 + assert "Value is 10" in response.json()["outputs"][0]["content"] \ No newline at end of file diff --git a/tests/unit/test_generated_fastapi.py b/tests/unit/test_generated_fastapi.py new file mode 100644 index 0000000..84b23c6 --- /dev/null +++ b/tests/unit/test_generated_fastapi.py @@ -0,0 +1,40 @@ +# tests/integration/test_generated_api.py +import pytest +import importlib.util +import sys +from pathlib import Path +from fastapi.testclient import TestClient +from unittest.mock import patch + +SERVICES_DIR = Path(__file__).parent.parent.parent / "src" / "services" +SERVICE_PATHS = [d for d in SERVICES_DIR.iterdir() if d.is_dir()] if SERVICES_DIR.exists() else [] + +@pytest.mark.parametrize("service_path", SERVICE_PATHS) +def test_generated_service_contract(service_path, monkeypatch): + """Tests generated Fast API servers in /services""" + + monkeypatch.chdir(service_path) + monkeypatch.syspath_prepend(str(service_path)) + + #load modules + helper_spec = importlib.util.spec_from_file_location("helper", "helper.py") + helper_module = importlib.util.module_from_spec(helper_spec) + sys.modules["helper"] = helper_module + helper_spec.loader.exec_module(helper_module) + + module_name = f"app_{service_path.name}" + spec = importlib.util.spec_from_file_location(module_name, "main.py") + service_module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(service_module) + + client = TestClient(service_module.app) + + assert client.get("/health").status_code == 200 + assert client.get("/getParameters").status_code == 200 + + with patch.object(service_module, "execute_notebook") as mock_exec: + mock_exec.return_value = [{"type": "stream", "stream": "stdout", "content": "test"}] + # Using a generic path since the route is dynamic + + response = client.get(f"/run/{service_path.name.replace('-service', '.ipynb')}") + assert response.status_code in [200, 404] \ No newline at end of file diff --git a/tests/unit/test_generated_helper.py b/tests/unit/test_generated_helper.py new file mode 100644 index 0000000..c8b9670 --- /dev/null +++ b/tests/unit/test_generated_helper.py @@ -0,0 +1,87 @@ +import pytest +from src.generated_helper import ( + NotebookResponse, + handle_streams, + handle_html, + handle_rich_outputs, + NotebookParameters +) +from pydantic import ValidationError + +## --- 1. Testing Model Validation --- +def test_notebook_response_stream(): + """Verify that a stream output is correctly parsed by the Pydantic model.""" + data = { + "outputs": [ + {"type": "stream", "stream": "stdout", "content": "Hello World"} + ] + } + response = NotebookResponse(**data) + assert response.outputs[0].type == "stream" + assert response.outputs[0].content == "Hello World" + +def test_notebook_response_invalid_type(): + """Verify that an unknown 'type' raises a ValidationError.""" + data = { + "outputs": [{"type": "invalid_type", "content": "data"}] + } + with pytest.raises(ValidationError): + NotebookResponse(**data) + +# ## --- 2. Testing Utility Functions --- + +def test_handle_streams_list(): + """Test that stream output as a list of strings is joined correctly.""" + class MockOutput: + def __init__(self): + self.text = ["line 1\n", "line 2"] + def get(self, key, default): + return "stdout" + + result = handle_streams(MockOutput()) + assert result["content"] == "line 1\nline 2" + +def test_handle_html_dataframe(): + """Test that handle_html identifies a table and attempts to parse it.""" + html_content = "
cell
" + result = handle_html(html_content) + + assert result["type"] == "dataframe" + assert result["content"] == html_content + +def test_handle_rich_outputs_image(): + """Verify rich output handler picks the correct MIME type.""" + mock_output = { + "data": { + "text/plain": "some text", + "image/png": "iVBORw0KG..." + } + } + result = handle_rich_outputs(mock_output) + assert result["type"] == "image" + assert result["mime"] == "image/png" + +## --- 3. Testing NotebookParameters (AST Logic) --- +def test_notebook_parameters_parsing(tmp_path): + """Test that NotebookParameters correctly extracts variable types and values.""" + import nbformat + + # Create a dummy notebook with a tagged parameter cell + nb = nbformat.v4.new_notebook() + param_cell = nbformat.v4.new_code_cell("threshold = 0.5\nname = 'test'") + param_cell.metadata['tags'] = ['parameters'] + nb.cells.append(param_cell) + + nb_path = tmp_path / "test_params.ipynb" + with open(nb_path, "w") as f: + nbformat.write(nb, f) + + handler = NotebookParameters(str(nb_path)) + + # Check readable_json + assert handler.readable_json["threshold"]["defaultValue"] == 0.5 + assert handler.readable_json["threshold"]["type"] == "float" + assert handler.readable_json["name"]["defaultValue"] == "test" + + # Check dynamic_model dictionary (used for Pydantic create_model) + assert handler.dynamic_model["threshold"] == (float, 0.5) \ No newline at end of file diff --git a/tests/unit/test_generator.py b/tests/unit/test_generator.py new file mode 100644 index 0000000..efc23b9 --- /dev/null +++ b/tests/unit/test_generator.py @@ -0,0 +1,148 @@ +from pathlib import Path +import nbformat +import shutil +from src.generator import extract_imports, normalize_name, main +import pytest +from unittest.mock import patch, MagicMock +import os + +# Extract Import +def test_extract_imports(tmp_path): + """ + Test Standard Imports + """ + nb = nbformat.v4.new_notebook() + code = "import pandas as pd\nimport os" + nb.cells.append(nbformat.v4.new_code_cell(code)) + + nb_file = tmp_path / "test_nb.ipynb" + with open(nb_file, "w") as f: + nbformat.write(nb, f) + + imports = extract_imports(str(nb_file)) + + assert "pandas" in imports + assert "lxml" in imports + assert "os" not in imports + +def test_extract_empty_imports(tmp_path): + """ + Test empty/os imports + """ + nb = nbformat.v4.new_notebook() + code = "import os\nimport sys\nimport re" + nb.cells.append(nbformat.v4.new_code_cell(code)) + + nb_file = tmp_path / "test_nb.ipynb" + with open(nb_file, "w") as f: + nbformat.write(nb, f) + + imports = extract_imports(str(nb_file)) + + assert imports == [] + +def test_extract_empty_imports(tmp_path): + """ + Test imports scattered around cells + """ + notebook_path = Path(__file__).resolve().parent.parent / "fixtures" / "test_scattered_imports.ipynb" + test_nb = tmp_path / "test.ipynb" + shutil.copy(notebook_path, test_nb) + + results = extract_imports(str(test_nb)) + assert "kagglehub" in results + assert "numpy" in results + assert "pandas" in results + assert "lxml" in results + assert "matplotlib" in results + assert "seaborn" in results + +# Normlize name +def test_normalize_basic_casing_and_whitespace(): + input_name = " Get_User_Data " + expected = "getuserdata" + assert normalize_name(input_name) == expected + +def test_normalize_consistent_delimiters(): + assert normalize_name("getUserData") == "getuserdata" + assert normalize_name("get-user-data") == "get-user-data" + assert normalize_name("Get.User.Data") == "getuserdata" + +def test_normalize_handles_numbers_and_symbols(): + input_name = "User_Profile_v2!" + expected = "userprofilev2" + assert normalize_name(input_name) == expected + +# Test Main logic +def create_dummy_notebook(path: Path): + nb = nbformat.v4.new_notebook() + nb.cells.append(nbformat.v4.new_code_cell("import pandas as pd")) + with open(path, "w", encoding="utf-8") as f: + nbformat.write(nb, f) + +@pytest.fixture +def mock_project_root(tmp_path): + """ + Creates a temporary project structure: + """ + project = tmp_path / "project" + project.mkdir() + + # 1. Setup /src with mock templates + # In reality, generator.py is already in /src. We just need the templates there. + src_dir = project / "src" + src_dir.mkdir() + (src_dir / "generated_api_template.py").write_text("API_CONTENT") + (src_dir / "generated_dockerfile").write_text("DOCKER_CONTENT") + (src_dir / "generated_helper.py").write_text("HELPER_CONTENT") + + # 2. Setup /notebooks hierarchy + nb_dir = project / "notebooks" / "dataframe" + nb_dir.mkdir(parents=True) + create_dummy_notebook(nb_dir / "dataframe_output.ipynb") + return project + +def test_generator_main(mock_project_root, monkeypatch): + """ + Tests the main function + """ + monkeypatch.chdir(mock_project_root / "src") + + main(base_dir=str(mock_project_root.parent)) + + service_path = mock_project_root / "src" / "services" / "dataframeoutput-service" + + assert service_path.exists() + assert (service_path / "main.py").exists() + assert (service_path / "requirements.txt").exists() + + # Verify content of requirements + req_content = (service_path / "requirements.txt").read_text() + assert "pandas" in req_content + assert "fastapi" in req_content + +def test_exclusion_logic(mock_project_root, monkeypatch): + """ + Ensures notebooks in excluded directories are not processed. + """ + monkeypatch.chdir(mock_project_root / "src") + + # Create a notebook in a forbidden directory + bad_dir = mock_project_root / ".venv" + bad_dir.mkdir() + create_dummy_notebook(bad_dir / "ignored.ipynb") + + main(base_dir=str(mock_project_root.parent)) + + # The ignored-service should not exist + assert not (mock_project_root / "src" / "services" / "ignored-service").exists() + +def test_main_with_notebook(mock_project_root, monkeypatch): + monkeypatch.chdir(mock_project_root / "src") + main(base_dir=str(mock_project_root.parent)) + + expected_notebook_count = len(list(mock_project_root.glob("notebooks/**/*.ipynb"))) + + generated_services = [d for d in (mock_project_root / "src" /"services" ).iterdir() if d.is_dir()] + + assert len(generated_services) == expected_notebook_count \ No newline at end of file