- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
import pandas as pd
group = ['A']*5 + ['B']*4 + ['C']*3
color = ['red', 'red', 'green', 'blue', 'green', 'red'] * 2
df = pd.DataFrame({'group':group, 'color':color})
df
group color
0 A red
1 A red
2 A green
3 A blue
4 A green
5 B red
6 B red
7 B red
8 B green
9 C blue
10 C green
11 C red
我想要的是向此数据框添加新列,该列将显示组中每种颜色的频率(作为整体的一部分)。可以使用以下代码获取此列的值:
df.groupby('group').color.value_counts(normalize=True)
group color
A green 0.400000
red 0.400000
blue 0.200000
B red 0.750000
green 0.250000
C blue 0.333333
green 0.333333
red 0.333333
Name: color, dtype: float64
但是我不知道如何将它变成与原始数据框相对应的列。我试过了
df['freq'] = df.groupby('group').color.transform('value_counts(normalize=True)') # error
这是行不通的。这是我正在寻找的输出:
group color freq
0 A red 0.4
1 A red 0.4
2 A green 0.4
3 A blue 0.2
4 A green 0.4
5 B red 0.75
6 B red 0.75
7 B red 0.75
8 B green 0.25
9 C blue 0.33
10 C green 0.33
11 C red 0.33
最佳答案
或者 join
依赖于 group
和 color
:
counts = df.groupby('group')['color'].value_counts(normalize=True)
df = df.join(counts.rename('freq'), on=['group', 'color'])
group color freq
0 A red 0.400000
1 A red 0.400000
2 A green 0.400000
3 A blue 0.200000
4 A green 0.400000
5 B red 0.750000
6 B red 0.750000
7 B red 0.750000
8 B green 0.250000
9 C blue 0.333333
10 C green 0.333333
11 C red 0.333333
或者通过计算group
+ color
counts vs group
counts 通过 groupby transform
手动计算归一化值计数:
df['freq'] = (
df.groupby(['group', 'color'])['color'].transform('count') /
df.groupby('group')['group'].transform('count')
)
group color freq
0 A red 0.400000
1 A red 0.400000
2 A green 0.400000
3 A blue 0.200000
4 A green 0.400000
5 B red 0.750000
6 B red 0.750000
7 B red 0.750000
8 B green 0.250000
9 C blue 0.333333
10 C green 0.333333
11 C red 0.333333
关于python - Pandas 在 group_by 和 value_counts 之后将列添加到 df,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68274684/
比如我得到的dataframe如下: PassengerId Survived Pclass 0 1 0 3 1 2
我有一个数据框,我想查找每个值出现的次数。当我使用这个命令时 test = df['name'].value_counts() 我得到了正确的结果,但是当我尝试这个 df['occ'] = df['n
我有一个 excel 文件,其中有一列包含多个单词。我正在尝试计算每个单词的出现频率。所以如果我有一个列表 Labels a a b b c c c 输出应该是 c : 3 b : 2 a : 2 我
这个问题在这里已经有了答案: How to count the same values in a dict? [duplicate] (1 个回答) 关闭 3 年前。 我很熟悉如何返回value_c
我正在尝试使用 pandas(v0.23.4 ).当所有类别都存在时,这工作正常: import calendar import random import pandas as pd random.s
我有以下列connect_start 0 2019-01-01 00:01:44 1 2019-01-01 00:02:57 2 2019-01-01 00:24:09 3 2019-
我需要计算大量独立列中的值的计数(例如由 value_counts 表示),这些独立列由一组固定的 2-5 个其他列分组。此练习是对多达数百万行和多达 50-100 列的数据进行数据挖掘的一部分。因此
我正在尝试计算 pandas df 的嵌套列的唯一值,这是 manuel 注释的结果。假设我们有以下 df: df_test = pd.DataFrame(data=dict(x=["A","B","
在pandas里面常用value_counts确认数据出现的频率。 1. Series 情况下: pandas 的 value_counts() 函数可以对Series里面的每个值进行计数并且排
我得到了以下数据框: ae264e3637204a6fb9bb56bc8210ddfd ... 2906b810c7d4411798c6938adc9daaa5 1
我有一个由 df.column.value_counts().sort_index() 生成的 Pandas 系列。 | N Months | Count | |------|------| |
我有以下数据框: import pandas as pd import numpy as np df_Station_Weather = pd.DataFrame(
我创建了一个由两列组成的数据框。我想计算这两列出现的次数。 数据框看起来像 - No Name 1 A 1 A 5 T 9 V Nan M 5 T 1 A 我想使用 valu
我有一个数据框,其中一列是带有以下标签的分类变量:['Short', 'Medium', 'Long', 'Very Long', 'Extremely Long'] .我正在尝试创建一个新的数据框,
这是我的数据框: email title id --------------------------------- balh@blah.com Title a
这是我的数据框: email title id --------------------------------- balh@blah.com Title a
目标 我正在尝试从 value_counts() 开始,为数据框中的每一列自动生成 EDA 报告。 问题 问题是我的函数没有返回任何内容。因此,虽然它确实打印到控制台,但它不会将相同的输出打印到我的文
我进行了一项调查,答案可以是 1-7,例如“绝对不快乐”到“绝对快乐”以及介于两者之间的一切,数据是一个 pandas 系列。对它进行 data.value_counts() 会产生有序表 5.0
我有一个在一组服务器上提出的票证的 pandas 数据框架,如下所示: a b c Users Problem 0 data data data U
自从我开始在 pandas 中使用categorical类型以来,我有一段无法工作的特定代码:(为了方便起见,我将其形成为测试): import pandas as pd import numpy a
我是一名优秀的程序员,十分优秀!