计算数据框中的多个值
count multiple value in dataframe
我有一个显示 5 名学生的多项选择题答案的数据框:
id Question 1
0 a;b;c
1 a;c
2 b
3 a;d
4 b;c;d
我想统计一个选项被选中了多少次。例如,最终答案应该是
a:3
b:3
c:3
d:2
那么有没有一种使用python的快速方法来获得解决方案?
此外,我正在使用数据框中的数据在 Tableau 中进行可视化。 Tableau 计数如下:
a;b;c appear once
a;c appear once
b appear once
a;d appear once
b;c;d appear once
那么有没有办法直接用Tableau得到上面的结果呢?或者我必须在 python 中做一些事情然后使用 tableau。
谢谢
您可以尝试使用以下代码来计算 pandas 数据框列中每个选择的出现次数:
data = pd.DataFrame({'id':[0, 1,2,3,4], 'Question1':['a;b;c','a;c','b','a;d','b;c;d']})
count = data.Question1.str.split(';', expand=True).stack().value_counts()
输出:
a 3
b 3
c 3
d 2
dtype: int64
你也可以使用这个:-
data = pd.DataFrame({'id':[0, 1,2,3,4], 'Question1':['a;b;c','a;c','b','a;d','b;c;d']})
temp_list = []
for var in data['Question1'].values:
for x in var.split(';'):
temp_list.append(x)
value, count = np.unique(temp_list, return_counts=True)
for v,c in zip(value, count):
print(f"{v} -->> {c}")
输出
a -->> 3
b -->> 3
c -->> 3
d -->> 2
你也可以使用get dummies
data = pd.DataFrame({'id':[0, 1,2,3,4], 'Question1':['a;b;c','a;c','b','a;d','b;c;d']})
data['Question1'].str.get_dummies(sep=';').sum()
输出
a 3
b 3
c 3
d 2
dtype: int64
我有一个显示 5 名学生的多项选择题答案的数据框:
id Question 1
0 a;b;c
1 a;c
2 b
3 a;d
4 b;c;d
我想统计一个选项被选中了多少次。例如,最终答案应该是
a:3
b:3
c:3
d:2
那么有没有一种使用python的快速方法来获得解决方案?
此外,我正在使用数据框中的数据在 Tableau 中进行可视化。 Tableau 计数如下:
a;b;c appear once
a;c appear once
b appear once
a;d appear once
b;c;d appear once
那么有没有办法直接用Tableau得到上面的结果呢?或者我必须在 python 中做一些事情然后使用 tableau。
谢谢
您可以尝试使用以下代码来计算 pandas 数据框列中每个选择的出现次数:
data = pd.DataFrame({'id':[0, 1,2,3,4], 'Question1':['a;b;c','a;c','b','a;d','b;c;d']})
count = data.Question1.str.split(';', expand=True).stack().value_counts()
输出:
a 3
b 3
c 3
d 2
dtype: int64
你也可以使用这个:-
data = pd.DataFrame({'id':[0, 1,2,3,4], 'Question1':['a;b;c','a;c','b','a;d','b;c;d']})
temp_list = []
for var in data['Question1'].values:
for x in var.split(';'):
temp_list.append(x)
value, count = np.unique(temp_list, return_counts=True)
for v,c in zip(value, count):
print(f"{v} -->> {c}")
输出
a -->> 3
b -->> 3
c -->> 3
d -->> 2
你也可以使用get dummies
data = pd.DataFrame({'id':[0, 1,2,3,4], 'Question1':['a;b;c','a;c','b','a;d','b;c;d']})
data['Question1'].str.get_dummies(sep=';').sum()
输出
a 3
b 3
c 3
d 2
dtype: int64