简易数据分析--豆瓣电影
一.数据
通过爬虫爬取豆瓣的top250,爬取数据(排名,片名,导演,上影时间,国家,类型,演员,时长,评分,页面)
二.处理数据
1.导入数据
data = pd.read_csv('data.csv')
data.head()
2.进行年月分析
统计出不同年份的电影数量
year = data.groupby('上影时间')['上影时间'].count()
#或者用year = data['上影时间'].value_counts()
year
利用pyecharts进行数据展示(折线图)
pycharts中文使用手册(注意版本):http://pyecharts.org/#/zh-cn/intro
import pyecharts.options as opts
from pyecharts.charts import Line
#注意缩进问题
c = (
Line()
.add_xaxis(list(year.index))
.add_yaxis("年份", list(year))
.set_global_opts(title_opts=opts.TitleOpts(title="电影年份分析*折线图"))
.render_notebook()
)
c
3.进行国家分析
简单处理国家的数据
data['国家'][:50]
由于有些电影是合拍的,出现多个国家的选取第一个出现的,若出现有’中国‘的统计为中国(比如中国大陆 中国香港),利用map方法,还要注意去掉空格(否则会出现重复的数据)
def get_country(i):
str = '中国'
if str in i:
return str
else:
return i.split(' ')[0].strip()
data['country'] = data['国家'].map(get_country)
data['country'][0:50]
进行统计数量
country = data.groupby('country')['country'].count()
country
利用pyecharts进行数据展示(饼图)
from pyecharts import options as opts
from pyecharts.charts import Pie
c = (
Pie()
.add("", [list(z) for z in zip(list(country.index), list(country))])
.set_global_opts(title_opts=opts.TitleOpts(title="国家"))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
.render_notebook()
)
c
效果不太好,应该只选取前10的作为展示更好
4.对演员进行分析
处理演员数据
由于同一部电影有多个主演,所以将演员一列全部放入同一个字符串,然后再进行分割
all_actors = ""
for i in range(250):
#最后一个可能会变float型
if isinstance(data.iloc[i,6],str):
# print(type(all_actors),type(data.iloc[i,6]))
all_actors += data.iloc[i,6]
print(all_actors)
actors = all_actors.split(' ')
actors
利用counter进行统计演员出现的次数
from collections import Counter
dict_actors = Counter(actors)
# dict_actors
#最后一个会空,注意
del dict_actors['']
dict_actors
选取出现次数前十的演员
top10 = dict_actors.most_common(10)
top10
提取演员和出现的次数
attr = []
v = []
for i in top10:
attr.append(i[0])
v.append(i[1])
利用pycharts进行数据展示(饼图)
c = (
Pie()
.add("", [list(z) for z in zip(attr, v)])
.set_global_opts(title_opts=opts.TitleOpts(title="演员"))
.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
.render_notebook()
)
c