数据分析案例-电影数据分析

article/2025/9/27 19:13:31

目录

电影数据集介绍

加载数据

数据探索和清洗

评分最多的电影

 评分最高的电影

 评分与年龄的关系

 不同年龄段对某部电影的评分


电影数据集介绍

用户信息

#u.user
#列名称
'user_id','age','gender','occupation','zip_code'
#数据
1|24|M|technician|85711  
2|53|F|other|94043  
3|23|M|writer|32067  
4|24|M|technician|43537  
5|33|F|other|15213  

评分表

# u.data
#列名称
'user_id','movie_id','rating','unix_timestamp'
196 242 3 881250949  
186 302 3 891717742  
22 377 1 878887116  
244 51 2 880606923  
166 346 1 886397596  
298 474 4 884182806  
115 265 2 881171488  
253 465 5 891628467  
305 451 3 886324817 

电影表

#u.item
#列名称
'movie_id','movie_title','release_date','video_release_date','imdb_url'
1|Toy Story (1995)|01-Jan1995||http://us.imdb.com/M/title-exact?
Toy%20Story%20(1995)|0|0|0|1|1|1|0|0|0|0|0|0|0|0|0
2|GoldenEye (1995)|01-Jan1995||http://us.imdb.com/M/title-exact?
GoldenEye%20(1995)|0|1|1|0|0|0|0|0|0|0|0|0|0|0|0|0
3|Four Rooms (1995)|01-Jan1995||http://us.imdb.com/M/title-exact?
Four%20Rooms%20(1995)|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0  
4|Get Shorty (1995)|01-Jan1995||http://us.imdb.com/M/title-exact?
Get%20Shorty%20(1995)|0|1|0|0|0|1|0|0|1|0|0|0|0|0|0|0
5|Copycat (1995)|01-Jan1995||http://us.imdb.com/M/title-exact?
Copycat%20(1995)|0|0|0|0|0|0|1|0|1|0|0|0|0|0|0|0|1

