- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的目标是进行聚合并获得分组平均值: - 属于特定组的列值的总和 - 将其除以该组中的观察数 - 最好使用 Pandas,而不是使用 R
我的原始数据集每组有多行:
user_id performance group expert_level
0 164 30 0 L-1
1 164 3 1 L-1
2 164 23 2 L-1
3 164 1 3 L-1
4 164 1 4 L-1
5 2178 136 0 L-3
6 2178 16 1 L-3
7 2178 5 2 L-3
8 2178 25 3 L-3
9 2178 4 4 L-3
我想为用户获取一行,因此在执行以下操作后
filelocation = ~/'somefile.csv'
df = pd.read_csv(filelocation)
pivoted = df.pivot('user_id', 'group', 'performance')
lookup = df.drop_duplicates('user_id')[['user_id', 'expert_level']]
lookup.set_index(['user_id'], inplace=True)
result = pivoted.join(lookup)
result = result.fillna(0)
result.loc[:,0:15] = result.loc[:,0:15].div(result.sum(axis=1), axis=0)
print result.head()
以上操作让我看到以下内容:(有 15 列,但仅显示很少,但包括组列)
0 1 2 3 4 5 6 group
user_id
2 0.863296 0.059643 0.023498 0.018470 0.022241 0.004797 0.000795 L-5
4 0.836877 0.018336 0.049429 0.025246 0.052706 0.002436 0.004075 L-2
16 0.910467 0.046083 0.017775 0.011192 0.011192 0.000658 0.000000 L-4
50 0.754286 0.137143 0.064762 0.009524 0.034286 0.000000 0.000000 L-5
51 0.401827 0.120086 0.041260 0.085395 0.286462 0.032434 0.001232 L-1
现在我想做的是按组级别对所有列求和以获得以下结果:
group X0 X1 X2 X3 X4 X5 X6 X7 X8
L-4 70294161 41480184 85284328 32006784 24122706 7559884 9984039 1226385 13104
L-3 139093997 65157598 158343549 55562729 40113567 12062095 15126124 1642933 18661
L-6 286610049 214763097 383541227 175932665 152843219 49444750 54246772 5863108 78769
L-5 43320302 29719739 58270825 24719553 19347706 5876604 7483654 789694 8734
L-2 69965163 23882048 80798434 26442583 16951986 4495711 5789449 550780 7190
L-1 22486756 5373632 26068005 7755806 4204398 950759 1626565 123037 2156
在我做了pandas之后,我将文件带入R以获取上表:
dt.agg <- dt[,lapply(.SD, mean),by=group]
但是正如你所看到的,聚合数字没有意义,我如何使用 pandas 而不是 R 获得相同的表。因为我觉得 R 正在做一些奇怪的事情。这些数字应该在 0-1 之间。
我什至尝试了以下方法:
dt.agg <- dt[, lapply(.SD, function(x){sum(x)/.N}), by = group]
但结果是相同的,所以我想完全在 Pandas 中完成此操作,而不是使用 R。
PS:我已经删除了 user_id :df$user_id <- NULL
最佳答案
尝试:
> ddt
user_id X0 X1 X2 X3 X4 X5 X6 group
1: 2 0.863296 0.059643 0.023498 0.018470 0.022241 0.004797 0.000795 L-5
2: 4 0.836877 0.018336 0.049429 0.025246 0.052706 0.002436 0.004075 L-2
3: 16 0.910467 0.046083 0.017775 0.011192 0.011192 0.000658 0.000000 L-4
4: 50 0.754286 0.137143 0.064762 0.009524 0.034286 0.000000 0.000000 L-5
5: 51 0.401827 0.120086 0.041260 0.085395 0.286462 0.032434 0.001232 L-1
> ddt[,lapply(ddt[,2:8,with=F], mean),by=group]
group X0 X1 X2 X3 X4 X5 X6
1: L-5 0.7533506 0.0762582 0.0393448 0.0299654 0.0813774 0.008065 0.0012204
2: L-2 0.7533506 0.0762582 0.0393448 0.0299654 0.0813774 0.008065 0.0012204
3: L-4 0.7533506 0.0762582 0.0393448 0.0299654 0.0813774 0.008065 0.0012204
4: L-1 0.7533506 0.0762582 0.0393448 0.0299654 0.0813774 0.008065 0.0012204
实际上,你自己的代码也可以工作:
> ddt[,lapply(.SD, mean),by=group]
group user_id X0 X1 X2 X3 X4 X5 X6
1: L-5 26 0.808791 0.098393 0.044130 0.013997 0.0282635 0.0023985 0.0003975
2: L-2 4 0.836877 0.018336 0.049429 0.025246 0.0527060 0.0024360 0.0040750
3: L-4 16 0.910467 0.046083 0.017775 0.011192 0.0111920 0.0006580 0.0000000
4: L-1 51 0.401827 0.120086 0.041260 0.085395 0.2864620 0.0324340 0.0012320
关于python - Pandas 聚合然后得到组平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26552697/
我有一个大小为 320x320 像素的阈值图像。我通过设置 ROI 以 20x20 像素的 block 循环遍历整个图像。我需要找到每个 block 的平均值。所以我将这些图像 block 传递给函数
我正在尝试学习 Javascript。我已经构建了以下代码来从一组数字中找到平均值。它有效除了最后返回的值总是 NaN。我不知道为什么。如果我将这 block 移到 block 外,它似乎完全忘记了变
假设我的数据已经分组,我该如何计算中位数和其他统计数据? Index Value Count 0 6 2 1 2 3 2 9 8 在上面
我试图计算的有趣情况。基本上在一行中,我有产品名称,其右侧的行是自首次收到产品以来经过的天数。 为 ex 计算的天数是 =TODAY()-BB2 我现在要做的是识别让我们说产品词“卡车”,然后计算卡车
我想知道如何计算某些数字的累积平均值。我将举一个简单的例子来描述我在寻找什么。 我有以下号码 vec 1) 为您的向量(或列表、一维数组或您如何称呼它)的每个元素评估此表达式,您将获得累积平均值。
我正在尝试对数据库表中的每一行进行平均。但它不能正常工作我想忽略该值,如果为空,它不会计算为零。使用我的代码,它将空值计算为零我想这样做 MS Excel 如果行/单元格为空,它将忽略。 Contro
我有以下信息(按 View 返回): DateTime ItemID UserTyp Seconds 2012-01-01 10 S 12 2012-01-01
我正在使用excel的average函数来获取欧洲各个城市一系列酒店价格的平均值。 =average(21,42,63,84,105) 我希望能够计算每个平均函数中的变量数量(例如,在上面的示例中有
我有一长串列,我想一次性计算非零中位数、平均值和标准差。我不能只删除基于 1 列的 0 行,因为同一列中另一列的值可能不是 0。 下面是我目前的代码,用于计算中位数、平均值等,包括零。 agg
这是我的问题: 我有一张这样的 table : Table Log int id; int time; timestamp DATE; int sid (FK to table Site);
JSON: [{"id":"1","user":"001","answer":"1,1,3,2,2,1,3,2"}, {"id":"2","user":"002","answer":"2,3,3,2,
有个问题: 使用适当的列名称,显示 obs 类型“CONT”的允许 ID 和平均 obs 值,其中 CONT 的平均 obs 值 >= 40。 假设承认是表1,观察是表2,但具有相同的主键Admit_
我有一个记录传感器数据的应用程序,我希望能够从多个传感器生成平均值,可以是一个、两个、三个或很多... 编辑:这些是温度传感器,因此 0 是传感器可能作为值存储在数据库中的值。 我最初的出发点是这个
我有这样一个数据框 id power flag 0 20 0 1 25 0 2 26 1 3 30 1 4 18 0 5
我想计算所有事件 blob 的平均位置。为此,首先我需要所有 X 和 Y 位置的总和。在这种情况下我该怎么做? contourFinder.findContours(grayImg, minB
我是一个十足的 Java 新手。上周一开始,之前从未用任何语言进行过任何编程。因此,如果我发现简单的事情变得复杂,请耐心等待。 我收到了一个文本文件。如下图: 第一个数据是时间(午夜过后的秒数),第二
我正在尝试为 Audacity 编写一个简单的测量插件,它就像用石头砸我的头骨一样有趣。我想要做的就是获取一段音频并找到所有样本的平均值(该 block 的 DC offset ),这样我就可以将它作
我正在尝试计算给定多边形内的值: 实际上我正在使用这个管道: 'aggregation': { 'pipeline': [ { "$match" : {
我有一个 pandas DataFrame,其中包含包含列表的列。我正在尝试获取此专栏中列表的方法。 这是我的 DataFrame 的示例: Loc Background 0
我尝试加速计算放置在数组中的4d向量的平均值。这是我的代码: #include #include #include #include #include #include typedef f
我是一名优秀的程序员,十分优秀!