数据分析1_猫眼TOP100

猫眼TOP100

今天爬了猫眼TOP100的电影,那就使用Jupyter简单的分析查看一下吧。
使用的是Jupyter Notebook,所以代码如果直接复制在PyCharm里面可能会执行不了。
如何爬取的博客:爬虫学习日记3_猫眼TOP100

导包并清洗数据

根据上一篇博客里面写的爬取方式,我把爬取下来的数据存放在了MongoDB里面,所以首先需要加载数据。
数据分析1_猫眼TOP100_第1张图片

import pandas as pd
import matplotlib.pyplot as plt
import pymongo
from functools import reduce
from collections import Counter

# 连接mongodb,并对数据进行简单的清洗
conn = pymongo.MongoClient()['猫眼top100']['ranking']
df = pd.DataFrame(list(conn.find()))
df.time = pd.to_datetime(df.time.str[0:10]) # 将日期数据进行切割,并转为日期类型
df.index = df.ranking  # 去除默认的索引,将影片排名作为索引
df.score = pd.to_numeric(df.score) # 把字符类型的评分转为数值类型
df = df.drop(['_id','image','ranking'],axis = 1) # 删除无用的MongoDB自带id、图片url、和作为索引重复的ranking列
df

大话西游之月光宝盒是评分最高的,也是目前唯一一个9.6分的电影

在这里插入图片描述

df.sort_values(by='score',ascending=False)
df

评分主要集中于8.8-9.1分,占了top100的77%

数据分析1_猫眼TOP100_第2张图片

df['score'].hist(bins=8)
df['score'].value_counts()

TOP100大部分影片都是在1990年之后上映的

数据分析1_猫眼TOP100_第3张图片

plt.scatter(df['score'],df.time)

TOP100电影里面的演员出演情况

  • 伊莱贾·伍德,伊恩·麦克莱恩,丽芙·泰勒三人组合总共出演了3部电影
  • 丹尼尔·雷德克里夫,鲁伯特·格林特,艾玛·沃特森三人组合总共出演了2部电影
    在这里插入图片描述
df.actors.value_counts().head()
  • 张国荣出演7部,周星驰、梁朝伟出演4部
    数据分析1_猫眼TOP100_第4张图片
# 方法1
# pd.Series(df['actors'].str.cat(sep=',').split(",")).value_counts()

# 方法2
# actors_map = reduce(lambda x,y:x+y.split(','),df['actors'],[])
# Counter(actors_map)

# 方法3
actors_map = reduce(lambda x,y:x+y.split(','),df['actors'],[])
pd.DataFrame(pd.Series(actors_map).value_counts(),columns=['出演次数']).head()
  • 根据演员姓名查找所拍的电影
    数据分析1_猫眼TOP100_第5张图片
key='张国荣'
# 方法1
# index = [i for i, item in enumerate(df['actors']) if key in item]
# df.iloc[index]

# 方法2
df[df['actors'].str.contains(key)]

总结

  • 初学数据分析,从一堆数据里面找出一些小小的规律,也是挺好玩的。
  • 这次主要卡在最后两个问题上,通过各种群寻求答案,发现有多种方法可以实现,朋友们可以每个方法都试一下。
  • 其实这只能算一个数据的展示,压根啥都没分析出来,还是要多从what、why、how三方面考虑问题。
  • 写的不好还请各位海涵,欢迎各位底下留言批评。

你可能感兴趣的:(数据分析)