基於pandas的男女電影評價差異分析

看了南京大學的《用python玩轉數據視頻》,Python強大。代碼做了些註釋。慢慢逐漸深入。

https://scipy.org/

import pandas as pd
import numpy as np
 
# Download url: https://files.grouplens.org/datasets/movielens/ml-100k.zip

# 讀取文件
unames = ['user id', 'age', 'gender', 'occupation', 'zip code']
users = pd.read_csv('ml-100k/u.user', sep = '|', names = unames) # 讀取文件read_csv,sep指定分隔符
rnames = ['user id', 'item id', 'rating', 'timestamp']
ratings = pd.read_csv('ml-100k/u.data', sep = '\t', names = rnames)

# 數據篩選
users_df = users.loc[:, ['user id', 'gender']] # loc進行數據選取
ratings_df = ratings.loc[:, ['user id', 'rating']]
rating_df = pd.merge(users_df, ratings_df) # 合併
 
# Way 1 - groupby() 計算標準差
result = rating_df.groupby('gender').rating.apply(pd.Series.std)
print(result)
# Way 1 - pivot_table() 透視表 動態排列,分類彙總,可以實現groupby功能 index是索引
result = pd.pivot_table(rating_df, index = ['gender'], values = 'rating', aggfunc = pd.Series.std)
print(result)
 
# Way 2 - groupby() 據user id,gender計算男女標準差
df_temp = rating_df.groupby(['user id', 'gender']).apply(np.mean)
result = df_temp.groupby('gender').rating.apply(pd.Series.std)
print(result)
# Way 2 - pivot_table() 
gender_table = pd.pivot_table(rating_df, index = ['gender', 'user id'], values = 'rating')
Female_df = gender_table.query("gender == ['F']") # 獲取女性的數據
Male_df = gender_table.query("gender == ['M']") # 獲取男性的數據
Female_std = pd.Series.std(Female_df)
Male_std = pd.Series.std(Male_df) # 計算標準差
print('Gender', '\nF\t%.6f' % Female_std, '\nM\t%.6f' % Male_std) # 輸出

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章