Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据条件为变量赋值_Python_Pandas_Variables_Mean_Mode - Fatal编程技术网

Python 根据条件为变量赋值

Python 根据条件为变量赋值,python,pandas,variables,mean,mode,Python,Pandas,Variables,Mean,Mode,如果值是数值,我想找到数据帧中一列的平均值,如果值是分类的,我想找到序列的模式。我只想使用一个我称之为“meanmode”的变量来实现这一点 当我尝试以下方法时: def mean_mode(val): return meanmode = val.mean() if val.dtype != 'object' else val.mode()[0] 我得到一个错误: ValueError: The truth value of a Series is ambiguous. Use a.em

如果值是数值,我想找到数据帧中一列的平均值,如果值是分类的,我想找到序列的模式。我只想使用一个我称之为“meanmode”的变量来实现这一点

当我尝试以下方法时:

def mean_mode(val):
   return meanmode = val.mean() if val.dtype != 'object' else val.mode()[0]
我得到一个错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
我如何分配变量“meanmode”的数值平均值和分类模式平均值

到目前为止,我的代码是:

def report(val):
    dtypes = val.dtypes
    rows = val.T.apply(lambda x: x.count(), axis=1)
    nuniq = val.T.apply(lambda x: x.nunique() , axis=1)
    uniq = val.T.apply(lambda x: x.unique() if x.dtype == 'object' else None, axis=1)
    total = val.T.apply(lambda x: x.isna().sum(), axis=1)
    count = val.shape[0]
    pc = np.round(total / count * 100, 2)

    mini = val.min()
    maxi = val.max()

    meanmode = val.apply(lambda x: x.mode()[0] if x.dtype == 'object' else mean(val))

    qualitydf = pd.concat([dtypes, rows, total, pc, meanmode, mini, maxi, nuniq, uniq],
                          keys=['Dtype', 'Available Rows', 'Missing Values',
                                'Percent Missing', 'Mean-Mode',
                                'Min', 'Max', 
                                'No. Of Uniques', 'Unique Values'], axis=1)

return qualitydf
使用:




我基本上是做一个数据集的质量报告。向用户显示其平均值、最大值、最小值、数值和数据类型。虽然剩下的都很好,但我似乎无法为同一个变量指定mean和mode。现在min()值和mean()值是相同的。但是mode()工作正常。
val
是一个数据帧、一个系列还是什么?val是一个数据帧。从该数据帧中,该代码提取要在qualitydf(输出数据帧)中显示给用户的特性。虽然所有的代码都能正常工作,但我还是被困在meanmode问题上。
df = pd.DataFrame({
        'A':list('abccef'),
         'B':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'D':[1,3,5,7,1,0],
         'E':[5,3,6,9,2,4],
         'F':list('baabbb')
})
def report(val):
    dtypes = val.dtypes
    rows = val.T.apply(lambda x: x.count(), axis=1)
    nuniq = val.T.apply(lambda x: x.nunique() , axis=1)
    uniq = val.T.apply(lambda x: x.unique() if x.dtype == 'object' else None, axis=1)
    total = val.T.apply(lambda x: x.isna().sum(), axis=1)
    count = val.shape[0]
    pc = np.round(total / count * 100, 2)

    mini = val.min()
    maxi = val.max()

    meanmode = val.apply(lambda x: x.mode()[0] if x.dtype == 'object' else mean(val))

    qualitydf = pd.concat([dtypes, rows, total, pc, meanmode, mini, maxi, nuniq, uniq],
                          keys=['Dtype', 'Available Rows', 'Missing Values',
                                'Percent Missing', 'Mean-Mode',
                                'Min', 'Max', 
                                'No. Of Uniques', 'Unique Values'], axis=1)

    return qualitydf
df = df.pipe(report)
print(df)
    Dtype  Available Rows  Missing Values  Percent Missing Mean-Mode Min Max  \
A  object               6               0              0.0         c   a   f   
B   int64               6               0              0.0         4   4   5   
C   int64               6               0              0.0         2   2   9   
D   int64               6               0              0.0         1   0   7   
E   int64               6               0              0.0         2   2   9   
F  object               6               0              0.0         b   a   b   

   No. Of Uniques       Unique Values  
A               5     [a, b, c, e, f]  
B               2              [4, 5]  
C               6  [7, 8, 9, 4, 2, 3]  
D               5     [1, 3, 5, 7, 0]  
E               6  [5, 3, 6, 9, 2, 4]  
F               2              [b, a]