加载数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#支持中文显示
plt.rcParams['font.family']='Kaiti'
# 使用非unicode的负号,当使用中文时候要设置
plt.rcParams['axes.unicode_minus']=False
# 加载用户信息 user id | age | gender |
occupation | zip code
user_cols=['user_id','age','gender','occupation','zip_code']
users = pd.read_csv('ml100k/u.user',sep='|',names=user_cols,encoding='latin-1')
# 加载电影信息 movie id | movie title |release date | video release date | IMDb URL
movie_cols=['movie_id','movie_title','release_date','video_release_date','imdb_url']
movies=pd.read_csv('ml100k/u.item',sep='|',names=movie_cols,usecols=range(5),encoding='latin-1')x`
# 加载评分信息 user id | item id | rating |timestamp
rating_cols=['user_id','movie_id','rating','unix_timestamp']
ratings = pd.read_csv('ml100k/u.data',sep='\t',names=rating_cols,encoding='latin-1')
# 为了后续分组统计数据方便,将3个DataFrame进行合并
# 和并用户 评分
user_ratings = pd.merge(users,ratings)
data = pd.merge(user_ratings,movies)

数据探索和清洗

基本信息描述

data.describe()
#对评分男性和女性人数统计
data['gender'].value_counts()

缺值处理

data.shape()
#每列缺值情况
data.info()
data.isnull().sum()
#删除video_release_date列
data.dropna(axis=1,how='all',inplace=True)

重复值查看

# 重复值查看
data.duplicated().any()

评分最多的电影

# 按照电影标题分组,统计分组中数据个数,即得到评分次数
g = data.groupby('movie_title')
data.groupby('movie_title').size().sort_values(ascending=False).head(20)
#或者data.groupby('movie_title')['movie_title'].count()
#或者data['movie_title'].value_counts().head(20).plot(kind='bar')

 评分最高的电影

# 根据电影标题分组,对分组中评分求均值,均值越高,评分也就越高
data.groupby('movie_title')
['rating'].mean().sort_values(ascending=False).head(10)
#使用agg()函数
data.groupby('movie_title').agg({'rating':'mean'})
['rating'].sort_values(ascending=False).head(10)
#统计评分人数和评分的均值
data.groupby('movie_title')
['rating'].agg(['size','mean']).sort_values(by=['mean','size'],ascending=False).head(10)
# movie_scores
# 过滤,评分人数必须大于等于100
data_group = data.groupby('movie_title')
['rating'].agg(['count','mean'])
most_100 =data_group[data_group['count']>100]
top10 = most_100.sort_values(by=['mean','count'],ascending=False).head(10)
top10['mean'].plot(kind='bar',title='评分最高的电影')

 

 评分与年龄的关系

# 简单看下年龄分布
data['age'].describe()
data['age'].plot(kind='hist',bins=30,figsize=(12,6))
# 自定义年龄区间,分布不同年龄组对电影评分总体状况
# 0-9 10-19 20-29 ...70-79
labels = ['0-9','10-19','20-29','30-39','40-49','50-59','60-69','70-79']
data['age_group'] =pd.cut(data['age'],np.arange(0,81,10),right=False,labels=labels)
data.groupby('age_group').agg({'rating':['size','mean']})
#年龄越大的区间,对电影打分越高

 

 不同年龄段对某部电影的评分

# 因为电影数据比较多,现在只分析评分次数排在前100的电影--》如何得到评分次数在前100的电影
# 得到评分次排在前100的电影的id信息,同时将数据movie_id列设置为行索引,利用索引数组来获得评分次数排在前100的电影的数据
# 得到评分次数在前100的电影
# 得到评分次排在前100的电影的id信息
most_100=data['movie_id'].value_counts().head(100)
# most_100
# 数据movie_id列设置为行索引
data.set_index('movie_id',inplace=True)
by_age_group =data.loc[most_100.index].groupby(['movie_title','age_group'])
by_age_group['rating'].mean().unstack(1).fillna(0).head(10)

以下是心得体会:

通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。

在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等

在此次实战中,我还学会了下面几点工作学习心态:

1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。

在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等

在此次实战中,我还学会了下面几点工作学习心态:

1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。


http://chatgpt.dhexx.cn/article/p3FWhVBL.shtml

相关文章

数据分析岗位招聘分析

项目背景 学习实践数据分析,形成完整报告。分析目标:从行业、城市、学历、经验分析薪资及需求量分布情况 数据获取 集搜客获取拉勾【数据分析】为关键词的职位列表,根据列表职位详情地址爬取职位详情,435条记录,删除重复值后有…

数据分析的工作目标是什么

题图与内容无关,骗点击的。。。 其实这是回答我知识星球一位读者的问题,但恰好也是我现在在做的事情,所以想想,可以写一篇文章分享一下。 数据分析团队的工作方向,按照阶段分为如下目标。 1、提供准确、可靠、及时的基…

数据分析 面经(已拿到offer)

北航计算机专业(计院太卷,现考虑转向信息安全方向)本科二年级,闲来无事找份日常实习试试水 考虑数分岗也是因为楼主目前大二,专业课学习不够深入,开发技术尚不成熟,而sql、excel和数据可视化比…

数据分析笔试经典sql题解

欢迎关注微信公众号:开心数据 前言:sql是数据分析师笔试必考的考点之一,常考的题型有行列转换、联表查询,这些都比较简单,一般考的最难的就是hivesql窗口函数联表查询,普通的聚合函数每组(Group by)只返回…

滴滴出行2020数据分析面试题

目录 数据来源字段释义指标释义其他信息加载包加载数据数据预处理 问题1 订单的应答率、完单率分别是多少?2 呼叫应答时间多长?3 呼叫量最高的是哪一个小时(当地时间)?呼叫量最少的是哪一个小时(当地时间&a…

大数据分析实习生应该如何选择职业方向?

那么,大数据方向实习生到底该做些什么? Excel2013目前可以支持104万行数据,即使是这样也远远算不上大数据。 以下是华院数据整理的2015年大数据相关公司排名 看看你的公司在不在里边? 话说回来,对于一个实习生来说,让你处理Ex…

大数据分析实习生面试题库

大数据分析是一个有吸引力的领域,因为它不仅有利可图,而且您有机会从事有趣的项目,而且您总是在学习新事物。如果您想从头开始,请查看大数据分析实习生面试题库以准备面试要点。 大数据分析是一个有吸引力的领域。这是有利可图的&…

数据分析师实习岗笔试题(part1)

笔试后记,仅供参考 因为公司说不能泄露笔试题,所以我就加了点润色,但是不影响内容 限时免费:3小时 前言 笔试时间:2020年6月 笔试方式:在线笔试 笔试内容:sql语言、R语言/python、统计学相关知识 笔试时间:2小时之内 来几个励志的名人名言吧 要随时牢记在心中:决心…

【数据分析】滴滴数据分析岗实习经验

转载自:数据管道 原作者介绍:双非院校刚毕业的统计硕士,目前在滴滴工作,有8个月的数据分析实习经历,面试过10位以上数据分析实习生,最终成为了产品经理。 在原文的基础上有过删减。 两个主题 本文的主要目…

数据分析真题日刷 | 网易2018实习生招聘笔试题-数据分析实习生

上周开始实习,博客更新就缓下来了。这是十天前做的套题了,现在拾起来把它再整理整理。 网易数据分析实习生的笔试题,和校招的题目还是有部分重复的,不过难度也不小。 今日真题 网易2018实习生招聘笔试题-数据分析实习生 &#x…

数据分析——实习僧数据分析岗招聘信息分析

随着互联网技术不断完善,市场竞争日益激烈,粗放经营的企业将很难实现可持续发展。为改变这一现状,越来越多的企业开始对自身数据进行深度分析和挖掘,并以此辅助决策人员进行精细化决策管理。由此,越来越多的数据分析师应运而生。 本人初步踏入这一领域,希望对数据分析实…

分析数据分析实习岗位信息(1、数据获取)

目录 1.1 网页分析1.2 字体反扒机制1.3 构造字典1.4 创建表1.5 根据自己的需要进行修改 又到了一年一度的秋招了,由于受疫情的影响,部分公司减少了数据分析相关岗位的实习名额,为了更了解秋招的相关岗位信息,这里针对实习僧 网站…

我在滴滴数据分析岗实习了8个月

作者介绍:双非院校刚毕业的统计硕士,目前在滴滴工作,有8个月的数据分析实习经历,面试过10位以上数据分析实习生,最终成为了产品经理。 两个主题 本文的主要目标是帮助一些刚入门的同学了解互联网公司中“数据分析”岗位…

LOUVAIN——社交网络挖掘之大规模网络的社区发现算法

LOUVAIN——社交网络挖掘之大规模网络的社区发现算法 算法来源 该算法来源于文章Fast unfolding of communities in large networks,简称为Louvian。 算法原理 Louvain算法是基于模块度(Modularity)的社区发现算法,该算法在效率…

泛运筹理论初探——Louvain算法简介

图论-图论算法之Louvain 社区发现算法简介之Louvain算法 在本次文章中,我们将会介绍经典的社区发现方法,也就是Louvain算法。这种算法在社群发现等应用的效果较好,是比较经典的图挖掘类算法,在金融风控行业挖掘诈骗团伙等应用…

Louvain社区划分算法及Java语言实现

Louvain社区划分算法及Java语言实现 社区划分算法处理的对象Louvain社区发现算法全局模块度单层算法过程多层算法过程Java代码实现图实现模块度计算单层louvain实现多层louvain实现运行入口,使用方法 社区划分算法处理的对象 社区划分算法又称社区发现算法&#xf…

社区发现算法-Community Detection-NormalizeCut/Louvain/NMF/LPA

本文结构安排 图聚类简介 正则化割 Louvain 非负矩阵分解(NMF) 其他常见方法 图(graph):是一种由点和边集构成的结构 G ( V , E ) G(V,E) G(V,E) 图聚类(graph clustering) : 将点划分为不同的簇,使得簇内的边尽量多,簇之间…

Louvain算法在反作弊上的应用

作者 | ANTI 一、概述 随着互联网技术的发展,人们享受互联网带来的红利的同时,也面临着黑产对整个互联网健康发展带来的危害,例如薅羊毛、刷单、刷流量/粉丝、品控、诈骗、快排等等,反作弊作为打击黑产的中坚力量,持…

community_louvain社群划分方法

第一、 这个方法是一个典型的EM算法。定义了一个“模块度”的量化评价指标,然后结合上优化方法,不断地优化模块度,最终得到社群划分的结果。 第二、模块度的定义,具体如下: 对于图中任意两个节点,i和j 1、…

Louvain 社团发现算法学习(我的java实现+数据用例)

为了大家方便,直接把数据放在github了: https://github.com/qq547276542/Louvain 算法介绍: Louvain 算法是基于模块度的社区发现算法,该算法在效率和效果上都表现较好,并且能够发现层次性的社区结构,其…