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

发布于 2022-09-06 00:59:53 字数 985 浏览 36 评论 0

请教一下怎么用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吗?

谢谢了先!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温暖的光 2022-09-13 00:59:53

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

df_single = df[df['恋爱'] == 1]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文