Python 具有异常值的数据分析

Python 具有异常值的数据分析,python,python-3.x,Python,Python 3.x,我的代码应该返回大约65列数据的统计分析(来自调查的问题)。下面给出了示例数据以及当前代码。目前,输出仅显示未包含字符串的列(对于其他列,它们返回为NaN,甚至不显示在Excel中) 我认为问题是由一些数据点标记为“无数据”和一些标记为“异常值”造成的 我想学习一种忽略异常值/无数据点的方法,并显示其余数据的统计信息,如平均值或中值。我还想学习如何合并条件函数来显示结果,例如“响应计数>4.25”,这样我就可以扩展分析了 Q1 Q2 Q3 Q4 Q5 Q6 4.758064516 4.

我的代码应该返回大约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
样本所需输出(与样本数据无关):

代码:

编辑 计算对Q1的响应中有多少>X(在本例中,K1=COUNTIF(K1:K999,TRUE))

我希望将K1和M1中的值(以及所有问题的值)添加到分析表中,如下所示:
这完全是因为字符串。它们不能用双数求和。这是一个未定义的操作,因此为Nan

尝试清理数据

选项包括:

  • 删除不包含数据或异常值的行(如果这在统计中有意义)。(您甚至可以一次只计算一列,一次计算一列的统计数据)
  • 用该列的平均值替换这些值(这是统计中的标准程序之一)
  • 考虑一种特定于领域的方法来处理此类数据
无论如何,我会尝试从数据中删除字符串


如果您不能做到这一点,则可能意味着此数据不属于其他数据,因为它来自不同的分布。

这正是因为字符串的缘故。它们不能用双数求和。这是一个未定义的操作,因此是Nan。我希望汇总每列中的所有非字符串值。。可能吗?此外,在分析过程中,空白是否会被视为零?这里有很好的见解-我很可能会创建两张表(一张用于维护异常值与缺失数据,另一张用于适应这些策略之一)。您有没有想过如何创建一个自定义度量来查找大于4.25的条目计数(例如)?@RCarmody一旦您的数据位于pandas数据框中,您可以做任何您想做的事情。。。看看这个:@RCarmody如果这不是你的意思,那么我可能误解了你对自定义度量的定义。也许我误解了这一点(我对python比较陌生),但我正试图在上面的屏幕截图表中添加一个新列,表示高于某个值的响应数。在我使用agg函数的有限经验中,我只能看到如何添加预先存在的函数(“平均值”、“中值”等)。@RCarmody您能试着更好地解释一下您想要做什么吗?你能用问题中提供的数据举例说明吗?据我所知,您希望找到,例如,值>x的raw数,其中x是R中的数字,在Y列中,Y是列的名称。这就是你想做的吗?
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()