我的代码应该返回大约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
所需的样本输出(与样本数据不相关):
码:
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))
我希望将在K1和M1中找到的值(对于所有问题依此类推)添加到分析表中,如下所示:
最佳答案
发生这种情况正是由于字符串。 Thay不能用双数求和。因此,这是一个不确定的操作。
尝试清理数据。
选项有:
如果您的统计数据合理,则删除不包含数据或异常值的行。 (您甚至可以一次执行一列,一次计算一列的统计信息)。
用该列的平均值替换这些值(这是统计中的标准过程之一)。
考虑一种特定于域的方式来处理此类数据。
无论如何,我会尝试从数据中删除字符串。
如果您不能这样做,则可能意味着该数据与其他数据不属于同一数据,因为它来自不同的分发。