{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 找出数据中的异常值并做处理" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "import pickle\n", "import sys\n", "import os\n", "import matplotlib.pyplot\n", "from pandas import DataFrame\n", "#sys.path.append(\"../tools/\")\n", "workpath = os.getcwd()\n", "os.chdir(\"../tools\")\n", "from feature_format import featureFormat, targetFeatureSplit\n", "os.chdir(workpath)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [], "source": [ "### read in data dictionary, convert to numpy array\n", "data_dict = pickle.load(open(\"../final_project/final_project_dataset.pkl\", \"rb\"),encoding = \"utf8\" )\n", "features = [\"salary\", \"bonus\"]\n", "\n", "data_dict_temp = data_dict" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "在去除异常值前的图像:" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "data = featureFormat(data_dict, features)\n", "for point in data:\n", " salary = point[0]\n", " bonus = point[1]\n", " matplotlib.pyplot.scatter( salary, bonus )\n", "\n", "matplotlib.pyplot.xlabel(\"salary\")\n", "matplotlib.pyplot.ylabel(\"bonus\")\n", "matplotlib.pyplot.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "看到最大的一个异常值,要想办法去掉这个数据点" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "### your code below\n", "\n", "def find_outlier(data_dict,obj):\n", " #print(data_dict)\n", " max_bonus = 0\n", " max_name = None\n", " for i in data_dict:\n", " #下一句把数据中的 NaN 设置为 0 防止错误\n", " if data_dict[i][obj] == \"NaN\":data_dict[i][obj] = 0 \n", " if data_dict[i][obj] > max_bonus and data_dict[i][obj]!= 'NaN':\n", " max_bonus = data_dict[i][obj]\n", " max_name = i\n", " return max_name\n", "#调用函数删除字典中的异常值\n", "data_dict.pop(find_outlier(data_dict_temp,\"bonus\"))\n", "\n", "data = featureFormat(data_dict_temp, features)" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for point in data:\n", " salary = point[0]\n", " bonus = point[1]\n", " matplotlib.pyplot.scatter( salary, bonus )\n", "\n", "matplotlib.pyplot.xlabel(\"salary\")\n", "matplotlib.pyplot.ylabel(\"bonus\")\n", "matplotlib.pyplot.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "遍历一遍字典找出拿奖金和工资超过 5e6 和 1e6的人" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "LAY KENNETH L has taken $7000000 bonus and $1072321 salary.\n", "SKILLING JEFFREY K has taken $5600000 bonus and $1111258 salary.\n" ] } ], "source": [ "for k in data_dict_temp.keys():\n", " if data_dict_temp[k][\"bonus\"] != \"NaN\" and data_dict_temp[k][\"salary\"] != \"NaN\":\n", " if data_dict_temp[k][\"bonus\"] > 5e6 and data_dict_temp[k][\"salary\"] > 1e6:\n", " print(k,\"has taken $%d bonus and $%d salary.\" % (data_dict_temp[k][\"bonus\"],data_dict_temp[k][\"salary\"]))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.7.3" }, "toc-showmarkdowntxt": true, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }