【问题标题】:Conditional Sum/Average/etc... CSV file in Python条件总和/平均/等... Python 中的 CSV 文件
【发布时间】:2016-09-07 02:00:45
【问题描述】:

首先,我找到了类似的文章,但我无法弄清楚如何将这些问题的答案转化为我自己的问题。其次,我是python的新手,所以我很抱歉我是一个菜鸟。

这是我的问题:我想对文本文件中的值执行条件计算(平均值/比例/等)

更具体地说,我有一个类似于下面的文件

0    Diamond    Correct
0    Cross      Incorrect
1    Diamond    Correct
1    Cross      Correct

到目前为止,我能够读取文件并收集所有行。

import pandas as pd
fileLocation = r'C:/Users/Me/Desktop/LogFiles/SubjectData.txt'
df = pd.read_csv(fileLocation, header = None, sep='\t', index_col = False,
                 name = ["Session Number", "Image", "Outcome"])

我希望查询该文件,以便可以提出以下问题:

--当第一列('Session Number')为0时,'Outcome'列中“Correct”值的比例是多少?所以这将是 0.5,因为有一个“正确”和一个“不正确”。

我还有其他想要执行的计算,但是一旦我知道如何执行此操作(希望是简单的命令),我应该能够弄清楚该去哪里。

谢谢!

【问题讨论】:

  • 您应该搜索诸如“numpy pandas statistics”或“如何计算 pandas 统计数据”甚至“描述性统计 pandas”之类的关键字。通过搜索这些术语,我发现了这篇出色的文章:@987654321 @还有这个randalolson.com/2012/08/06/…
  • 谢谢!这看起来是一个很好的资源。我会在进行计算时参考它。非常感谢!

标签: python csv pandas statistics conditional


【解决方案1】:
# getting the total number of rows
total = len(df)  

# getting the number of rows that have 'Correct' for 'Outcome' and 0 for 'Session Number'
correct_and_session_zero = len(df[(df['Outcome'] == 'Correct') & 
                                  (df['Session Number'] == 0)])

# if you're using python 2 you might need to convert correct_and_session_zero  or total
# to float so you won't lose precision
print(correct_and_session_zero / total)

【讨论】:

    【解决方案2】:

    你也可以这样做:

    In [467]: df.groupby('Session#')['Outcome'].apply(lambda x: (x == 'Correct').sum()/len(x))
    Out[467]:
    Session#
    0    0.5
    1    1.0
    Name: Outcome, dtype: float64
    

    它将您的 DF 按Session# 分组并为每个组计算Ratio of correct Outcomes (Session#)

    【讨论】:

    • 哦,哇。这是太棒了!我正在分析 100 多个数据表,每个数据表的格式相同,但所有数据表的会话数可能不同。这段代码非常完美,在查看工作表时给了我灵活性。非常感谢!
    • @TomH,总是乐于提供帮助。请考虑accepting 最有帮助的答案 - 这也表明您的问题已得到解答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多