# -*- coding: utf-8 -*-
"""
Created on Fri May 20 18:00:43 2022@author: lenovo
"""import pandas as pdunames=['user_id','gender','age','occupation','zip']users=pd.read_table('D:\OneDrive\桌面\ml-1m/users.dat',sep='::',header=None,names=unames,engine='python')rnames=['user_id','movie_id','rating','timestamp']ratings=pd.read_table('D:\OneDrive\桌面\ml-1m/ratings.dat',sep='::',header=None,names=rnames,engine='python')mnames=['movie_id','title','genres']'''
注:
pandas.read_csv(“data.csv”)默认情况下,会把数据内容的第一行默认为字段名标题。
为了解决这个问题,我们添加“header=None”,告诉函数,我们读取的原始文件数据没有列索引,因此,read_csv为自动加上列索引.pd.read_table()对应txt文件
pd.read_csv()对应csv文件sep参数代表分隔符,它与print()函数一起使用以指定参数之间的分隔符。engine参数用于指定pandas读取文件时的解析引擎,有C和Python两种,C比较块,而Python特性比较多, 你sep使用了多个字符, C引擎是不支持的,所以会指定Python'''movies=pd.read_table('D:\OneDrive\桌面\ml-1m/movies.dat',sep='::',header=None,names=mnames,engine='python', encoding='ISO-8859-1')'''pandas.read_table将各个表分别读到一个pandas DataFrame对象中'''
'''
print(users[:5])
print(ratings[:5])
print(movies[:1])
print(ratings)
''''''pd.merge合并 '''
data=pd.merge(pd.merge(ratings,users),movies)
#print(type(data))'''
注:
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,left_index=False, right_index=False, sort=True,suffixes=('_x', '_y'), copy=True, indicator=False,validate=None)
括号里的均为可执行参数left: 拼接的左侧DataFrame对象
right: 拼接的右侧DataFrame对象
on: 要加入的列或索引级别名称。 必须在左侧和右侧DataFrame对象中找到。 如果未传递且left_index和right_index为False,则DataFrame中的列的交集将被推断为连接键。
left_on:左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
right_on: 左侧DataFrame中的列或索引级别用作键。 可以是列名,索引级名称,也可以是长度等于DataFrame长度的数组。
left_index: 如果为True,则使用左侧DataFrame中的索引(行标签)作为其连接键。 对于具有MultiIndex(分层)的DataFrame,级别数必须与右侧DataFrame中的连接键数相匹配。
right_index: 与left_index功能相似。
sort: 按字典顺序通过连接键对结果DataFrame进行排序。 默认为True,设置为False将在很多情况下显着提高性能
''''''data.pivot_table方法 生成一个DataFrame'''mean_ratings=data.pivot_table('rating',index='title',columns='genres',aggfunc='mean')
print(mean_ratings[:5])'''
aggfunc参数可以设置我们对数据聚合时进行的函数操作。当我们未设置aggfunc时,它默认aggfunc='mean'计算均值。
'''ratings_by_title=data.groupby('title').size()
print(ratings_by_title[:10])
'''
groupby函数主要的作用是进行数据的分组以及分组后地组内运算
'''active_titles=ratings_by_title.index[ratings_by_title>=250]
print(active_titles)'''ix换位loc'''
mean_ratings=mean_ratings.loc[active_titles]
print(mean_ratings)'''对F列降序排列'''
'''sort_index()换为sort_values()'''
top_female_ratings=mean_ratings.sort_values(by='title',ascending=False)
print(top_female_ratings[:10])'''计算评分分歧'''
mean_ratings['diff']=mean_ratings['M']-mean_ratings['F']
sorted_by_diff=mean_ratings.sort_values(by='diff')
print(sorted_by_diff[:15])
print(sorted_by_diff[::-1][:15])'''根据电影名称分组的得分数据的标准差'''
rating_std_by_title=data.groupby('title')['rating'].std()'''根据active_titles进行过滤'''
rating_std_by_title=rating_std_by_title.loc[active_titles]'''根据值对Series进行降序排列'''
'''Python3.6之后的版本已经没有order属性了,尝试使用sort_values()方法就好了。'''
print(rating_std_by_title.sort_values(ascending=False)[:10])
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!