删除dataframe中某一rating 或者其他<需要出现次数的数据

该例子是有一个含user 和 movie ,我们需要删除其中打分次数小于5次的电影和用户;

思路是先按用户ID 和Movie ID 进行分组再用count对其出现次数进行计算,用

df.iterrows( )函数:可以返回所有的行索引,以及该行的所有内容,存到一个列表里,

  1. for index, row in dataset.iterrows(): 

  2. print(index,row) #index 是行索引,row 是行的值

for row in dfs.iterrows() # 可以对dataframe dfs 进行遍历,如果它的count<5 ,用 append加入dels列表,遍历dels列表Movierate=Movierate[Movierate.userId!=id1] 就可以得到打分超过5次的dataframe

Movierate = pd.read_csv("data/movieLen_small_ratings.csv")
# df1 = pd.DataFrame(columns="movieId")
# df2 = pd.DataFrame(pd.read_csv(file_path, index_col=3)) 
# 判断某用户打分次数是否超过5次 count,describe
# 按userId列进行分组,组长度小于5的userId在Movierate中清除
dfs = df1.groupby('userId').count()
# print(dfs)
dels = list()
for row in dfs.iterrows():
#     print(row[1][0])
    if int(row[1][0]) < 5:
        dels.append(row[0])
# 按userId列进行分组,组长度小于5的userId在Movierate中清除
dfs1 = df1.groupby('movieId').count()
# print(dfs)
dels1 = list()
for row in dfs1.iterrows():
#     print(row)
    if int(row[1][0]) < 5:
        dels1.append(row[0])
# print(dels1)
for id1 in dels:
    Movierate=Movierate[Movierate.userId!=id1]
for id1 in dels1:
    Movierate=Movierate[Movierate.movieId!=id1]
print(Movierate.head(100))

python 将dataframe 变ndarry

import pandas as pd
result = pd.DataFrame(df1, columns=['userId', 'movieId','rating'])
result1 = result.values

python 透视表是一种可以对数据动态排布并且分类汇总的表格格式,可以设置行列索引和数值

pd.pivot_table(df1,values='rating',index='userId',columns='movieId')

将Dataframe 所有Nan值转变为0

df = df.fillna(0)

将Dataframe 中count列>= 5 的保留下来 ;就是删掉小于5的

Movierate1.drop(Movierate1[Movierate1.count1 < 5].index,inplace=True)  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值