【问题标题】:Count the number of males and females in a csv file计算 csv 文件中的男性和女性人数
【发布时间】:2020-12-30 09:09:00
【问题描述】:

假设我有这个名为 sample.csv 的 csv 文件:

CODE     AGE     SEX     CITY
----     ---     ---     ----
E101      25      M      New York
E102      42      F      New York
E103      31      M      Chicago
E104      67      F      Chicago

我希望统计数据中的男性和女性人数。例如,对于这个,答案是:

M : 2
F : 2

我应该从哪里开始,我应该如何编码?

【问题讨论】:

    标签: python csv


    【解决方案1】:

    你可以这样做:

    import pandas as pd
    df = pd.read_csv("sample.csv")
    
    print(f"M : {len(df[df['SEX'] == 'M'])}")
    print(f"F : {len(df[df['SEX'] == 'F'])}")
    

    【讨论】:

      【解决方案2】:
      >>> import csv
      >>> M,F = 0,0
      >>> with open('file.csv') as csvfile:
      ...     data = csv.reader(csvfile)
      ...     for row in data:
      ...         M += 1 if row[2] == "M" else F += 1
      

      【讨论】:

        【解决方案3】:
        1. 导入 CSV 文件。
        2. 去掉“SEX”列。
        import pandas as pd
        
        data = pd.read_csv('sample.csv')
        
        num_males = sum(data['SEX'] == 'M')
        num_females = len(data['SEX']) - num_males
        

        【讨论】:

        • 不需要乘以1,在算术中使用时python会将Trues当作1Falses当作0,所以sum([True,True,True])和@ 987654328@ 都将导致3
        • 哦,好的。我猜它现在是一种习惯。
        【解决方案4】:

        另一种解决方案是使用 pandas 包来执行此操作。

        import pandas as pd
        
        csv_path_file = '' # your csv path file
        separator = ';'
        
        df = pd.read_csv(csv_path_file, sep = separator)
        df['SEX'].value_counts()
        
        

        将返回一个 pd.Series 对象,其中 'M' 和 'F' 作为索引和计数作为值。 这也是检查错误数据的好方法,如果您有其他类别或缺少数据,您会立即注意到它。

        【讨论】:

          【解决方案5】:

          最简单的方法是使用Pandas从csv中读取数据并分组:

          import pandas as pd
          
          df = pd.read_csv('sample.csv') // read data from csv
          result = df.groupby('sex').size() // use .size() to get the row counts
          

          输出:

          sex
          f    2
          m    2
          dtype: int64
          

          【讨论】:

            【解决方案6】:

            在使用外部pandas 或内置csv 模块从文件中读取后,您可以使用内置模块collections'Counter 来计算出现次数,例如:

            import collections
            import pandas as pd
            df = pd.DataFrame({'CODE':['E101','E102','E103','E104'],'SEX':['M','F','M','F']})
            for key, value in collections.Counter(df['SEX']).items():
                print(key,":",value)
            

            输出:

            M : 2
            F : 2
            

            请注意,为了简单起见,我对数据进行了硬编码。解释:collections.Counter 是类似dict 的对象,它在创建过程中接受可迭代,并在所述可迭代中计算出现次数。

            【讨论】:

              猜你喜欢
              • 2013-06-11
              • 2021-08-30
              • 2022-01-11
              • 2020-05-13
              • 1970-01-01
              • 1970-01-01
              • 2021-03-19
              • 2021-01-13
              • 2016-09-02
              相关资源
              最近更新 更多