繁体   English   中英

我这里有一个代码,我想在某个 csv 文件中找到女性和男性的总数。

[英]I have a code here, I want to find the total number of females and males in a certain csv file.

import pandas as pd
df = pd.read_csv('admission_data.csv')
df.head()
female = 0
male = 0
for row in df:
    if df['gender']).any()=='female':
       female = female+1             
    else:
       male = male+1

印花(女)印花男

CSV 文件有 5 列这是图片

我想找到女性,男性和录取人数的总数,录取的女性人数,录取的男性人数谢谢。 这是我尝试过的代码和上述代码的更多迭代,但它们似乎都不起作用。

  1. 你的if逻辑是错误的。

  2. 根本不需要循环。


print(df['gender'].tolist().count('female'))
print(df['gender'].tolist().count('male'))

或者,您可以按照@Wen 的建议使用value_counts

print(df['gender'].value_counts()['male'])
print(df['gender'].value_counts()['female'])

经验法则:在使用 Pandas 时,99% 的情况下不需要使用显式循环。 如果您发现自己正在使用一种方法,那么很可能有一种更好(更快)的方法。

你只需要value_counts

df['gender'].value_counts()

我创建了以下 csv 文件:

student_id,gender,major,admitted
35377,female,chemistry,False
56105,male,physics,True
31441,female,chemistry,False
51765,male,physics,True
31442,female,chemistry,True

将 csv 文件读入数据帧:

import pandas as pd
df=pd.read_csv('D:/path/test1.csv', sep=',')
df[df['admitted']==True].groupby(['gender','admitted']).size().reset_index(name='count')

df
    gender  admitted    count
0   female  True    1
1   male    True    2

希望这有帮助!

我想你可以用这些兄弟

// This line creates create a data frame which only have gender as male
count_male=df[df['Gender']=="male"]
// 2nd line you are basically counting how many values are there in gender column
count_male['Gender'].size

(或)

count_male=df['Gender']=="male"]
count_male.sum()

gender列中的值,存储在列表中,并计算出现次数:

import pandas as pd
df = pd.read_csv('admission_data.csv')

print(list(df['gender']).count('female'))
print(list(df['gender']).count('male'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM