因此,我使用一个脚本来计算一个人在该行中指定的日期之前出现在列表中的次数,而1出现在第6列中的次数,同时还计算了一个人(第7列)在该行中指定的日期之前出现在列表中的次数(注意,它们是按时间顺序排序的)(使用从零开始的列引用)
02/01/2005,Data,Class xpv,4,11yo+,4,1,George Smith
02/01/2005,Data,Class xpv,4,11yo+,4,2,Ted James
02/01/2005,Data,Class xpv,4,11yo+,4,3,Emma Lilly
02/01/2005,Data,Class xpv,4,11yo+,4,5,George Smith
02/01/2005,Data,Class xpv,4,11yo+,6,4,Tom Phillips
03/01/2005,Data,Class tn2,4,10yo+,6,2,Tom Phillips
03/01/2005,Data,Class tn2,4,10yo+,6,5,George Smith
03/01/2005,Data,Class tn2,4,10yo+,6,3,Tom Phillips
03/01/2005,Data,Class tn2,4,10yo+,6,1,Emma Lilly
03/01/2005,Data,Class tn2,4,10yo+,6,6,George Smith
04/01/2005,Data,Class tn2,4,10yo+,6,6,Ted James
04/01/2005,Data,Class tn2,4,10yo+,6,3,Tom Phillips
04/01/2005,Data,Class tn2,4,10yo+,6,2,George Smith
04/01/2005,Data,Class tn2,4,10yo+,6,4,George Smith
04/01/2005,Data,Class tn2,4,10yo+,6,1,George Smith
04/01/2005,Data,Class tn2,4,10yo+,6,5,Tom Phillips
05/01/2005,Data,Class 22zn,2,10yo+,5,3,Emma Lilly
05/01/2005,Data,Class 22zn,2,10yo+,5,1,Ted James
05/01/2005,Data,Class 22zn,2,10yo+,5,2,George Smith
05/01/2005,Data,Class 22zn,2,10yo+,5,4,Emma Lilly
05/01/2005,Data,Class 22zn,2,10yo+,5,5,Tom Phillips
02/01/2005,Data,Class xpv,4,11yo+,4,1,George Smith,0,0
02/01/2005,Data,Class xpv,4,11yo+,4,2,Ted James,0,0
02/01/2005,Data,Class xpv,4,11yo+,4,3,Emma Lilly,0,0
02/01/2005,Data,Class xpv,4,11yo+,4,5,George Smith,0,0
02/01/2005,Data,Class xpv,4,11yo+,6,4,Tom Phillips,0,0
03/01/2005,Data,Class tn2,4,10yo+,6,2,Tom Phillips,0,1
03/01/2005,Data,Class tn2,4,10yo+,6,5,George Smith,1,2
03/01/2005,Data,Class tn2,4,10yo+,6,3,Tom Phillips,0,1
03/01/2005,Data,Class tn2,4,10yo+,6,1,Emma Lilly,0,1
03/01/2005,Data,Class tn2,4,10yo+,6,6,George Smith,1,2
04/01/2005,Data,Class tn2,4,10yo+,6,6,Ted James,0,1
04/01/2005,Data,Class tn2,4,10yo+,6,3,Tom Phillips,0,3
04/01/2005,Data,Class tn2,4,10yo+,6,2,George Smith,1,4
04/01/2005,Data,Class tn2,4,10yo+,6,4,George Smith,1,4
04/01/2005,Data,Class tn2,4,10yo+,6,1,George Smith,1,4
04/01/2005,Data,Class tn2,4,10yo+,6,5,Tom Phillips,0,3
05/01/2005,Data,Class 22zn,2,10yo+,5,3,Emma Lilly,1,2
05/01/2005,Data,Class 22zn,2,10yo+,5,1,Ted James,0,2
05/01/2005,Data,Class 22zn,2,10yo+,5,2,George Smith,2,7
05/01/2005,Data,Class 22zn,2,10yo+,5,4,Emma Lilly,1,2
05/01/2005,Data,Class 22zn,2,10yo+,5,5,Tom Phillips,0,5
最终,我希望对我生成的百分比数据执行卡平方。不过,现在我想要实现的是能够计算和求出一个唯一数据类(第2列)中任何一个人的分数概率,并将其作为一个新列添加到csv中。我不确定我所使用的代码是否可以被编辑以实现这一点。如能就如何最好地做到这一点提出任何建设性的建议或意见,我们将不胜感激。在
02/01/2005,Data,Class xpv,4,11yo+,5,1,George Smith,0,0,0
02/01/2005,Data,Class xpv,4,11yo+,5,2,Ted James,0,0,0
02/01/2005,Data,Class xpv,4,11yo+,5,3,Emma Lilly,0,0,0
02/01/2005,Data,Class xpv,4,11yo+,5,5,George Smith,0,0,0
02/01/2005,Data,Class xpv,4,11yo+,5,4,Tom Phillips,0,0,0
03/01/2005,Data,Class tn2,4,10yo+,5,2,Tom Phillips,0,1,0.2, He gets 0.2 because there was a 1 in 5 chance for previous occurrences on dates prior to today. 1/5
03/01/2005,Data,Class tn2,4,10yo+,5,5,George Smith,1,2,0.4, He gets 0.4 because there was a 2 in 5 chance for previous occurrences on dates prior to today. 2/5
03/01/2005,Data,Class tn2,4,10yo+,5,3,Tom Phillips,0,1,0.2
03/01/2005,Data,Class tn2,4,10yo+,5,1,Emma Lilly,0,1,0.2
03/01/2005,Data,Class tn2,4,10yo+,5,6,George Smith,1,2,0.4
04/01/2005,Data,Class tn2,4,10yo+,6,6,Ted James,0,1,0.2
04/01/2005,Data,Class tn2,4,10yo+,6,3,Tom Phillips,0,3,0.6
04/01/2005,Data,Class tn2,4,10yo+,6,2,George Smith,1,4,0.8
04/01/2005,Data,Class tn2,4,10yo+,6,4,George Smith,1,4,0.8
04/01/2005,Data,Class tn2,4,10yo+,6,1,George Smith,1,4,0.8
04/01/2005,Data,Class tn2,4,10yo+,6,5,Tom Phillips,0,3,0.4
05/01/2005,Data,Class 22zn,2,10yo+,5,3,Emma Lilly,1,2,0.4
05/01/2005,Data,Class 22zn,2,10yo+,5,1,Ted James,0,2,0.366666667
05/01/2005,Data,Class 22zn,2,10yo+,5,2,George Smith,2,7,1.3
05/01/2005,Data,Class 22zn,2,10yo+,5,4,Emma Lilly,1,2,0.4
05/01/2005,Data,Class 22zn,2,10yo+,5,5,Tom Phillips,0,5,0.733333333
这应该很简单,只是不清楚您所说的“在一个唯一的数据类中任何一个人的分数概率”是什么意思。例如,数据类
xpv
的数据以5行开头,其中George Smith
出现两次。你想让乔治·史密斯看到什么样的“分数机会”?你想让其他人(出现一次)看到什么?为什么示例输出在xpv
行旁边只显示零?在答案可能取决于日期类是否在以后的日期再次出现,以及这是否与计算有关;但是如果您能够解释如何计算前5个的值,则可能会清楚剩下的内容。(如果不是,请解释第二组,其中的值确实变为非零。)
注:也许这在评论中的讨论中有所提及,但是TL;DNR。如果你能改进这个问题,就很容易给出正确的答案。在
这不应该是对您的问题的完整回答(因为这有点模棱两可,您正在尝试做什么),而只是向您展示pandas如何自然地适应这种计算;您还可以通过名称而不是按索引调用列。在
假设您有这样一个
test.csv
文件:我给每一列都指定了名字。您可以通过以下方式将此文件读入pandas数据帧
^{pr2}${cd2>看起来像这样:
我删除您不使用的列(这只是为了演示,您不必删除这些列)
现在
df
如下所示:假设您想找出每个人每天在之前的日期中出现的累计次数:
api文档(请参见here)包含每个方法的详细描述。现在有了透视表
pv
,它看起来像这样或者可以使用
groupby
:要执行相同的计算,但只针对
tag == 1
,可以这样做或使用
groupby
语法:将是:
为了填写这两个新列,我们编写了一个helper函数,如果缺少值,则返回到0:
我们得到:
如果我知道你是如何计算最后一个专栏的话,我可以继续下去。例如为什么“汤姆·菲利普斯”在第六排得了0.2?!在
编辑:好的,我们继续。我们需要找出每个人在每个日期出现的次数;这是另一个数据透视表:
或者
输出:
每次约会有多少人出现:
输出:
要计算累积分数,您可以简单地将每行除以总数,再除以1(因为我们查找以前的日期),然后计算累计和:
现在
df
如下所示:在最后一列的两行,我的数字和你的不一样。所以要么我把你的计算弄错了,要么你把这两个数字算错了。在
相关问题 更多 >
编程相关推荐