1
我有一个大的数据帧为其中两个列是:大熊猫:查询一个数据帧 - 多个标准
- 一个问题码(例如Q453)
- True或False来表示是否将问题被回答正确
我不知道所有可能的问题代码,并且每个问题已被多次回答。喜欢的东西:
Q666真
Q463真
Q056真
Q666假
我想知道哪些问题是最简单的,正是这问题有尝试的比例最高纠正答案。 使用熊猫达到此目的的步骤是什么?
我有一个大的数据帧为其中两个列是:大熊猫:查询一个数据帧 - 多个标准
我不知道所有可能的问题代码,并且每个问题已被多次回答。喜欢的东西:
Q666真
Q463真
Q056真
Q666假
我想知道哪些问题是最简单的,正是这问题有尝试的比例最高纠正答案。 使用熊猫达到此目的的步骤是什么?
我刚刚从你的文章中提取了一些数据。这是你在找什么?
我制作了真/假指标小写字符串;不确定它们存储在您的文件中。如果您使用python2,我相信您可以将from io import StringIO
更改为from StringIO import StringIO
。
In [105]: import pandas as pd
...: from io import StringIO
...:
...: data = """Q666 True
...:
...: Q463 True
...:
...: Q056 True
...:
...: Q666 False
...: Q666 True
...:
...:
...: Q463 True
...:
...: Q056 True
...: Q666 False
...: Q463 False
...: Q666 False"""
...:
In [106]: df = pd.read_csv(StringIO(data), sep=" ", header=None)
In [107]: df.columns = [['question', 'answer']]
In [108]: df['answer'] = df['answer'].astype("str").apply(lambda x: x.lower())
In [109]: df
Out[109]:
question answer
0 Q666 true
1 Q463 true
2 Q056 true
3 Q666 false
4 Q666 true
5 Q463 true
6 Q056 true
7 Q666 false
8 Q463 false
9 Q666 false
指定一个恒定值,以数据帧,所以我们可以指望我们GROUPBY条件,然后将多指标回到我们需要它。
In [110]: piv = (df
...: .assign(val = 1)
...: .groupby(["question", "answer"])
...: .count()
...: .unstack()['val'])
离这里很容易...
In [111]: piv['ratio'] = piv['true']/piv.sum(axis=1)
In [112]: piv.sort_values("ratio")
Out[112]:
answer false true ratio
question
Q666 3.0 2.0 0.400000
Q463 1.0 2.0 0.666667
Q056 NaN 2.0 1.000000
非常感谢您的回答。我是熊猫的新手,所以我必须学习groupby和unstack函数,但我想我理解并能够使用你的方法来找到我之后的答案。干杯兄弟! –
当然,我很乐意帮助! –