我已经导入了一个CSV文件,包括grad_year,grad_major,grad_gender,gpa等研究生数据。
我们的目标是获得排名前100的GPA,并确定GPA排名前100的毕业生中有多少是女性
我试着对GPA排名前100位的数据进行排序,但之后我被困在了如何从这一点过滤女性的问题上
import pandas as pd
grads_df = pd.read_csv('Users/Sas0908/Downloads/grads.csv')
sort_gpa = grads_df.sort_values(by=['gpa']).tail(100)在这里,我被卡住了,因为我不确定如何才能只过滤那些grad_gender ==为“Female”的实体的sort_gpa
发布于 2019-09-11 03:37:14
使用锁定函数https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html
sort_gpa.loc[sort_gpa['grad_gender']=='Female']发布于 2019-09-11 04:22:44
要获得按GPA排序的前100名,除了您还可以传递一个额外的参数ascending来更改排序顺序之外,您的方法是正确的:
# sort with highest GPAs appearing at the top
sort_gpa.sort_values(by='gpa', ascending=False)要获取DataFrame的前100行,可以使用head (或像处理后100行一样使用tail )。但另一种常见的方法是使用.iloc,它允许您按位置抓取行:
# gets the first 100 rows, positions 0 thru 99
sort_gpa.iloc[:100]最后,你想知道女性和男性的数量,你可以在一个列上使用.value_counts():
# returns the counts of all values that appear in the column
sort_gpa['grad_gender'].value_counts()把所有这些放在一起,你就有了:
top_100 = sort_gpa.sort_values(by='gpa', ascending=False).iloc[:100]
top_100['grad_gender'].value_counts()https://stackoverflow.com/questions/57877197
复制相似问题