Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算csv文件中的男性和女性数量_Python_Csv - Fatal编程技术网

Python 计算csv文件中的男性和女性数量

Python 计算csv文件中的男性和女性数量,python,csv,Python,Csv,假设我有一个名为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 我想数一数数据中的男性和女性人数。例如,对于这个问题,答案

假设我有一个名为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
我应该从哪里开始,如何编码

>>> 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
  • 导入CSV文件
  • 划出“性别”一栏
  • 您可以这样做:

    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'])}")
    

    另一个解决方案是使用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”作为索引,计数作为值。 这也是检查错误数据的一个很好的解决方法,如果您有其他类别或缺少数据,您会立即注意到它。

    最简单的方法是使用以下方法从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
    
    M : 2
    F : 2
    

    使用外部<代码>熊猫> <代码>或内置<代码> CSV 模块,您可以建立模块<代码>集合<代码> >代码>计数器>代码>计数发生,考虑例子:

    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)
    
    输出:

    sex
    f    2
    m    2
    dtype: int64
    
    M : 2
    F : 2
    

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

    不需要乘以
    1
    ,python将
    True
    s视为
    1
    False
    s视为
    0
    ,因此
    sum([True,True,True])
    True+True+True
    都会导致
    3
    。哦,好吧。我想现在是习惯了。