具有异常值的数据分析

时间:2019-01-23 22:26:07

标签: python python-3.x

我的代码应该返回大约65列数据的统计分析(来自调查的问题)。下面给出了示例数据以及当前代码。当前,输出仅显示不包含字符串的列(对于其他列,它们以NaN形式返回,甚至不会显示在Excel中)。

我认为该问题是由于某些数据点标记为“无数据”而另一些数据标记为“异常值”

我想学习一种忽略异常值/无数据点并显示统计数据(例如其余数据的均值或中值)的方法。我也很想学习如何结合条件函数来显示诸如“响应数> 4.25”之类的结果,以便我可以进行分析扩展。

Q1  Q2  Q3  Q4  Q5  Q6
4.758064516 4.709677419 4.629032258 Outlier 4.708994709 4.209677419
4.613821138 No Data 4.259259259 4.585774059 4.255927476 Outlier
4.136170213 4.309322034 4.272727273 4.297169811 No Data 4.29468599
4.481558803 4.581476323 4.359495445 4.558252427 4.767926491 3.829030007
4.468085106 4.446808511 4.425531915 4.446808511 4.423404255 4.14893617

所需的样本输出(与样本数据不相关): enter image description here

代码:

import pandas as pd 
from pandas import ExcelWriter

# Pull in Data
path = r"C:\Users\xx.xx\desktop\Python\PyTest\Pyxx.xlsx"
sheet = 'Adjusted Data'
data = pd.read_excel(path,sheet_name=sheet)

#Data Analysis
analysis = pd.DataFrame(data.agg(['count','min','mean', 'median', 'std']), columns=data.columns).transpose()
print(analysis)

g1 = data.groupby('INDUSTRY').median()
print(g1)
g2 = data.groupby('New Zone').median()
print(g2)

#Excel
path2 = r"C:\Users\xx.xx\desktop\Python\PyTest\Pyxx2.xlsx"
writer = ExcelWriter(path2)
g1.to_excel(writer,'x')
g2.to_excel(writer,'y')
analysis.to_excel(writer,'a')
data.to_excel(writer,'Adjusted Data')
writer.save()

编辑 计算对Q1的响应中有多少> X(在这种情况下,K1 = COUNTIF(K1:K999,TRUE))

enter image description here

我希望将K1和M1中的值(对于所有问题依此类推)添加到分析表中,如下所示: enter image description here enter image description here

1 个答案:

答案 0 :(得分:3)

发生这种情况完全是由于字符串。 Thay不能用双数求和。这是一个未定义的操作,因此是Nan。

尝试并清除数据。

选项是:

  • 如果在统计信息中有意义,则删除不包含数据或异常值的行。 (您甚至可以一次执行一列,一次计算一列的统计信息。)
  • 用该列的平均值替换这些值(这是统计中的标准过程之一)。
  • 考虑一种用于处理此类数据的领域特定方法。

无论如何,我都会尝试从数据中删除字符串。

如果您不能执行此操作,则可能意味着此数据与其他数据不属于同一数据,因为它来自不同的分发。