处理Pandas中的异常值

8 浏览
0 Comments

处理Pandas中的异常值

您好。问题如下-在尝试从表格中的一列中删除异常值时,出现以下错误。\n我将示例代码翻译成中文:\n导入pandas库\nimport pandas as pd\n导入matplotlib库\nimport matplotlib as mpl\n导入matplotlib.pyplot库\nimport matplotlib.pyplot as plt\n从scipy.stats库导入norm模块\nfrom scipy.stats import norm\n从scipy库导入stats模块\nfrom scipy import stats\n导入numpy库\nimport numpy as np\n使用pd.read_csv函数从URL读取csv文件并存储到df变量中\ndf = pd.read_csv(\"https://cf-courses-data.s3.us.cloud-object-storage.appdomain.cloud/IBM-DA0321EN-SkillsNetwork/LargeData/m2_survey_data.csv\")\n使用df[\"ConvertedComp\"].plot函数绘制箱线图并设置图形大小为(10,10)\ndf[\"ConvertedComp\"].plot(kind=\"box\", figsize=(10,10))\n计算z得分并存储到z_scores变量中\nz_scores = stats.zscore(df[\"ConvertedComp\"])\n计算绝对值的z得分并存储到abs_z_scores变量中\nabs_z_scores = np.abs(z_scores)\n根据绝对值的z得分判断是否小于3,并将结果存储到filtered_entries变量中\nfiltered_entries = (abs_z_scores < 3).all(axis=1)\n根据过滤后的结果创建新的数据框并存储到new_df变量中\nnew_df = df[filtered_entries]\n出现以下错误:\nAxisError Traceback (most recent call last)\n in \n 4 z_scores\n 5 abs_z_scores = np.abs(z_scores)\n----> 6 filtered_entries = (abs_z_scores < 3).all(axis=1)\n 7 #new_df = df[filtered_entries]\nC:\\ProgramData\\WatsonStudioDesktop\\miniconda3\\envs\\desktop\\lib\\site-packages\\numpy\\core\\_methods.py in _all(a, axis, dtype, out, keepdims)\n 44 \n 45 def _all(a, axis=None, dtype=None, out=None, keepdims=False):\n---> 46 return umr_all(a, axis, dtype, out, keepdims)\n 47 \n 48 def _count_reduce_items(arr, axis):\nAxisError: axis 1 is out of bounds for array of dimension 1\n非常感谢您的建议,我已经差不多没有想法了。

0
0 Comments

在使用Pandas处理数据时,有时会遇到异常值(outliers)的问题。异常值是指与大部分数据点相比显著不同的数据点,它们可能是由于数据收集错误、测量误差、异常事件等原因导致的。异常值的存在可能会对数据分析和建模产生负面影响,因此需要进行处理。

处理异常值的一种方法是使用Z分数(Z-score)方法。Z分数是一种标准化的分数,它表示一个数据点与均值之间的差异性,并以标准差的倍数来衡量。Z分数可以通过将数据点减去均值并除以标准差来计算。根据正态分布的性质,大约68%的数据点的Z分数在-1和1之间,大约95%的数据点的Z分数在-2和2之间,大约99.7%的数据点的Z分数在-3和3之间。

在使用Pandas进行异常值处理时,可以使用scipy库中的stats.zscore()函数计算Z分数。上述代码中,通过计算"ConvertedComp"列的Z分数,并将绝对值小于3的数据点筛选出来,生成一个新的数据框new_df。

然而,上述代码只是针对单列数据进行Z分数计算和筛选,因此结果是一个一维数组。如果需要对多列数据进行Z分数计算,则需要将这些列放在一个数据框中进行处理。在上述代码的改进版本中,将"ConvertedComp"和"AnotherColumn"两列放在一个数据框中,并使用.stats.zscore()函数计算Z分数。然后,通过将绝对值小于3的数据点在所有列上进行逻辑判断(.all(axis=1)),筛选出符合要求的数据点,并生成一个新的数据框new_df。

通过上述方法,我们可以有效地处理异常值,并得到一个清洁的数据集,用于后续的数据分析和建模工作。

0