2025-07-18 22:05:55 +01:00
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "v5Jd9WU1KIyi"
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from datetime import datetime\n",
"\n",
"# Load the data\n",
"df = pd.read_csv('data/raw/fraudTrain.csv')"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 585
},
"id": "jYLv7ly6OJkC",
"outputId": "882d3f2a-45b7-4f41-c5eb-eb67a8dc80d8"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"First 5 Rows:\n"
]
},
{
"data": {
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "df"
},
"text/html": [
"\n",
" <div id=\"df-3fe63d94-9504-4e6d-bf14-127d836bf954\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unnamed: 0</th>\n",
" <th>trans_date_trans_time</th>\n",
" <th>cc_num</th>\n",
" <th>merchant</th>\n",
" <th>category</th>\n",
" <th>amt</th>\n",
" <th>first</th>\n",
" <th>last</th>\n",
" <th>gender</th>\n",
" <th>street</th>\n",
" <th>...</th>\n",
" <th>lat</th>\n",
" <th>long</th>\n",
" <th>city_pop</th>\n",
" <th>job</th>\n",
" <th>dob</th>\n",
" <th>trans_num</th>\n",
" <th>unix_time</th>\n",
" <th>merch_lat</th>\n",
" <th>merch_long</th>\n",
" <th>is_fraud</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>2019-01-01 00:00:18</td>\n",
" <td>2703186189652095</td>\n",
" <td>fraud_Rippin, Kub and Mann</td>\n",
" <td>misc_net</td>\n",
" <td>4.97</td>\n",
" <td>Jennifer</td>\n",
" <td>Banks</td>\n",
" <td>F</td>\n",
" <td>561 Perry Cove</td>\n",
" <td>...</td>\n",
" <td>36.0788</td>\n",
" <td>-81.1781</td>\n",
" <td>3495</td>\n",
" <td>Psychologist, counselling</td>\n",
" <td>1988-03-09</td>\n",
" <td>0b242abb623afc578575680df30655b9</td>\n",
" <td>1325376018</td>\n",
" <td>36.011293</td>\n",
" <td>-82.048315</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>2019-01-01 00:00:44</td>\n",
" <td>630423337322</td>\n",
" <td>fraud_Heller, Gutmann and Zieme</td>\n",
" <td>grocery_pos</td>\n",
" <td>107.23</td>\n",
" <td>Stephanie</td>\n",
" <td>Gill</td>\n",
" <td>F</td>\n",
" <td>43039 Riley Greens Suite 393</td>\n",
" <td>...</td>\n",
" <td>48.8878</td>\n",
" <td>-118.2105</td>\n",
" <td>149</td>\n",
" <td>Special educational needs teacher</td>\n",
" <td>1978-06-21</td>\n",
" <td>1f76529f8574734946361c461b024d99</td>\n",
" <td>1325376044</td>\n",
" <td>49.159047</td>\n",
" <td>-118.186462</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>2019-01-01 00:00:51</td>\n",
" <td>38859492057661</td>\n",
" <td>fraud_Lind-Buckridge</td>\n",
" <td>entertainment</td>\n",
" <td>220.11</td>\n",
" <td>Edward</td>\n",
" <td>Sanchez</td>\n",
" <td>M</td>\n",
" <td>594 White Dale Suite 530</td>\n",
" <td>...</td>\n",
" <td>42.1808</td>\n",
" <td>-112.2620</td>\n",
" <td>4154</td>\n",
" <td>Nature conservation officer</td>\n",
" <td>1962-01-19</td>\n",
" <td>a1a22d70485983eac12b5b88dad1cf95</td>\n",
" <td>1325376051</td>\n",
" <td>43.150704</td>\n",
" <td>-112.154481</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>2019-01-01 00:01:16</td>\n",
" <td>3534093764340240</td>\n",
" <td>fraud_Kutch, Hermiston and Farrell</td>\n",
" <td>gas_transport</td>\n",
" <td>45.00</td>\n",
" <td>Jeremy</td>\n",
" <td>White</td>\n",
" <td>M</td>\n",
" <td>9443 Cynthia Court Apt. 038</td>\n",
" <td>...</td>\n",
" <td>46.2306</td>\n",
" <td>-112.1138</td>\n",
" <td>1939</td>\n",
" <td>Patent attorney</td>\n",
" <td>1967-01-12</td>\n",
" <td>6b849c168bdad6f867558c3793159a81</td>\n",
" <td>1325376076</td>\n",
" <td>47.034331</td>\n",
" <td>-112.561071</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>2019-01-01 00:03:06</td>\n",
" <td>375534208663984</td>\n",
" <td>fraud_Keeling-Crist</td>\n",
" <td>misc_pos</td>\n",
" <td>41.96</td>\n",
" <td>Tyler</td>\n",
" <td>Garcia</td>\n",
" <td>M</td>\n",
" <td>408 Bradley Rest</td>\n",
" <td>...</td>\n",
" <td>38.4207</td>\n",
" <td>-79.4629</td>\n",
" <td>99</td>\n",
" <td>Dance movement psychotherapist</td>\n",
" <td>1986-03-28</td>\n",
" <td>a41d7549acf90789359a9aa5346dcb46</td>\n",
" <td>1325376186</td>\n",
" <td>38.674999</td>\n",
" <td>-78.632459</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 23 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-3fe63d94-9504-4e6d-bf14-127d836bf954')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-3fe63d94-9504-4e6d-bf14-127d836bf954 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-3fe63d94-9504-4e6d-bf14-127d836bf954');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-c92967be-83e1-4f69-a63f-ea04d92f4d66\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-c92967be-83e1-4f69-a63f-ea04d92f4d66')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-c92967be-83e1-4f69-a63f-ea04d92f4d66 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"text/plain": [
" Unnamed: 0 trans_date_trans_time cc_num \\\n",
"0 0 2019-01-01 00:00:18 2703186189652095 \n",
"1 1 2019-01-01 00:00:44 630423337322 \n",
"2 2 2019-01-01 00:00:51 38859492057661 \n",
"3 3 2019-01-01 00:01:16 3534093764340240 \n",
"4 4 2019-01-01 00:03:06 375534208663984 \n",
"\n",
" merchant category amt first \\\n",
"0 fraud_Rippin, Kub and Mann misc_net 4.97 Jennifer \n",
"1 fraud_Heller, Gutmann and Zieme grocery_pos 107.23 Stephanie \n",
"2 fraud_Lind-Buckridge entertainment 220.11 Edward \n",
"3 fraud_Kutch, Hermiston and Farrell gas_transport 45.00 Jeremy \n",
"4 fraud_Keeling-Crist misc_pos 41.96 Tyler \n",
"\n",
" last gender street ... lat long \\\n",
"0 Banks F 561 Perry Cove ... 36.0788 -81.1781 \n",
"1 Gill F 43039 Riley Greens Suite 393 ... 48.8878 -118.2105 \n",
"2 Sanchez M 594 White Dale Suite 530 ... 42.1808 -112.2620 \n",
"3 White M 9443 Cynthia Court Apt. 038 ... 46.2306 -112.1138 \n",
"4 Garcia M 408 Bradley Rest ... 38.4207 -79.4629 \n",
"\n",
" city_pop job dob \\\n",
"0 3495 Psychologist, counselling 1988-03-09 \n",
"1 149 Special educational needs teacher 1978-06-21 \n",
"2 4154 Nature conservation officer 1962-01-19 \n",
"3 1939 Patent attorney 1967-01-12 \n",
"4 99 Dance movement psychotherapist 1986-03-28 \n",
"\n",
" trans_num unix_time merch_lat merch_long \\\n",
"0 0b242abb623afc578575680df30655b9 1325376018 36.011293 -82.048315 \n",
"1 1f76529f8574734946361c461b024d99 1325376044 49.159047 -118.186462 \n",
"2 a1a22d70485983eac12b5b88dad1cf95 1325376051 43.150704 -112.154481 \n",
"3 6b849c168bdad6f867558c3793159a81 1325376076 47.034331 -112.561071 \n",
"4 a41d7549acf90789359a9aa5346dcb46 1325376186 38.674999 -78.632459 \n",
"\n",
" is_fraud \n",
"0 0 \n",
"1 0 \n",
"2 0 \n",
"3 0 \n",
"4 0 \n",
"\n",
"[5 rows x 23 columns]"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"print(\"\\nFirst 5 Rows:\")\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "DDaHkHmYMuFd",
"outputId": "993fc538-4afc-4cd3-d164-33c30927adba"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dataset Shape: (1296675, 23)\n"
]
}
],
"source": [
"print(f\"Dataset Shape: {df.shape}\")"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Lg3CbomiOS43",
"outputId": "ee426872-1069-4987-a774-dfced72f2ddc"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Data Types:\n",
"Unnamed: 0 int64\n",
"trans_date_trans_time object\n",
"cc_num int64\n",
"merchant object\n",
"category object\n",
"amt float64\n",
"first object\n",
"last object\n",
"gender object\n",
"street object\n",
"city object\n",
"state object\n",
"zip int64\n",
"lat float64\n",
"long float64\n",
"city_pop int64\n",
"job object\n",
"dob object\n",
"trans_num object\n",
"unix_time int64\n",
"merch_lat float64\n",
"merch_long float64\n",
"is_fraud int64\n",
"dtype: object\n"
]
}
],
"source": [
"print(\"\\nData Types:\")\n",
"print(df.dtypes)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "hgnd0URvOZnt",
"outputId": "f97be22a-d45e-43c4-8c07-09271a88ee32"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Missing Values:\n",
"Unnamed: 0 0\n",
"trans_date_trans_time 0\n",
"cc_num 0\n",
"merchant 0\n",
"category 0\n",
"amt 0\n",
"first 0\n",
"last 0\n",
"gender 0\n",
"street 0\n",
"city 0\n",
"state 0\n",
"zip 0\n",
"lat 0\n",
"long 0\n",
"city_pop 0\n",
"job 0\n",
"dob 0\n",
"trans_num 0\n",
"unix_time 0\n",
"merch_lat 0\n",
"merch_long 0\n",
"is_fraud 0\n",
"dtype: int64\n"
]
}
],
"source": [
"print(\"\\nMissing Values:\")\n",
"print(df.isnull().sum())"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "doXJcfKcMK7n",
"outputId": "6b07061b-a37b-48bd-b199-a43711ce1805"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fraud Distribution:\n",
"is_fraud\n",
"0 99.421135\n",
"1 0.578865\n",
"Name: proportion, dtype: float64\n"
]
}
],
"source": [
"fraud_percentage = df['is_fraud'].value_counts(normalize=True) * 100\n",
"print(f\"Fraud Distribution:\\n{fraud_percentage}\")"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 487
},
"id": "H1lvxe0GPlRj",
"outputId": "cbd5c9f1-6f33-4137-d3cd-a393548246e7"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAArMAAAHWCAYAAABkNgFvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAANn5JREFUeJzt3X9clfX9//EnoBxQBCN+iiRimpoKDoPI5a8woqK5reLjWiClZVlpZD9s5a9M0tJoRpGWWlul06XlcqiR5nI2J2YuS8ufOBPUTEhUUM71/cMvZx4BBQSOb33cb7frtp33eV/X9brOOdDTN+/rfdwsy7IEAAAAGMjd1QUAAAAA9UWYBQAAgLEIswAAADAWYRYAAADGIswCAADAWIRZAAAAGIswCwAAAGMRZgEAAGAswiwAAACMRZgF0Cj69eunfv36uboMnKe5c+fKzc1Nu3btcnUpRuLnAGh8hFnAMJXhorrtqaeecnV5F5zK12batGlVnqt8LdevX++CylTj+xgSEuKSeupj165dNV7HmdvFGoi/+eYbjR8//qK9PuBC18zVBQCon4kTJ6p9+/ZObd26dXNRNRe+F198UQ888IBatGjh6lKcDBw4UKmpqU5t3t7eLqqm7gIDA/WnP/3JqW3atGn673//q5dffrlK34vRN998owkTJqhfv36KiIhwem758uWuKQq4hBBmAUMlJSWpV69etep7/PhxeXp6yt390vxjTHR0tDZu3KicnBxlZGS4uhwnnTp10u9///ta9bUsS8ePH7+gwm7Lli2r1D9v3jz99NNPZ72uC/FaGoOnp6erSwAuepfmf9mAi9iqVavk5uamefPm6ZlnnlFYWJhatGihkpISHTp0SKNHj1b37t3l4+MjX19fJSUl6auvvnI6Rk3zJCuPvWrVKqf2mTNnqkOHDvL29lZsbKz+8Y9/1KrWbt26qX///lXa7Xa7wsLCdPvttzva5s2bp5iYGLVq1Uq+vr7q3r27XnnllVqdp3fv3howYICmTp2qY8eOnbP/p59+quuvv14tW7ZU69at9atf/UrffvutU5/x48fLzc1N27Zt05AhQ9S6dWv5+fkpPT1dR48erVVd5xIREaFbb71Vy5YtU69eveTt7a033nhDkjRnzhwNGDBAQUFBstls6tq1q15//fUqx3Bzc9P48eOrPfaQIUOc2jZv3qwBAwbI29tbbdu21aRJk2S32y+Ya6k8xueff67Y2Fh5eXkpMjJS77zzjlO/EydOaMKECerYsaO8vLx0+eWX65e//KVWrFjh6LNp0yYNGTJEkZGR8vLyUkhIiO655x79+OOPVc67d+9e3XvvvWrTpo1sNpvat2+vBx54QOXl5Zo7d67uuOMOSVL//v0dUyoqf0aqmzO7f/9+3XvvvQoODpaXl5eioqL09ttvO/WpnL7x0ksvOX6+bDabrrnmGv373/926ltYWKj09HS1bdtWNptNoaGh+tWvfsW0B1wyGJkFDFVcXKyDBw86tQUEBDj+/3PPPSdPT0+NHj1aZWVl8vT01DfffKPFixfrjjvuUPv27VVUVKQ33nhDffv21TfffKM2bdrUuY633npL999/v6677jqNGjVKO3bs0G233SZ/f3+Fh4efdd+UlBSNHz9ehYWFTvNEP//8c/3www/6v//7P0nSihUrNHjwYN1www2aMmWKJOnbb7/VmjVrNHLkyFrVOX78ePXp00evv/76WUdnP/nkEyUlJSkyMlLjx4/XsWPHNGPGDPXu3VsbNmyo8mfkO++8U+3bt1dmZqY2bNigN998U0FBQY46z+X48eNV3sdWrVrJZrNJkrZu3arBgwfr/vvv17Bhw3TVVVdJkl5//XVdffXVuu2229SsWTMtWbJEDz74oOx2u0aMGFGrc5+usLBQ/fv318mTJ/XUU0+pZcuWmjlzZoOOnDbEtWzbtk2333677r33XqWlpWn27NkaMmSIYmJidPXVV0s69V5nZmZq6NChio2NVUlJidavX68NGzZo4MCBkk59pnbs2KH09HSFhIRo8+bNmjlzpjZv3qwvvvhCbm5ukqQffvhBsbGxOnz4sO677z517txZe/fu1cKFC3X06FH16dNHjzzyiP74xz/q6aefVpcuXSTJ8b9nOnbsmPr166dt27bpoYceUvv27bVgwQINGTJEhw8frvJ5fu+99/Tzzz/r/vvvl5ubm6ZOnarf/OY32rFjh5o3by5J+u1vf6vNmzfr4YcfVkREhPbv368VK1aooKCgyucVuChZAIwyZ84cS1K1m2VZ1sqVKy1JVmRkpHX06FGnfY8fP25VVFQ4te3cudOy2WzWxIkTq5xj586dTn0rj71y5UrLsiyrvLzcCgoKsqKjo62ysjJHv5kzZ1qSrL59+571WrZu3WpJsmbMmOHU/uCDD1o+Pj6O+keOHGn5+vpaJ0+ePOfrcyZJ1ogRIyzLsqz+/ftbISEhjuNWXue///1vR//o6GgrKCjI+vHHHx1tX331leXu7m6lpqY62saNG2dJsu655x6n8/3617+2Lr/88lrXVt02Z84cy7Isq127dpYkKzc3t8q+Z763lmVZiYmJVmRkZJVzjBs3rkrfdu3aWWlpaY7Ho0aNsiRZ//rXvxxt+/fvt/z8/Kr9LJzNLbfcYrVr167K+c73WiqPsXr1aqcabTab9dhjjznaoqKirFtuueWsNVZ3zvfff7/K8VNTUy13d3enz0glu91uWZZlLViwwOnn4nR9+/Z1+jnIysqyJFl//vOfHW3l5eVWfHy85ePjY5WUlFiWdernUpJ1+eWXW4cOHXL0/fDDDy1J1pIlSyzLsqyffvrJkmS9+OKLZ71e4GLGNAPAUNnZ2VqxYoXTdrq0tLQqo2o2m80xb7aiokI//vijfHx8dNVVV2nDhg11rmH9+vXav3+/hg8f7jQ3cMiQIfLz8zvn/p06dVJ0dLTmz5/vaKuoqNDChQuVnJzsqL9169YqLS2tco11VTkKnJOTU+3z+/bt08aNGzVkyBD5+/s72nv06KGBAwdq6dKlVfYZPny40+Prr79eP/74o0pKSmpV069+9asq72NiYqLj+fbt2zs9rnT6e1s5St+3b1/t2LFDxcXFtTr36ZYuXaprr71WsbGxjrbAwEDddddddT5WTRriWrp27arrr7/eqcarrrpKO3bscLS1bt1amzdv1vfff19jLaefs3J0/Nprr5Ukx8+C3W7X4sWLlZycXO389MrR27pYunSpQkJCNHjwYEdb8+bN9cgjj+jIkSP67LPPnPqnpKTosssuczyuvPbK6/X29panp6dWrVqln376qc71ABeDSzrMrl69WsnJyWrTpo3c3Ny0ePHiOh/Dsiy99NJL6tSpk2w2m8LCwvT88883fLHAGWJjY5WQkOC0ne7MlQ6kU/9xfvnll9WxY0fZbDYFBAQoMDBQmzZtqlcA2r17tySpY8eOTu3NmzdXZGRkrY6RkpKiNWvWaO/evZJOzcvdv3+/UlJSHH0efPBBderUSUlJSWrbtq3uuece5ebm1rnePn36qH///jXOna28nso/f5+uS5cuOnjwoEpLS53ar7jiCqfHlcGjMlgcOnRIhYWFju3M17lt27ZV3sfQ0FDH89W9j5K0Zs0aJSQkOOb1BgYG6umnn5aker+XZ76PUvWvRX01xLWc+XpLp17z04PcxIkTdfjwYXXq1Endu3fX448/rk2bNjntc+jQIY0cOVLBwcHy9vZWYGCgo77Kcx44cEAlJSUNukpI5et85s2YldMSKj+Dlc71+bLZbJoyZYr+/ve/Kzg4WH369NHUqVNVWFjYYDUDF7pLOsyWlpYqKipK2dnZ9T7GyJEj9eabb+qll17Sli1b9NFHHzmNbACuUt1cx8mTJysjI0N9+vTRn//8Zy1btkwrVqzQ1Vdf7XSjT00jThUVFQ1eZ0pKiizL0oIFCyRJf/nLX+Tn56ebbrrJ0ScoKEgbN27URx99pNtuu00rV65UUlKS0tLS6ny+cePGqbCw0HHz0fny8PCott2yLEnSb37zG4WGhjq22s7xrVTd+7h9+3bdcMMNO
"text/plain": [
"<Figure size 800x500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(8,5))\n",
"sns.countplot(x='is_fraud', data=df)\n",
"plt.title('Fraud vs Non-Fraud Transactions')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 667
},
"id": "T1Rcu74DMH2F",
"outputId": "88834057-4cc9-4da6-91d9-fc5b16665d89"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TRANSACTION AMOUNT ANALYSIS\n",
"count 1.296675e+06\n",
"mean 7.035104e+01\n",
"std 1.603160e+02\n",
"min 1.000000e+00\n",
"25% 9.650000e+00\n",
"50% 4.752000e+01\n",
"75% 8.314000e+01\n",
"max 2.894890e+04\n",
"Name: amt, dtype: float64\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAHqCAYAAADVi/1VAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAnrNJREFUeJzs3XlcVXX+x/H3ZV9kVdkUFNRcUITMlJwsyyRTp70sKyvbFCu11clUbHGmprLFpZqyfhNmq01laS4ZU6KpQailMyoGKrixubJczu8Pu3e8ggZX4LC8no/HfcQ953PP+ZwLdI8fvt/P12IYhiEAAAAAAACgAbmYnQAAAAAAAABaHopSAAAAAAAAaHAUpQAAAAAAANDgKEoBAAAAAACgwVGUAgAAAAAAQIOjKAUAAAAAAIAGR1EKAAAAAAAADY6iFAAAAAAAABocRSkAAAAAAAA0OIpSAOxuv/12dezY0ew0cJKLL75YPXv2NDuNRuGdd96RxWLRzp07zU4FAIAWwWKxaPr06fV+nlWrVslisWjVqlX2bQ15D7Rz505ZLBa98847DXI+AP9DUQotjsViqdHj5A/F5mTPnj2aPn26MjMzzU6lWr/++qssFou8vLxUVFRkdjp1bvXq1Zo+fXqju7bT/R6EhYWZnZpTvv/+ew0dOlTt2rWTl5eXoqKiNGLECC1YsMAec/ToUU2fPv2sftcb6/cTACDNmTNHFotF/fr1MzuVerFgwQLNmjWrxvEdO3a0f767uLgoMDBQvXr10j333KO1a9ealldDasy5AS2Vm9kJAA3tn//8p8Pz//u//9OyZcuqbO/evXtDptVg9uzZo5SUFHXs2FHx8fEO+958801VVlaak9jv3nvvPYWFhamwsFAff/yx7rrrLlPzqWurV69WSkqKbr/9dgUGBpqdjoPLLrtMt912m8M2b29vk7Jx3kcffaQbb7xR8fHxevDBBxUUFKTs7GylpaXpzTff1M033yzpRFEqJSVF0om/xjqjMX8/AaClS01NVceOHfXjjz9q27Zt6ty5s9kp1akFCxZo06ZNmjBhQo1fEx8fr4ceekiSdOjQIf3666/66KOP9Oabb2rixIl68cUXHeKPHTsmN7fa/ZPRmbwGDhyoY8eOycPDo1bnqq3T5dahQwcdO3ZM7u7u9Xp+AFVRlEKLc8sttzg8X7NmjZYtW1Zl+6mOHj0qHx+f+kzNdGZ/EBuGoQULFujmm29Wdna2UlNTm11RqjE755xz/vD3wMYwDB0/frxRFq2mT5+uHj16aM2aNVVubvft22dSVgCAhpSdna3Vq1fr008/1b333qvU1FRNmzbN7LRM165duyqf9X/72990880366WXXlKXLl00duxY+z4vL696zef48ePy8PCQi4tLvZ/rTGyj9AE0PKbvAdWwzWHfsGGDBg4cKB8fH/3lL3+RJP3rX//SsGHDFBERIU9PT3Xq1ElPPfWUrFZrtcf45ZdfNGjQIPn4+Khdu3Z67rnnqpzv1VdfVWxsrHx8fBQUFKTzzjvPYZrRb7/9pnHjxqlr167y9vZW69atdf3111fbW6eoqEgTJ05Ux44d5enpqfbt2+u2227TgQMHtGrVKvXt21eSdMcdd9iHcNvmz1fXU+rIkSN66KGHFBkZKU9PT3Xt2lV///vfZRiGQ5zFYtH48eP12WefqWfPnvL09FRsbKyWLFlS4/f9hx9+0M6dOzVy5EiNHDlSaWlp2rVrV5W4jh07avjw4Vq1apXOO+88eXt7q1evXvZpWJ9++ql69eolLy8v9enTRxkZGVWOsXLlSl144YXy9fVVYGCgrrzySv36668OMafrsTV9+nRZLJZaX//06dP1yCOPSJKio6Pt739NeiRt2LBBF1xwgby9vRUdHa158+bZ9x0+fFi+vr568MEHq7xu165dcnV11cyZM//wHGdie8+XLl1qf89ff/11SdL8+fN1ySWXKCQkRJ6enurRo4fmzp1b5Rin60vRsWNH3X777Q7bNm/erEsuuUTe3t5q3769nn766RqP4tu+fbv69u1b7V9bQ0JCJJ3oHdG2bVtJUkpKiv17YcsvKytLt99+u2JiYuTl5aWwsDDdeeedOnjwoP1YZ/p+nqk3xanvw6FDhzRhwgT772xISIguu+wy/fTTTzW6XgBAVampqQoKCtKwYcN03XXXKTU1tUqM7f/Vf//73zV79mzFxMTIx8dHQ4YMUW5urgzD0FNPPaX27dvL29tbV155pQoKCqocZ86cOYqNjZWnp6ciIiKUnJxcZVp3dZ910on7xZNH69p6K3344Yd65pln1L59e3l5eenSSy/Vtm3bHF63ePFi/fbbb/bPH2f7gnp7e+uf//yngoOD9cwzzzjc49X2M+tMedmubeHChZoyZYratWsnHx8flZSUVNtTyuZM90DS6XtOnnrMM+V2us/tmtwv2u4Lt23bZh85HRAQoDvuuENHjx6t2TcBaMEYKQWcxsGDBzV06FCNHDlSt9xyi0JDQyWd+OBr1aqVJk2apFatWmnlypWaOnWqSkpK9Pzzzzsco7CwUJdffrmuueYa3XDDDfr444/12GOPqVevXho6dKikE1PmHnjgAV133XV68MEHdfz4cWVlZWnt2rX2aUbr1q3T6tWrNXLkSLVv3147d+7U3LlzdfHFF+uXX36xj+A6fPiwLrzwQv3666+68847de655+rAgQP6/PPPtWvXLnXv3l0zZszQ1KlTdc899+jCCy+UJF1wwQXVvgeGYejPf/6zvv32W40ZM0bx8fFaunSpHnnkEe3evVsvvfSSQ/z333+vTz/9VOPGjZOfn59eeeUVXXvttcrJyVHr1q3/8D1PTU1Vp06d1LdvX/Xs2VM+Pj56//337f/wP9m2bdt08803695779Utt9yiv//97xoxYoTmzZunv/zlLxo3bpwkaebMmbrhhhu0detWubicqMMvX75cQ4cOVUxMjKZPn65jx47p1Vdf1YABA/TTTz85fVP3R9d/zTXX6D//+Y/ef/99vfTSS2rTpo0k2Ysjp1NYWKgrrrhCN9xwg2666SZ9+OGHGjt2rDw8PHTnnXeqVatWuvrqq/XBBx/oxRdflKurq/2177//vgzD0KhRo/4w/+PHj+vAgQMO2/z8/OTp6SlJ2rp1q2666Sbde++9uvvuu9W1a1dJ0ty5cxUbG6s///nPcnNz0xdffKFx48apsrJSycnJtXoPJSk/P1+DBg1SRUWFHn/8cfn6+uqNN96o8aisDh06aMWKFdq1a5fat29fbUzbtm01d+5cjR07VldffbWuueYaSVJcXJwkadmyZdqxY4fuuOMOhYWFafPmzXrjjTe0efNmrVmzRhaL5Yzfz/3799f4eu+77z59/PHHGj9+vHr06KGDBw/q+++/16+//qpzzz23xscBAPxPamqqrrnmGnl4eOimm27S3LlztW7dOvsf506NLSsr0/3336+CggI999xzuuGGG3TJJZdo1apVeuyxx7Rt2za9+uqrevjhh/X222/bXzt9+nSlpKRo8ODBGjt2rLZu3Wo/1w8//OD0KPS//vWvcnFx0cMPP6zi4mI999xzGjVqlL330xNPPKHi4mLt2rXLfj/WqlUrp85le+3VV1+tt956S7/88otiY2Orjfujz6ya5PXUU0/Jw8NDDz/8sEpLS884Ze+P7oFqo7bvWW3vF2+44QZFR0dr5syZ+umnn/SPf/xDISEh+tvf/larPIEWxwBauOTkZOPUX4WLLrrIkGTMmzevSvzRo0erbLv33nsNHx8f4/jx41WO8X//93/2baWlpUZYWJhx7bXX2rddeeWVRmxs7BlzrO6c6enpVY4/depUQ5Lx6aefVomvrKw0DMMw1q1bZ0gy5s+fXyVm9OjRRocOHezPP/vsM0OS8fTTTzvEXXfddYbFYjG2bdtm3ybJ8PDwcNj2888/G5KMV1999YzXZxiGUVZWZrRu3dp44okn7Ntuvvlmo3fv3lViO3ToYEgyVq9ebd+2dOlSQ5Lh7e1t/Pbbb/btr7/+uiHJ+Pbbb+3b4uPjjZCQEOPgwYMOu
"text/plain": [
"<Figure size 1200x500 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Transaction Amount Analysis\n",
"print(\"TRANSACTION AMOUNT ANALYSIS\")\n",
"print(df['amt'].describe())\n",
"\n",
"plt.figure(figsize=(12,5))\n",
"plt.subplot(1,2,1)\n",
"sns.boxplot(x='is_fraud', y='amt', data=df)\n",
"plt.title('Transaction Amount by Fraud Status')\n",
"\n",
"\n",
"plt.subplot(1,2,2)\n",
"sns.histplot(data=df, x='amt', hue='is_fraud', bins=50, kde=True, element='step')\n",
"plt.title('Amount Distribution')\n",
"plt.xlim(0, 1000)\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 786
},
"id": "4CZPMlYjMBuA",
"outputId": "a43908c4-a037-48ed-de6a-848d946cc52f"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAPeCAYAAADj01PlAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3X18zvX////7sfPzzdnOGnP6xpxM5qSpkJaRRIRKzElKtjTrjbc+NaISchZj706cFEqERGFOy7kmReGdsyg2pzPnm+31+6Pfjq+j7WDYdmxzu14uxyWv5/NxPF+P5/E65OXhuefLZBiGIQAAAAAAAAAAkIudrRMAAAAAAAAAAKC4oogOAAAAAAAAAIAVFNEBAAAAAAAAALCCIjoAAAAAAAAAAFZQRAcAAAAAAAAAwAqK6AAAAAAAAAAAWEERHQAAAAAAAAAAKyiiAwAAAAAAAABgBUV0AAAAAAAAAACsoIgOAAAA2FCvXr1UuXJlW6eRpxEjRshkMun06dO2TqVE27Fjh5o1ayZ3d3eZTCbt2rXL1ikBAADgNlBEBwAAQKEzmUz5eq1fv97WqRaK48ePa8SIERRPrWjZsqXq1q2bZ9+RI0dkMpn0/vvvF3FWBSMzM1NdunTR2bNnNXHiRH322WcKDg7OM3b9+vUWvx+cnZ3l5+enli1b6t1339WpU6eKOHsAAABIkoOtEwAAAEDp99lnn1kcf/rpp0pKSsrVXrt27aJMq8gcP35cb731lipXrqwGDRpY9H300UfKzs62TWIodAcPHtQff/yhjz76SC+88EK+3jNw4EA1btxYWVlZOnXqlDZv3qzhw4drwoQJ+vLLL9WqVatCzhoAAAA3oogOAACAQvf8889bHG/dulVJSUm52v/p8uXLcnNzK8zUbM7R0dHWKcCKgvj+nTx5UpLk4+OT7/c8/PDDevrppy3afv75Z7Vu3VqdO3fWb7/9poCAgLvKCwAAAPnHdi4AAAAoFnK29EhOTlbz5s3l5uam119/XZL09ddfq127dgoMDJSzs7OqVaumUaNGKSsrK88xfvvtNz3yyCNyc3PTfffdp7Fjx+Y635QpU1SnTh25ubmpTJkyatSokebNm2fu/+OPPzRgwADVrFlTrq6uKleunLp06aIjR47kGistLU2DBg1S5cqV5ezsrKCgIPXs2VOnT5/W+vXr1bhxY0lS7969zVt1zJo1S1Lee6JfunRJr732mipWrChnZ2fVrFlT77//vgzDsIgzmUyKiYnRkiVLVLduXTk7O6tOnTpasWKFRdyFCxcUGxtrzs/X11ePPfaYdu7cma9rc/r0aXXt2lVeXl4qV66cXn31VV29etXc36JFC4WGhub53po1ayoyMjJf57kdhw4dUpcuXVS2bFm5ubnpgQce0PLlyy1iZs2aJZPJlOua5WybcuP2QTf7/lmzdu1aPfzww3J3d5ePj486dOigvXv3mvt79eqlFi1aSJK6dOkik8mkli1b3tF8Q0NDNWnSJKWlpWnq1Knm9vx8Tw8dOiSTyaSJEyfmGnfz5s0ymUz6/PPP7ygvAACAewEr0QEAAFBsnDlzRm3bttUzzzyj559/Xn5+fpL+LoZ6eHgoLi5OHh4eWrt2reLj45Wenq5x48ZZjHHu3Dm1adNGnTp1UteuXbVw4UINHTpU9erVU9u2bSX9vYXKwIED9fTTT5sLwr/88ou2bdum5557TtLfD4PcvHmznnnmGQUFBenIkSOaPn26WrZsqd9++828QvnixYt6+OGHtXfvXvXp00cNGzbU6dOntXTpUv3555+qXbu2Ro4cqfj4eL344ot6+OGHJUnNmjXL8zMwDENPPvmk1q1bp759+6pBgwZauXKlBg8erL/++itXIXTjxo1atGiRBgwYIE9PT33wwQfq3Lmzjh49qnLlykmS+vfvr4ULFyomJkYhISE6c+aMNm7cqL1796phw4a3vC5du3ZV5cqVNXr0aG3dulUffPCBzp07p08//VSS1KNHD/Xr10979uyx2Nt8x44d+t///qc33njjlufIysrK8wGm586dy9WWmpqqZs2a6fLlyxo4cKDKlSun2bNn68knn9TChQv11FNP3fJ8ebH2/cvL6tWr1bZtW1WtWlUjRozQlStXNGXKFD344IPauXOnKleurJdeekn33Xef3n33XfMWLTcb81aefvpp9e3bV6tWrdI777wjKX/f06pVq+rBBx/U3LlzNWjQIIsx586dK09PT3Xo0OGO8wIAACj1DAAAAKCIRUdHG/+8FW3RooUhyUhMTMwVf/ny5VxtL730kuHm5mZcvXo11xiffvqpue3atWuGv7+/0blzZ3Nbhw4djDp16tw0x7zOuWXLllzjx8fHG5KMRYsW5YrPzs42DMMwduzYYUgyZs6cmSsmKirKCA4ONh8vWbLEkGS8/fbbFnFPP/20YTKZjAMHDpjbJBlOTk4WbT///LMhyZgyZYq5zdvb24iOjr7pfPMyfPhwQ5Lx5JNPWrQPGDDAkGT8/PPPhmEYRlpamuHi4mIMHTrUIm7gwIGGu7u7cfHixZueJ+e63ew1btw4c3xsbKwhyfjhhx/MbRcuXDCqVKliVK5c2cjKyjIMwzBmzpxpSDIOHz5scb5169YZkox169blyiGv719eGjRoYPj6+hpnzpwxt/3888+GnZ2d0bNnz1znWrBgwS3HzE9saGioUaZMGfNxfr+n//3vfw1Jxt69e81tGRkZRvny5Y2oqKhb5gYAAHAvYzsXAAAAFBvOzs7q3bt3rnZXV1fzry9cuKDTp0/r4Ycf1uXLl7Vv3z6LWA8PD4u91p2cnNSkSRMdOnTI3Obj46M///xTO3bssJrLjefMzMzUmTNnVL16dfn4+Fhsg/LVV18pNDQ0z9XPJpPpFjPO7dtvv5W9vb0GDhxo0f7aa6/JMAx99913Fu0RERGqVq2a+bh+/fry8vLKNd9t27bp+PHjt52PJEVHR1scv/LKK+ZcJcnb21sdOnTQ559/bt5yJisrS/Pnz1fHjh3l7u5+y3NUrlxZSUlJuV5z5szJFfvtt9+qSZMmeuihh8xtHh4eevHFF3XkyBH99ttvdzRPa9+/fzpx4oR27dqlXr16qWzZsub2+vXr67HHHjN/LoXBw8NDFy5cMB/n93vatWtXubi4aO7cuea2lStX6vTp07d8NgEAAMC9jiI6AAAAio377rtPTk5Oudp//fVXPfXUU/L29paXl5cqVKhgLvydP3/eIjYoKChX8bpMmTIW24IMHTpUHh4eatKkiWrUqKHo6Ght2rTJ4j1XrlxRfHy8eV/y8uXLq0KFCkpLS7M458GDBy22MLlbf/zxhwIDA+Xp6WnRXrt2bXP/jSpVqpRrjH/Od+zYsdqzZ48qVqyoJk2aaMSIERZF9lupUaOGxXG1atVkZ2dnse92z549dfToUf3www+S/t7uJDU1VT169MjXOdzd3RUREZHr9eCDD+aK/eOPP1SzZs1c7dY+o/yy9v3L6/ySrOZw+vRpXbp06Y5yuJWLFy9afDfy+z318fFR+/btLfb9nzt3ru677z61atWqUHIFAAAoLSiiAwAAoNi4cVVtjrS0NLVo0UI///yzRo4cqW+++UZJSUkaM2aMJCk7O9si3t7ePs+xjRseylm7dm3t379fX3zxhR566CF99dVXeuihhzR8+HBzzCuvvKJ33nlHXbt21ZdffqlVq1YpKSlJ5cqVy3VOW8rPfLt27apDhw5pypQpCgwM1Lhx41SnTp1cq9rzK68V9pGRkfLz8zOvHJ8zZ478/f0VERFxR+coCNZ+EuCfD6TNkdf3rzjJzMzU//73P1WvXt3cdjvf0549e+rQoUPavHmzLly4oKVLl+rZZ5+VnR1/LQQAALgZHiwKAACAYm39+vU6c+aMFi1apObNm5vbDx8+fFfjuru7q1u3burWrZsyMjLUqVMnvfPOOxo2bJhcXFy0cOFCRUVFafz48eb3XL16VWlpaRbjVKtWTXv27LnpuW5nW5fg4GCtXr1aFy5csFhxnLNtTXBwcL7HulFAQIAGDBigAQMG6OTJk2rYs
"text/plain": [
"<Figure size 1500x1000 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Time-Based Analysis\n",
"df['trans_date_trans_time'] = pd.to_datetime(df['trans_date_trans_time'])\n",
"df['hour'] = df['trans_date_trans_time'].dt.hour\n",
"df['day_of_week'] = df['trans_date_trans_time'].dt.dayofweek\n",
"df['month'] = df['trans_date_trans_time'].dt.month\n",
"\n",
"plt.figure(figsize=(15,10))\n",
"\n",
"plt.subplot(3,1,1)\n",
"sns.countplot(x='hour', hue='is_fraud', data=df)\n",
"plt.title('Transactions by Hour of Day')\n",
"\n",
"plt.subplot(3,1,2)\n",
"sns.countplot(x='day_of_week', hue='is_fraud', data=df)\n",
"plt.title('Transactions by Day of Week')\n",
"\n",
"plt.subplot(3,1,3)\n",
"sns.countplot(x='month', hue='is_fraud', data=df)\n",
"plt.title('Transactions by Month')\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 667
},
"id": "h7h0O8FWMBb3",
"outputId": "ecda1612-7a93-4bd2-d19c-f79c6326feea"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CATEGORY ANALYSIS\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1200x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Category Analysis\n",
"print(\"CATEGORY ANALYSIS\")\n",
"plt.figure(figsize=(12,6))\n",
"category_fraud = df.groupby('category')['is_fraud'].mean().sort_values(ascending=False)\n",
"category_fraud.plot(kind='bar')\n",
"plt.title('Fraud Percentage by Category')\n",
"plt.ylabel('Fraud Percentage')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 511
},
"id": "y1jJD0sEL_Ji",
"outputId": "95543981-d7ba-4804-a429-435a7c21c601"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"GEOGRAPHIC ANALYSIS\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAHqCAYAAADVi/1VAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbp5JREFUeJzt3XlcFWX///E3O7iA4gIuiFtuuWCYSOVOkpGWW2reimhaJlpyt0iaa2lZqVkYt6Vi5ZamVmrua4lWmpaZliuWgpoBigoK8/vDH+fbEVBAmCP4ej4e51Fn5pqZz3U8cC7eZ+YaO8MwDAEAAAAAAAAmsrd1AQAAAAAAALj7EEoBAAAAAADAdIRSAAAAAAAAMB2hFAAAAAAAAExHKAUAAAAAAADTEUoBAAAAAADAdIRSAAAAAAAAMB2hFAAAAAAAAExHKAUAAAAAAADTEUoBxUz//v1VvXp1W5eRK1u2bJGdnZ22bNli61JsJvM1WLp0qa1LuSNUr15d/fv3t3UZAAAgn/IyvmMcdOdq06aN2rRpY+sycBcglEKRZGdnl6tHcQ07Tp06pXHjxmnv3r22LsXi+PHjVq+9k5OTypcvrwceeECvvvqq4uLiCuxYkyZN0ooVKwpsf3eDcePG5fhzEh0dbevy8uzixYsaO3asGjZsqJIlS6pcuXLy8/PT888/r1OnTlnarV69WuPGjbutY/F+A4Cbu5PGZR9++KF69OihatWqyc7O7qZfdCQmJmrw4MGqUKGCSpYsqbZt22rPnj25Ok5GRoY++eQTBQQEyNPTU6VLl1adOnXUr18/7dy509LuwIEDGjdunI4fP57vPi1YsEDTp0/P9/Z3gsLqQ0xMjOX99e2332ZZbxiGfHx8ZGdnp8cee6zAjy/lfVz+75pvfIwcObJQagTuZI62LgDIj08//dTq+SeffKL169dnWV6/fn0zyzLNqVOnNH78eFWvXl1+fn5W6z766CNlZGTYpjBJvXv31qOPPqqMjAz9888/+uGHHzR9+nS99957mj17tnr16mVp26pVK12+fFnOzs55OsakSZPUvXt3PfHEEwVcffH34YcfqlSpUlbLAgICbFRN/ly9elWtWrXSwYMHFRoaqmHDhunixYv69ddftWDBAnXp0kWVK1eWdD2UioqKuq1givcbANzcnTQue+utt3ThwgU1b95cp0+fzrFdRkaGQkJCtG/fPr300ksqX768Zs6cqTZt2mj37t265557bnqc4cOHKyoqSo8//rj69OkjR0dHHTp0SN98841q1qypFi1aSLoeSo0fP15t2rTJ95nsCxYs0P79+/XCCy/ka3uzZTe+K+w+uLq6asGCBXrooYeslm/dulV//vmnXFxcCuW40s3H5TczYcIE1ahRw2pZw4YNC7g64M5HKIUi6T//+Y/V8507d2r9+vVZlt/o0qVLKlGiRGGWZnNOTk42Pf59992X5d/hxIkT6tChg0JDQ1W/fn01adJEkmRvby9XV1dblHnX6t69u8qXL5+rtikpKSpZsmQhV5R3K1as0E8//aT58+frqaeeslp35coVpaWl2agyALg75XdcVhi2bt1qOUvqxi9h/m3p0qXasWOHlixZou7du0uSnnzySdWpU0djx47VggULctw2ISFBM2fO1KBBgzRr1iyrddOnT9fZs2cLpjNFlC3Gd48++qiWLFmiGTNmyNHx//7EXbBggfz9/XXu3DlT68mNjh07qlmzZrlqe+XKFTk7O8vengudUPzwrkax1aZNGzVs2FC7d+9Wq1atVKJECb366quSpC+//FIhISGqXLmyXFxcVKtWLU2cOFHp6enZ7uPAgQNq27atSpQooSpVqmjKlClZjvf+++/r3nvvVYkSJVS2bFk1a9bMakBz4sQJPffcc6pbt67c3NxUrlw59ejRI9vTuRMTEzVixAhVr15dLi4uqlq1qvr166dz585py5Ytuv/++yVJYWFhltN9Y2JiJGU/p1RKSor++9//ysfHRy4uLqpbt67eeecdGYZh1c7Ozk7h4eFasWKFGjZsKBcXF917771as2ZNXl9+K76+voqJiVFaWprVa5fdnAN//PGHunXrJm9vb7m6uqpq1arq1auXkpKSLDWmpKRo3rx5lr5nnpqf29c487Tp7777ThEREZbT9rt06ZLtQPKbb75R69atVbp0abm7u+v+++/PMljdtWuXHnnkEXl4eKhEiRJq3bq1vvvuu1y/Runp6Xr11Vfl7e2tkiVLqnPnzjp58qRl/dixY+Xk5JRtfYMHD1aZMmV05cqVXB/vRpmvydatW/Xcc8+pYsWKqlq1qqTcv66ZlwjmtO9/tzcMQ6+//rqqVq2qEiVKqG3btvr1119zVeuRI0ckSQ8++GCWda6urnJ3d5d0/WchKipKkvWlJZneeecdPfDAAypXrpzc3Nzk7++fZU6Lm73fcpq/LbvXYf369XrooYdUpkwZlSpVSnXr1rX8PgKAu0FexyLz589X3bp15erqKn9/f23bti1Xx/H19c32s+hGS5culZeXl7p27WpZVqFCBT355JP68ssvlZqamuO2x44dk2EY2X4O2dnZqWLFipKuf/716NFDktS2bdsslzHmZjzapk0brVq1SidOnLBs/+/PntTUVI0dO1a1a9eWi4uLfHx89PLLL2epPz+fQ127dtV9991ntaxTp06ys7PTV199ZVm2a9cu2dnZ6ZtvvpGUdXx3qz5I189ce+ONN1S1alW5urqqffv2Onz48E3r+7fevXvr77//1vr16y3L0tLStHTp0ixfYGXK7XvyZq/drcbl+ZH5+i1atEijR49WlSpVVKJECSUnJ+v8+fN68cUX1ahRI5UqVUru7u7q2LGj9u3bZ7WP7MZe/973jZfSzpo1S7Vq1ZKbm5uaN2+u7du357t+IK84UwrF2t9//62OHTuqV69e+s9//iMvLy9J139RlypVShERESpVqpQ2bdqkMWPGKDk5WW+//bbVPv755x898sgj6tq1q5588kktXbpUr7zyiho1aqSOHTtKun7J3PDhw9W9e3c9//zzunLlin7++Wft2rXL8kH4ww8/aMeOHerVq5eqVq2q48eP68MPP1SbNm104MAByxlcFy9eVMuWLfXbb79pwIABuu+++3Tu3Dl99dVX+vPPP1W/fn1NmDBBY8aM0eDBg9WyZUtJ0gMPPJDta2AYhjp37qzNmzdr4MCB8vPz09q1a/XSSy/pr7/+0rRp06zaf/vtt1q2bJmee+45lS5dWjNmzFC3bt0UFxencuXK5fvfIjAwULVq1bIaLNwoLS1NwcHBSk1N1bBhw+Tt7a2//vpLK1euVGJiojw8PPTpp5/q6aefVvPmzTV48GBJUq1atfL0GmcaNmyYypYtq7Fjx+r48eOaPn26wsPDtXjxYkubmJgYDRgwQPfee68iIyNVpkwZ/fTTT1qzZo3l33bTpk3q2LGj/P39NXbsWNnb22vu3Llq166dtm/frubNm9/y9XnjjTdkZ2enV155RWfOnNH06dMVFBSkvXv3ys3NTX379tWECRO0ePFihYeHW71mS5cuVbdu3XL1reT58+etnjs4OKhs2bKW588995wqVKigMWPGKCUlJV+va26MGTNGr7/+uh599FE9+uij2rNnjzp06JCrs5x8fX0lXb88ZPTo0Tn+8fHMM8/o1KlT2V5CIknvvfeeOnfurD59+igtLU2LFi1Sjx49tHLlSoWEhEjSTd9vufXrr7/qscceU+PGjTVhwgS5uLjo8OHDeQotAaAoy+tYZOvWrVq8eLGGDx8uFxcXzZw5U4888oi+//77Aru86aefftJ9992X5cyT5s2ba9asWfr999/VqFGjbLfN/BxasmSJevTokePnYKtWrTR8+HDNmDFDr776quXyxcz/5mY8OmrUKCUlJenPP/+0vE6ZZ4BlZGSoc+fO+vbbbzV48GDVr19fv/zyi6ZNm6bff//dMh9ifj+HWrZsqS+//FLJyclyd3eXYRj67rvvZG9vr+3bt6tz586SpO3bt8ve3j7bkO5Wfcj05ptvyt7eXi+++KKSkpI0Z
"text/plain": [
"<Figure size 1200x500 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Geographic Analysis\n",
"print(\"GEOGRAPHIC ANALYSIS\")\n",
"df['distance'] = np.sqrt((df['lat']-df['merch_lat'])**2 + (df['long']-df['merch_long'])**2)\n",
"\n",
"plt.figure(figsize=(12,5))\n",
"plt.subplot(1,2,1)\n",
"sns.boxplot(x='is_fraud', y='distance', data=df)\n",
"plt.title('Transaction Distance by Fraud Status')\n",
"\n",
"plt.subplot(1,2,2)\n",
"fraud_by_state = df[df['is_fraud']==1]['state'].value_counts().head(10)\n",
"fraud_by_state.plot(kind='bar')\n",
"plt.title('Top 10 States with Most Fraud')\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 511
},
"id": "tRqMouOAL73Z",
"outputId": "b4a18c45-1518-4509-b6c8-71bbf758a230"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"DEMOGRAPHIC ANALYSIS\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAHqCAYAAADVi/1VAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAeDVJREFUeJzt3X98z/X+//H7e79n9sP82MjG/JzfNJmphJZxJErCEfMjDm2KFSfnaDRpUn6lsZzjVyeOOMUpaogQ5tekRIlSc2KjtI1hY3t9/+i718fbxjY/3u+x2/VyeV3a+/l8vp+vx/s9771f3d+v9/NlMQzDEAAAAAAAAGBDDvYuAAAAAAAAAOUPoRQAAAAAAABsjlAKAAAAAAAANkcoBQAAAAAAAJsjlAIAAAAAAIDNEUoBAAAAAADA5gilAAAAAAAAYHOEUgAAAAAAALA5QikAAAAAAADYHKEUcAf56aefZLFYtHjx4tu+r8WLF8tiseinn34y22rXrq1HH330tu9bkjZv3iyLxaLNmzfbZH9XsuXjLOsmTZoki8Vi7zIAAMBt0KFDB3Xo0KHYcRaLRdHR0be/oDKspM8VgNIhlEK5M3fuXFksFoWGhtq7FFksFnNzcnKSr6+vQkJC9Pzzz+vQoUO3bD9z5861SZB1I8pybbdTQcBY1Na2bVt7l3dDPv74Yz300EOqVq2aKlSooDp16uipp55SUlKSOebEiROaNGmS9u/ff8P7+eSTTzRp0qSbLxgAgNuk4MO9oraXXnrJ3uWVaadOndJLL72kZs2aqWLFinJzc1O9evU0ePBgbdu2zd7lAbjFnOxdAGBrS5cuVe3atbV7924dPXpU9erVs2s9jzzyiAYOHCjDMJSZmamvvvpKS5Ys0dy5c/X6668rJibGHFurVi1duHBBzs7OpdrH3LlzVaVKFQ0aNKjE9xkwYID69u0rV1fXUu2rtK5VW/v27XXhwgW5uLjc1v3bW79+/fSnP/3Jqq1q1ap2qubGvfnmmxo7dqweeughjR8/XhUqVNDRo0f12Wefafny5erSpYukP0KpV155RbVr11bLli1vaF+ffPKJEhISCKYAAGVeXFycgoKCrNqaNm1qp2rKvt27d6tbt246e/as+vbtqxEjRsjV1VXHjh3T6tWrtXjxYm3ZskXt27e3d6kAbhFCKZQrx44d044dO/Thhx/qL3/5i5YuXaqJEyfataYGDRro6aeftmqbOnWqunfvrhdeeEHBwcFmaGGxWOTm5nZb68nOzpaHh4ccHR3l6Oh4W/d1PQ4ODrf9sZYF9957b6Hf/7Xk5+crNze3zD0vly9f1uTJk/XII49o/fr1hfpPnTplh6oAALC/rl27qnXr1iUae/HiRbm4uMjBoXx+meX3339Xz5495eTkpP379ys4ONiq/9VXX9Xy5cvl7u5upwpvnbJ6TAfYQ/n8i4dya+nSpapUqZK6deumJ598UkuXLi1y3G+//aYBAwbIy8tLPj4+ioyM1FdffVXkek7fffednnzySfn6+srNzU2tW7fWRx99dFN1Vq5cWcuXL5eTk5OmTJlithe1plRaWpoGDx6smjVrytXVVdWrV1ePHj3MtaBq166tgwcPasuWLeZp4wXfhy84tXzLli169tlnVa1aNdWsWdOq78o1pQqsX79eLVu2lJubmxo3bqwPP/zQqv9a6xBdPef1arvWmlIrV65USEiI3N3dVaVKFT399NP65ZdfrMYMGjRIFStW1C+//KKePXuqYsWKqlq1ql588UXl5eUV8+yX7HH++OOPslgsmjlzZqH77dixQxaLRf/+979LvK+iFKzfsHTpUjVp0kSurq7mV+HefPNNtWvXTpUrV5a7u7tCQkL0n//8x+r+11uDzGKxFDrTaNu2bbrvvvvk5uamunXr6p133ilRnb/++quysrJ0//33F9lfrVo1SX/8Tu+77z5J0uDBg83feUF9X3zxhXr37q3AwEC5uroqICBAY8aM0YULF8y5Bg0apISEBPMxFGwF8xf1b+ZGXjcAANxOBe9Zy5cv14QJE3TPPfeoQoUKysrK0pkzZ/Tiiy+aX1/z8vJS165d9dVXX1nNca1jtWu9H86fP19169aVu7u72rRpoy+++KLUdS9dulQNGzaUm5ubQkJCtHXrVrPv888/l8Vi0apVqwrdb9myZbJYLEpOTr7m3ImJiTp58qRmzZpVKJCS/njf79evn3ksUeCXX37RkCFD5OfnJ1dXVzVp0kQLFy60GlPwnKxYsUJTpkxRzZo15ebmpocfflhHjx4ttK+SPlc5OTmaOHGi6tWrZx67jBs3Tjk5OYVqv9YxHVDecaYUypWlS5fqiSeekIuLi/r166d58+Zpz549Vm9u+fn56t69u3bv3q2RI0cqODhY//3vfxUZGVlovoMHD+r+++/XPffco5deekkeHh5asWKFevbsqQ8++ECPP/74DdcaGBiohx56SJ9//rmysrLk5eVV5LhevXrp4MGDGjVqlGrXrq1Tp05pw4YNSk1NVe3atTVr1iyNGjVKFStW1N///ndJkp+fn9Uczz77rKpWrarY2FhlZ2dft64jR46oT58+GjFihCIjI7Vo0SL17t1bSUlJeuSRR0r1GEtS25UWL16swYMH67777lN8fLzS09M1e/Zsbd++XV9++aV8fHzMsXl5eYqIiFBoaKjefPNNffbZZ5o+fbrq1q2rkSNHFltbcY+zTp06uv/++7V06VKNGTPG6r5Lly6Vp6enevToUex+zp8/r19//dWqzdvb2/yK5qZNm7RixQpFR0erSpUqql27tiRp9uzZeuyxx9S/f3/l5uZq+fLl6t27t9asWaNu3boVu9+rHThwQJ07d1bVqlU1adIkXb58WRMnTrzu76NAtWrV5O7uro8//lijRo2Sr69vkeMaNWqkuLg4xcbGavjw4XrwwQclSe3atZP0R+B4/vx5jRw5UpUrV9bu3bs1Z84c/e9//9PKlSslSX/5y1904sQJbdiwQf/6179K/TgLFPe6AQDgVsjMzCz0Pl+lShXz58mTJ8vFxUUvvviicnJy5OLiokOHDmn16tXq3bu3goKClJ6ernfeeUcPPfSQDh06pBo1apS6jgULFugvf/mL2rVrp9GjR+vHH3/UY489Jl9fXwUEBJRoji1btuj999/Xc889J1dXV82dO1ddunTR7t271bRpU3Xo0EEBAQFaunRpoWPgpUuXqm7dugoLC7vm/B9//LHc3d31xBNPlPhxpaenq23btmboU7VqVX366acaOnSosrKyNHr0aKvxU6dOlYODg1588UVlZmZq2rRp6t+/v3bt2lXq5yo/P1+PPfaYtm3bpuHDh6tRo0Y6cOCAZs6cqe+//16rV6+22ve1jumAcs8Ayom9e/cakowNGzYYhmEY+fn5Rs2aNY3nn3/eatwHH3xgSDJmzZpltuXl5RmdOnUyJBmLFi0y2x9++GGjWbNmxsWLF822/Px8o127dkb9+vWLrUmSERUVdc3+559/3pBkfPXVV4ZhGMaxY8esavj9998NScYbb7xx3f00adLEeOihhwq1L1q0yJBkPPDAA8bly5eL7Dt27JjZVqtWLUOS8cEHH5htmZmZRvXq1Y1WrVqZbRMnTjSK+vNS1JzXqu3zzz83JBmff/65YRiGkZuba1SrVs1o2rSpceHCBXPcmjVrDElGbGys2RYZGWlIMuLi4qzmbNWqlRESElJoX1cr6eN85513DEnGt99+a7bl5uYaVapUMSIjI6+7j4LfZVFbwWOWZDg4OBgHDx4sdP/z589b3c7NzTWaNm1qdOrUqdA+rvw3W0CSMXHiRPN2z549DTc3N+Pnn3822w4dOmQ4OjoW+bu8WmxsrCHJ8PDwMLp27WpMmTLFSElJKTRuz54916zp6sdkGIYRHx9vWCwWq7qioqKKrOnqfzMFbvR1AwDAjSo45ilqM4z/e8+qU6dOofe/ixcvGnl5eVZtx44dM1xdXa2ObYo6rrpy7quPoVq2bGnk5OSY4+bPn29IKvI47GoFte/du9ds+/nnnw03Nzfj8ccfN9vGjx9vu
"text/plain": [
"<Figure size 1200x500 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Demographic Analysis\n",
"print(\"DEMOGRAPHIC ANALYSIS\")\n",
"df['dob'] = pd.to_datetime(df['dob'])\n",
"df['age'] = (pd.to_datetime('today') - df['dob']).dt.days // 365\n",
"\n",
"plt.figure(figsize=(12,5))\n",
"plt.subplot(1,2,1)\n",
"sns.boxplot(x='is_fraud', y='age', data=df)\n",
"plt.title('Age Distribution by Fraud Status')\n",
"\n",
"plt.subplot(1,2,2)\n",
"sns.countplot(x='gender', hue='is_fraud', data=df)\n",
"plt.title('Fraud by Gender')\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 716
},
"id": "1oP9bUGwL4tg",
"outputId": "78767681-958e-4b4e-9906-b07051a62502"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CORRELATION ANALYSIS\n"
]
},
{
"data": {
"image/png": "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WrRoke26OnbsaNW/Pzo62tKNJS4uTufOndO5c+eUnJysxx9/XFu3blVmZmaOsV2/rvPnz+vcuXN66KGHdPHiRcXExORp/6538uRJRUdH6/XXX1e5cuUs5bVr11azZs0sx+J6b775ptXzhx56SHFxcZbjnBft27fX5s2bderUKW3cuFGnTp3KtmuPdGUcwLVxEBkZGYqLi1OpUqVUrVo1/fHHH3neprOzszp16pSnus2bN1f37t01YsQItWvXTi4uLvr000/zvC0AQMHRvQdAvpQpU0bSlSQ5L/7++28ZjUYFBgZalVeuXFnu7u76+++/rcr9/PxyXNeNrx08eFDSlS8DOUlMTJSHh0e2r/3vf//T4MGDtXHjxixJdmJiYo7rzMm1fbm+S9I1ISEhWrdunZKTk+Xm5mYp9/b2tqp3LVaTyWQ51jfz5JNPqnTp0lq0aJGio6NVv359BQYGZntPgszMTE2ePFnTp0/XX3/9ZTV+oXz58nnaniR5eXnla9DuuHHjtGLFCkVHR2vhwoWqWLFinpcFABQcST+AfClTpow8PT21d+/efC1nMBjyVC+7mXpyeu1aK/4nn3yS47SSOfW/T0hIUNOmTVWmTBmNGDFCAQEBcnFx0R9//KEBAwbk+gtBYXJwcMi23Gw253kdzs7OateunebOnavDhw9r2LBhOdYdPXq0IiMj1blzZ40cOVLlypWT0WjUu+++m699zu08ZWfnzp06c+aMJGnPnj16+eWX87U8AKBgSPoB5NvTTz+tWbNmadu2bWrUqFGudX18fJSZmamDBw8qJCTEUn769GklJCTIx8fH5jgCAgIkXfkiEh4enq9lN2/erLi4OH333Xd6+OGHLeV//fVXlrp5/cJybV8OHDiQ5bWYmBhVqFDBqpW/MLVv315ffPGFjEajXnrppRzrLVmyRI8++qg+//xzq/KEhARVqFDB8jyv+5wXycnJ6tSpk6pXr67GjRtr7Nixatu2rWWGIADArUeffgD51r9/f7m5ualr1646ffp0ltcPHTqkyZMnS7rS9URSljvaTpgwQZL01FNP2RxHWFiYAgICNG7cOF24cCHL62fPns1x2Wst7Ne3qKempmr69OlZ6rq5ueWpu0+VKlUUGhqquXPnWk2huXfvXq1fv95yLG6FRx99VCNHjtTUqVNVuXLlHOs5ODhk+RVh8eLF+ueff6zKrn05uX4/bDVgwAAdPXpUc+fO1YQJE+Tr66uOHTtmmbIVAHDr0NIPIN8CAgK0cOFCvfjiiwoJCbG6I++vv/6qxYsX6/XXX5ck1alTRx07dtSsWbMsXWp+++03zZ07V23atNGjjz5qcxxGo1GfffaZWrZsqRo1aqhTp07y8vLSP//8o02bNqlMmTJatWpVtss2btxYHh4e6tixo3r37i2DwaD58+dn260mLCxMixYtUkREhOrXr69SpUqpVatW2a73k08+UcuWLdWoUSN16dLFMmVn2bJlc+12U1BGo1GDBw++ab2nn35aI0aMUKdOndS4cWPt2bNHX331lfz9/a3qBQQEyN3dXTNnzlTp0qXl5uamhg0b5jrmIjsbN27U9OnTNXToUMsUol9++aUeeeQRRUZGauzYsflaHwDARkU7eRCA4uzPP/80d+vWzezr62t2cnIyly5d2tykSRNzV
"text/plain": [
"<Figure size 1000x800 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Correlation Analysis\n",
"print(\"CORRELATION ANALYSIS\")\n",
"numeric_cols = ['amt', 'city_pop', 'distance', 'age']\n",
"corr_matrix = df[numeric_cols + ['is_fraud']].corr()\n",
"\n",
"plt.figure(figsize=(10,8))\n",
"sns.heatmap(corr_matrix, annot=True, cmap='coolwarm', center=0)\n",
"plt.title('Correlation Matrix')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 564
},
"id": "Kqxc67LYL1K_",
"outputId": "b1a984e1-3fd2-4f46-c26d-d8082d975884"
},
"outputs": [
{
"data": {
"image/png": "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iZiYGLz55pv48ssvBzx/e3s7li9fjquvvhrf/e53ER0dDQB49dVXodFocM8990Cj0WD9+vW4//77YbFY8MQTTwQdo7OzExdccAGuvPJKXHPNNXj77bfxk5/8BDKZDDfddFPQvo8++ijEYjF+9rOfwWw24/HHH8d1112Hbdu2nfB5+sEPfoBXX30Vy5cvxw9/+EN4vV5s3LgRW7duHbQGzFBcf/31+Oyzz/D5558jKytrwH3+9re/4Y477sDll18euJjdv38/tm3bhmuvvRYrV67EkSNH8NZbb+HPf/4zTCYTgOCpRuvXr8fbb7+N22+/HSaT6aQhxpVXXomUlBQ88sgj2Lp1K5599ll0dnbiX//61yk9vqH0ra+hvs96ne7reejQIcyfPx86nQ733nsvpFIpXnrpJSxcuDAQNKxcuRIGgwF33313YCqXRqM56WN2OBz9Cmbr9frAiLLBXotnnnkGK1aswHXXXQePx4P//Oc/uOKKK7BmzRpceOGFJz3v8Q4cOIDzzjsPkZGRePDBB+H1evHAAw8EfsdOZvPmzTAajf1CnuTkZHzxxRdDmvp0qr/HF110Ea6++mpcccUVeOGFF3D11VfjjTfewF133YUf//jHuPbaa/HEE0/g8ssvR21tLbRabdAxTud963A4cM4556C+vh633HILkpKSsHnzZtx3331obGzE008/HbT/1KlT8ec//xmHDh3ChAkThvBMEhHRWUkgIiIah8xmswBAuPTSS/u1dXZ2Cq2trYEfh8MRaFuyZIlQUFAguFyuwDa/3y/MmTNHyMzMDGy76667BADCxo0bA9usVquQmpoqpKSkCD6fTxAEQXjyyScFAMLq1asD+zmdTiEnJ0cAIHz55ZeB7eecc44AQHjxxRf79blvH3vdcsstgkqlCupr7zGefPLJwDa32y1MmjRJiIqKEjwejyAIgvDll18KAITc3FzB7XYH9n3mmWcEAMKBAwcC22644QYhOTk5cHv9+vUCAOGOO+7o1ye/399vW1833HCDoFarB23fs2ePAEC4++67gx7TOeecE7h9ySWXCPn5+Sc8zxNPPCEAECorK/u1ARDEYrFw6NChAdseeOCBwO0HHnhAACCsWLEiaL9bb71VACDs27dPEARBqKysFAAIr7zyykmPeaK+JScnCzfccEPg9lDfZ6fyeg7k0ksvFWQymVBeXh7Y1tDQIGi1WmHBggWBbb2P84knnjjh8fruO9BP7/v+RK/F8e95j8cjTJgwQVi8eHG/cwzleb/00ksFhUIhVFdXB7YVFRUJEolEGMqftPPmzROmTp3ab/vBgwcFpVIpABAmTZok3HnnncLq1asFu91+0sckCCf+PX7zzTcD24qLiwPP19atWwPbP/30037PwVDft4LQ/z33+9//XlCr1cKRI0eC7vvLX/5SkEgkQk1NTdD2zZs3CwCE//73v/0eGxERhQ5O+yIionHJYrEAwIAjExYuXIjIyMjAz3PPPQcA6OjowPr163HllVfCarWira0NbW1taG9vx7Jly1BaWor6+noAwMcff4wZM2Zg3rx5geNqNBr86Ec/QlVVFYqKigAAa9euRXx8PFasWBHYT6FQDLpUtFwux/e///1+25VKZeD/e/s2f/58OBwOFBcXB+0bFhaGW265JXBbJpPhl
"text/plain": [
"<Figure size 1400x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Geographic Distribution of Fraud\n",
"plt.figure(figsize=(14,6))\n",
"sns.scatterplot(x='long', y='lat', hue='is_fraud', data=df.sample(10000), alpha=0.6)\n",
"plt.title('Geographic Distribution of Fraud (Sample)')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ljcm6jdXLvF5",
"outputId": "7039b12c-99ca-452f-cfe2-52f5dfaca305"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"KEY FINDINGS SUMMARY\n",
"1. Fraud Rate: 0.58% of transactions are fraudulent\n",
"2. Fraud Amount: Median fraud amount is $396.50\n",
"3. Risky Hours: Highest fraud occurs between 22:00-23:00\n",
"4. Risky Categories: Top 3 risky categories - ['shopping_net', 'misc_net', 'grocery_pos']\n",
"5. Distance Impact: Median distance for fraud is 0.80 vs 0.80 for legit transactions\n",
"6. Age Impact: Median age for fraud is 53.00 vs 49.00 for legit transactions\n"
]
}
],
"source": [
"# Key Findings Summary\n",
"print(\"KEY FINDINGS SUMMARY\")\n",
"print(f\"1. Fraud Rate: {fraud_percentage[1]:.2f}% of transactions are fraudulent\")\n",
"print(f\"2. Fraud Amount: Median fraud amount is ${df[df['is_fraud']==1]['amt'].median():.2f}\")\n",
"print(f\"3. Risky Hours: Highest fraud occurs between {df.groupby('hour')['is_fraud'].mean().idxmax()}:00-{df.groupby('hour')['is_fraud'].mean().idxmax()+1}:00\")\n",
"print(f\"4. Risky Categories: Top 3 risky categories - {category_fraud.head(3).index.tolist()}\")\n",
"print(f\"5. Distance Impact: Median distance for fraud is {df[df['is_fraud']==1]['distance'].median():.2f} vs {df[df['is_fraud']==0]['distance'].median():.2f} for legit transactions\")\n",
"print(f\"6. Age Impact: Median age for fraud is {df[df['is_fraud']==1]['age'].median():.2f} vs {df[df['is_fraud']==0]['age'].median():.2f} for legit transactions\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "NaDQni_yLwoo"
},
"outputs": [],
"source": []
}
],
"metadata": {
"colab": {
"provenance": []
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
}