利用python进行数据分析第二章第二个例子

# -*- coding: utf-8 -*-
"""
Created on Thu May  4 17:32:45 2017
利用python进行数据分析第二章第二个例子
数据下载:http://download.csdn.net/download/zdxxinlang/9671783
@author: 80002419
"""
import pandas as pd
import numpy as np


#将数据导入数据框中
users_cols = ['user_id','gender','age','occp','zip']
users=pd.read_table(r"E:\python\data\ml-1m\ml-1m\users.dat",sep='::',header=None,names=users_cols)
ratings_cols = ['user_id','movie_id','rating','rating_date']
ratings = pd.read_table(r"E:\python\data\ml-1m\ml-1m\ratings.dat",sep='::',header=None,names=ratings_cols)
movies_cols = ['movie_id','title','genres']
movies = pd.read_table(r"E:\python\data\ml-1m\ml-1m\movies.dat",sep='::',header=None,names=movies_cols)


#合并三个表
big_table = pd.merge(pd.merge(ratings,users),movies)#默认会根据相同的列名来连接合并
mean_rating = big_table.pivot_table('rating',index='title',columns ='gender',aggfunc=np.mean)


rating_by_tital = big_table.groupby('title').size() ## 得到换title分组后的一数据列对象


#过滤分组大小不够300的电影
active_movies = rating_by_tital.index[rating_by_tital >= 300]


#求评分数大于300的电影的平均评分
mean_rating = mean_rating.ix[active_movies]
#了解女性最喜欢的电影 即女性对电影平均评分最高的电影
top_fmale_movies = mean_rating.sort_values(by='F',ascending=False)#根据F字段,排序
top10_fmale_movies =top_fmale_movies[:10]


#计算男女观影最大分歧
mean_rating['diff'] = mean_rating['M']-mean_rating['F']


sorted_by_diff=mean_rating.sort_values(by='diff')


sorted_by_diff[:15]#分歧最大且女性喜欢看的电影
sorted_by_diff[::-1][:15]#分歧最大且女性喜欢看的电影


#不考虑性别因素的分歧 
ratings_std_by_title = big_table.groupby('title')['rating'].std()#求点电影评分的标准差
ratings_std_by_title = ratings_std_by_title.ix[active_movies]
ratings_std_by_title.order(accending = False)[:10]

你可能感兴趣的:(python数据分析,python基础)