《利用Python进行数据分析》第2章学习笔记

《利用Python进行数据分析》第2章学习笔记

本篇博文是《利用Python进行数据分析》第二章的学习笔记,由于原书代码是用python2.7,现使用python3学习本书并重新实现书中内容;本人也是使用Python进行分析的初学者,如果您有意见及建议烦请多多交流。
数据集下载地址: https://github.com/wesm/pydata-book

  • 导入数据
  • 数据集的合并
  • 数据透视表的使用
  • 数据筛选
  • 数据排序
  • 图表制作

2.1 来自bit.ly的1.usa.gov数据

暂留,待补充


2.2 MovieLens 1M数据集分析

数据导入

原始数据集是.dat文件,可使用read_table直接导入:

import pandas as pd
import numpy as np

users = pd.read_table(r'/Users/SEN/Downloads/pydata-book-2nd-edition/datasets/movielens/users.dat',
sep='::',header = None, names = ['user_id','gender','age','occupation','zip'],engine='python')

ratings = pd.read_table(r'/Users/SEN/Downloads/pydata-book-2nd-edition/datasets/movielens/ratings.dat',
sep='::',header = None, names= ['user_id','movie_id','rating','timestamp'], engine='python')

movies = pd.read_table(r'/Users/SEN/Downloads/pydata-book-2nd-edition/datasets/movielens/movies.dat',
sep='::',header = None, names= ['movie_id','title','genres'],engine='python')

可利用切片语法:

users[:5]
ratings[2:3]

也可直接用.head()方法展示前5行:

users.head()

数据集的合并

分析散布在三个表总的数据可不是一件轻松的事情,假设我们想要根据性别以及年龄来计算某部电影的平均得分,将所有的数据合并到一个表中的话问题就简单了:

data = pd.merge(pd.merge(ratings,users),movies)
data.head()

现在,只要稍微熟悉一下pandas,就能轻松地根据任意个用户或者电影的属性对评分数据进行聚合操作了。为了计算每部电影的平均得分,我们可以使用pd.pivot_table方法:

mean_ratings = pd.pivot_table(data, index='title', values=['rating'], columns='gender', 
aggfunc= 'mean')['rating']
mean_ratings.head()

这样会产生另一个DataFrame,包括了数据集中各部电影的分性别的平均得分。

数据筛选

现在,打算过滤评分数不够250条的电影,首先对title进行分组,然后利用size()得到一个含有电影分组大小的Series对象:

ratings_by_title = data.groupby('title').size()
active_titles = ratings_by_title.index[ratings_by_title>=250]

该索引中就有了评分数据大于250条的电影名称,之后我们就可以选取所需的行了:

mean_ratings = mean_ratings.loc[active_titles]

数据排序

为了了解女性观众最喜欢的电影,我们可以对F列进行降序排列

mean_ratings.sort_values(by='F',ascending=False)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值