Python Pandas 试图用我的其他统计数据获取模式

约翰·明特

我有csv数据:

Class,  Code,   Vendor, State,  NumberOfDays
3,      123,    Name1,  NE,     12.58402778
1,      876,    Name2,  TX,     12.51041667
3,      123,    Name1,  NE,     2.354166667
1,      876,    Name2,  TX,     12.21111111
3,      456,    Name2,  NY,     6.346527778
2,      876,    Name1,  NY,     5.513194444
3,      123,    Name1,  NE,     5.38125
1,      876,    Name2,  TX,     5.409722222

我有以下代码,它根据其他字段的分组为我提供了字段mean, min,maxmedianNumberOfDays

df = pd.read_csv(r'C:...input.csv')

d = {'mean':'AverageDays','min':'LowestNumberOfDays','max':'HighestNumberOfDays','median':'MedianDays'}
df = (df.groupby(['Class','Code','Vendor','State'])['NumberOfDays']
    .agg(['mean','min','max','median'])
    .rename(columns=d)
    .reset_index())
df.to_csv(r'C:...output.csv', index=False)

它完美地满足了我的需求:

Class,Code,Vendor,State,AverageDays,LowestNumberOfDays,HighestNumberOfDays,MedianDays
1,876,Name2,TX,10.043750000666666,5.409722222,12.51041667,12.21111111
2,876,Name1,NY,5.513194444,5.513194444,5.513194444,5.513194444
3,123,Name1,NE,6.773148149,2.354166667,12.58402778,5.38125
3,456,Name2,NY,6.346527778,6.346527778,6.346527778,6.346527778

当我添加mode到代码时:

d = {'mean':'AverageDays','min':'LowestNumberOfDays','max':'HighestNumberOfDays','median':'MedianDays','mode':'ModeDays'}
df = (df.groupby(['Class','Code','Vendor','State'])['NumberOfDays']
    .agg(['mean','min','max','median','mode'])

我收到此错误:

AttributeError:无法访问“SeriesGroupBy”对象的可调用属性“mode”,请尝试使用“apply”方法

当我研究这个时,我发现模式不是 Pandas 中的自然函数,但我的问题是我无法弄清楚如何利用其他方法来计算模式,并将其合并到代码的同一步骤中,因为这一步减少了我的数据集成凝聚的群体。所以我不能在之后运行它,如果我在之前运行它,我将需要在每个组的所有数据行中重复应用模式值。我的数据已经超过 4 演出和 3000 万条记录,所以我想避免让它变得更大。

毗舍离

您可以使用 value_counts 作为模式

d = {'mean':'AverageDays','min':'LowestNumberOfDays','max':'HighestNumberOfDays','median':'MedianDays', '<lambda>': 'ModeDays'}

df.groupby(['Class','Code','Vendor','State'])['NumberOfDays']\
    .agg(['mean','min','max','median', lambda x: x.value_counts().index[0]])\
    .rename(columns=d)\
    .reset_index()


    Class   Code    Vendor  State   AverageDays LowestNumberOfDays  HighestNumberOfDays MedianDays  ModeDays
0   1       876     Name2   TX      10.043750   5.409722    12.510417   12.211111   12.510417
1   2       876     Name1   NY      5.513194    5.513194    5.513194    5.513194    5.513194
2   3       123     Name1   NE      6.773148    2.354167    12.584028   5.381250    2.354167
3   3       456     Name2   NY      6.346528    6.346528    6.346528    6.346528    6.346528

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python计算学生统计数据

来自分类Dev

我想统计数据帧中某列中重复值的出现并更新python中新列中的计数

来自分类Dev

用 Pandas python 中其他数据帧的值覆盖数据帧中的值

来自分类Dev

Python Pandas数据清理

来自分类Dev

Python Pandas数据框

来自分类Dev

python pandas数据比较

来自分类Dev

使用 NumPy 函数和 Pandas DataFrame 计算样本统计数据

来自分类Dev

Python Pandas计数发生间隔

来自分类Dev

Python Pandas groupby 多个计数

来自分类Dev

用python pandas操作Excel

来自分类Dev

获取纬度/经度 Python Pandas

来自分类Dev

Python / Pandas 缩写我的数字。

来自分类Dev

Python Pandas从数据框获取单个值

来自分类Dev

Python:Pandas数据框总和

来自分类Dev

Python Pandas重塑数据框

来自分类Dev

Python Pandas与TimeGrouper重叠数据

来自分类Dev

Python Pandas,转换数据框

来自分类Dev

在 Pandas python 上分割数据

来自分类Dev

Python Pandas 重组数据框

来自分类Dev

Python Pandas 数据框跳线

来自分类Dev

Json 数据排序 PANDAS、python

来自分类Dev

我试图用python从postgressql的列中提取值。但是我总是得到这个错误:

来自分类Dev

python pandas试图减少对循环的依赖

来自分类Dev

python pandas如何通过其他数据框扩展数据框

来自分类Dev

具有来自其他数据框(pandas、python)的唯一值的数据框

来自分类Dev

Python Pandas Dataframe:用频率计数替换变量

来自分类Dev

Python Pandas Dataframe:用频率计数替换变量

来自分类Dev

如何在python中使用pandas dataframe获取引用其他特殊索引的新max列表?

来自分类Dev

python pandas获取列的最后一个值不同于其他值