编写一个python程序来获取数据帧(pandas) - " pre_data_matrix" ,在这个数据框中有一个名为" PostTextPolarity"的列,它的值介于-1和1之间,想要计算" PostTextPolarity"例如,当它> 0,< 0和= 0时,总共有超过30000个项目,可能是" PostTextPolarity"当它是> 0时是10000,也许可能是" PostTextPolarity"当它是< 0是20000,我想获得确切的数字,程序是:
select_sql = "select userID,userName,userURL,postTime,postText,postTextLength,likesCount,sharesCount,commentsCount,postTextPolarity,postTextSubjectivity from fb_pre_davi_group_members_posts"
cur.execute(select_sql)
pre_data = cur.fetchall()
pre_data_list = list(pre_data )
...
pre_data_matrix = pd.DataFrame(pre_data_list,columns = ['userId','UserName','UserURL','PostTime','PostText','PostTextLength','LikesCount','SharesCount','CommentsCount','PostTextPolarity','PostTextSubjectivity'])
print(pre_data_matrix )
它显示:
LikesCount SharesCount CommentsCount PostTextPolarity \
0 0 0 0 0.0
1 0 0 0 0.3571428571428571
2 3 0 0 1.0
3 11 0 0 0.0
4 11 0 0 0.46909090909090906
5 0 0 0 0.9
6 11 0 1 0.625
7 11 0 1 0.0
8 11 0 0 0.56875
9 11 0 0 0.0
10 0 0 1 0.08333333333333333
11 20 0 2 0.0
12 4 0 1 0.0
13 7 0 1 0.0
14 11 0 1 0.25
...
你能不能告诉我如何获得PostTextPolarity> 0,= 0和< 0的确切数量,也许需要使用其他库如numpy
答案 0 :(得分:0)
通过pandas库使用np.where:
g = pd.np.where(df.PostTextPolarity == 0,'Equals 0',pd.np.where(df.PostTextPolarity < 0,'< 0','> 0'))
df.groupby(g)['PostTextPolarity'].count().rename_axis('Category').reset_index()
输出:
Category PostTextPolarity
0 > 0 8
1 Equals 0 7