diff --git "a/code/eda_pandas.ipynb" "b/code/eda_pandas.ipynb"
new file mode 100644--- /dev/null
+++ "b/code/eda_pandas.ipynb"
@@ -0,0 +1,12540 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "from ydata_profiling import ProfileReport\n",
+ "\n",
+ "df = pd.DataFrame(np.random.rand(100, 5), columns=[\"a\", \"b\", \"c\", \"d\", \"e\"])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "profile = ProfileReport(df, title=\"Profiling Report\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Summarize dataset: 100%|██████████| 39/39 [00:01<00:00, 27.26it/s, Completed] \n",
+ "Generate report structure: 100%|██████████| 1/1 [00:00<00:00, 1.40it/s]\n",
+ "Render HTML: 100%|██████████| 1/1 [00:00<00:00, 4.06it/s]\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ ""
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/plain": []
+ },
+ "execution_count": 3,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "profile"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Export report to file: 100%|██████████| 1/1 [00:00<00:00, 525.40it/s]\n"
+ ]
+ }
+ ],
+ "source": [
+ "profile.to_file(\"eda_pandas.html\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def calculate_tax_comparison(income, mortgage_interest, property_tax, \n",
+ " charitable_donations, state_local_tax,\n",
+ " child_tax_credit=2000):\n",
+ " \"\"\"\n",
+ " Calculate and compare taxes using standard vs itemized deductions\n",
+ " for married filing jointly with one child\n",
+ " \n",
+ " Parameters:\n",
+ " income: Annual household income\n",
+ " mortgage_interest: Annual mortgage interest paid\n",
+ " property_tax: Annual property tax paid\n",
+ " charitable_donations: Annual charitable contributions\n",
+ " state_local_tax: State and local taxes paid\n",
+ " child_tax_credit: Child tax credit amount (default $2000)\n",
+ " \"\"\"\n",
+ " # 2024 tax brackets for married filing jointly\n",
+ " tax_brackets = [\n",
+ " (0, 22000, 0.10),\n",
+ " (22000, 89450, 0.12),\n",
+ " (89450, 190750, 0.22),\n",
+ " (190750, 364200, 0.24),\n",
+ " (364200, 462500, 0.32),\n",
+ " (462500, 693750, 0.35),\n",
+ " (693750, float('inf'), 0.37)\n",
+ " ]\n",
+ " \n",
+ " # 2024 standard deduction for married filing jointly\n",
+ " standard_deduction = 27700\n",
+ " \n",
+ " # Calculate itemized deductions\n",
+ " salt_cap = 10000 # State and Local Tax deduction cap\n",
+ " total_salt = min(state_local_tax + property_tax, salt_cap)\n",
+ " \n",
+ " itemized_deductions = (mortgage_interest + \n",
+ " total_salt + \n",
+ " charitable_donations)\n",
+ " \n",
+ " def calculate_tax(taxable_income):\n",
+ " tax = 0\n",
+ " for lower, upper, rate in tax_brackets:\n",
+ " if taxable_income > lower:\n",
+ " taxable_in_bracket = min(taxable_income - lower, upper - lower)\n",
+ " tax += taxable_in_bracket * rate\n",
+ " return tax\n",
+ " \n",
+ " # Calculate taxes both ways\n",
+ " standard_taxable_income = max(income - standard_deduction, 0)\n",
+ " itemized_taxable_income = max(income - itemized_deductions, 0)\n",
+ " \n",
+ " standard_tax = calculate_tax(standard_taxable_income)\n",
+ " itemized_tax = calculate_tax(itemized_taxable_income)\n",
+ " \n",
+ " # Apply child tax credit\n",
+ " standard_tax = max(standard_tax - child_tax_credit, 0)\n",
+ " itemized_tax = max(itemized_tax - child_tax_credit, 0)\n",
+ " \n",
+ " return {\n",
+ " 'Standard Deduction': {\n",
+ " 'Deduction Amount': standard_deduction,\n",
+ " 'Taxable Income': standard_taxable_income,\n",
+ " 'Tax Before Credits': calculate_tax(standard_taxable_income),\n",
+ " 'Final Tax': standard_tax\n",
+ " },\n",
+ " 'Itemized Deduction': {\n",
+ " 'Total Deductions': itemized_deductions,\n",
+ " 'Deduction Breakdown': {\n",
+ " 'Mortgage Interest': mortgage_interest,\n",
+ " 'SALT (capped)': total_salt,\n",
+ " 'Charitable Donations': charitable_donations\n",
+ " },\n",
+ " 'Taxable Income': itemized_taxable_income,\n",
+ " 'Tax Before Credits': calculate_tax(itemized_taxable_income),\n",
+ " 'Final Tax': itemized_tax\n",
+ " },\n",
+ " 'Difference': abs(standard_tax - itemized_tax),\n",
+ " 'Better Option': 'Standard Deduction' if standard_tax <= itemized_tax else 'Itemized Deduction'\n",
+ " }"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'Standard Deduction': {'Deduction Amount': 27700,\n",
+ " 'Taxable Income': 222300,\n",
+ " 'Tax Before Credits': 40152.0,\n",
+ " 'Final Tax': 38152.0},\n",
+ " 'Itemized Deduction': {'Total Deductions': 38955,\n",
+ " 'Deduction Breakdown': {'Mortgage Interest': 38000,\n",
+ " 'SALT (capped)': 455,\n",
+ " 'Charitable Donations': 500},\n",
+ " 'Taxable Income': 211045,\n",
+ " 'Tax Before Credits': 37450.8,\n",
+ " 'Final Tax': 35450.8},\n",
+ " 'Difference': 2701.199999999997,\n",
+ " 'Better Option': 'Itemized Deduction'}"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "calculate_tax_comparison(250000, 38000, 450, 500, 5, 2000)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "36000"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "3000 * 12"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "pytorch_m1",
+ "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.8.13"
+ },
+ "orig_nbformat": 4
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}