请教怎么用Python的Pandas解决一个统计频率的问题

请教一下怎么用Python的Pandas生成DataFrame然后统计频率的问题:

假设,我感兴趣的个体是“学生”,每个学生都有自己的名字,也都有3种属性:性别、院系、恋爱了没有。要求找出所有单身学生的名字。

我能想到的办法,无非就是用一个字典来做整个信息的数据结构,key=名字,value=[性别,院系,恋爱],然后按部就班的循环。

dict_student = {“张”:[man, EE, 1], “王”:[man, CS, 1], “李”:[woman, Art, 0], “赵”:[woman, np.nan, 1]……}
list_love = []
for k, v in dict_student:
    if v[2]==0:
        list_love.append(k)

但是有没有办法可以用一句话直接.count()出来单身学生的个数呢?比如count(map(lambda k,v:v[2]
dict_student.items()))?

但是,信息不是一个简单的字典、而是一个csv文件(多数情况下的大数据也不会以一个字典的方式清晰存在)。所以要用Python的Pandas,那么又该怎么统计所有单身学生的名字呢?

~, 姓名, 性别, 院系, 恋爱
1, 张, man, EE, 1
2, 王, man, CS, 1
3, 李, woman, Art, 0

我能想到的办法,无非就是把“恋爱”这一列抓出来单独处理,

df = pd.read_csv("信息.csv", index_col=0,1,4) # 只需要第0、1、4列吗?
df.ix[:, df3.ix[4]>0] # 只需要第0、1、4列吗?
tuple_list = df.groupby('恋爱') # 然后应该怎么写,可以把df转化成刚才的那个dict_student吗?

谢谢了先!

阅读 6.6k
1 个回答

这个很简单啊,直接filter就好了:

df_single = df[df['恋爱'] == 1]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题