Jeremiah95-Feng/fraud-detection-data-analysis

GitHub: Jeremiah95-Feng/fraud-detection-data-analysis

基于 Pandas 和 NumPy 构建的统计分析管道,对 51,000 笔金融交易数据进行清洗、异常值检测和欺诈风险评分。

Stars: 0 | Forks: 0

# 🔍 欺诈检测数据分析系统 **课程:** 商业数据分析 (MGT174) — COMSATS University Islamabad **提交给:** Sir Ali Usama **团队:** Alisha Malik | Jeremiah Huang | Minahil Javed **日期:** 2026年3月29日 ## 📌 项目概述 本项目使用 Python 的统计技术分析了来自 Kaggle 数据集的 51,000 笔金融交易,以识别可疑模式。该 pipeline 涵盖了完整的数据分析工作流:加载、清洗、异常值检测、行为分组、特征工程、风险评分和可视化。 ## 📂 数据集 - **来源:** Kaggle — 欺诈检测数据集 - **文件:** `Fraud_Detection_Dataset.csv` - **形状:** 51,000 行 × 12 列 - **关键列:** Transaction_Amount, Transaction_Type, Time_of_Transaction, Device_Used, Location, Previous_Fraudulent_Transactions, Account_Age, Number_of_Transactions_Last_24H, Payment_Method, Fraudulent ## 🛠️ 使用的库 | 库 | 用途 | |---|---| | Pandas | 数据加载、清洗、分组 | | NumPy | Z-score 计算、统计测量 | | Matplotlib | 数据可视化 | ## 📋 Pipeline 摘要 ### 1. 加载与探索数据集 - 将 CSV 加载到 Pandas DataFrame 中 - 使用 `.head()`、`.tail()`、`.info()`、`.describe()`、`.shape` 探索结构 ### 2. 处理缺失值 - 识别出 5 个包含缺失数据的列(每列有 2,469–2,552 个空值) - 数值列 (Transaction_Amount, Time_of_Transaction) → 用**平均值**填充 - 类别列 (Device_Used, Location, Payment_Method) → 用**众数**填充 - 使用 `.drop_duplicates()` 删除重复行 ### 3. 异常值检测 (Z-Score) - 计算 `Transaction_Amount` 和 `Time_of_Transaction` 的 Z-score - 将 |Z| > 3 的交易标记为异常值 - **结果:** 在 Transaction_Amount 中检测到 508 个异常值;在 Time_of_Transaction 中为 0 ### 4. 分组与消费行为 - 按 `User_ID` 分组 → 计算 Avg_Spend, Max_Spend, Total_Transactions, Total_Spend - 按 `Transaction_Type` 分组 → 计算每种类型的平均值和计数 ### 5. 特征工程与欺诈风险评分 设计了四个新的二进制/连续特征: | 特征 | 逻辑 | |---|---| | `amount_zscore` | Transaction_Amount 的 Z-score(连续) | | `is_night` | 如果交易发生在晚上 10 点至早上 6 点之间则为 1 | | `has_prior_fraud` | 如果 Previous_Fraudulent_Transactions > 0 则为 1 | | `high_activity` | 如果 Number_of_Transactions_Last_24H > 10 则为 1 | 加权欺诈风险评分公式:
标签:NumPy, Python, 代码示例, 异常检测, 数据分析, 数据清洗, 无后门, 欺诈检测, 逆向工具