Python 计算csv文件中的男性和女性数量
假设我有一个名为sample.csv的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 我想数一数数据中的男性和女性人数。例如,对于这个问题,答案
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
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
。哦,好吧。我想现在是习惯了。