题目要求:
1.读取豆瓣.xlsx文件
2.根据电影名称,绘制出词云图(频率自选字段),可选前十部电影
3.绘制电影评分人数条形图(可使用分箱)
4.绘制出电影类型的各自占比(多类型的取第一种即可)
5.将前20部电影绘制成表格展示(pyecharts官网查询表格如何绘制)
一、读取文件
import re
import pandas as pd
import numpy as np
from pyecharts.globals import CurrentConfig,NotebookType
CurrentConfig.NOTEBOOK_TYPE =NotebookType.JUPYTER_LAB
import pyecharts.options as opts
from pyecharts.charts import WordCloud
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts.charts import Pie
from pyecharts.components import Table
from pyecharts.options import ComponentTitleOpts
# 1.读取豆瓣.xlsx文件
douban=pd.read_excel('./豆瓣.xlsx')
print(douban.head())
二、词云图
# 2.根据电影名称,绘制出词云图(频率自选字段),可选前十部电影
data1=douban[['电影名','评分人数']]
# print(data1)
data1['评分人数']=data1['评分人数'].str.replace('人评价','').astype(int)
data1['电影名']=data1['电影名'].str.replace(r'/.*','',regex=True).astype(str)
# print(data1.head(10))
# 转换格式
data1=data1.head(10).values.tolist()
# print(data1)
# 生成词云图数据
wordcloud=WordCloud()
wordcloud.add("",data1)
# 设置标题
wordcloud.set_global_opts(title_opts=opts.TitleOpts(title='前十部电影的词云图'))
wordcloud.load_javascript()
wordcloud.render_notebook()
三、条形图
分箱的参考:
python数据分析之数据分箱_python 分箱-CSDN博客
# 3.绘制电影评分人数条形图(可使用分箱)
douban['人数']=douban['评分人数'].str.replace('人评价','').astype(int)
# douban['人数区间']=pd.cut(douban['人数'],bins=[100000,200000,300000,400000,500000,600000,700000,800000,900000,1000000,1100000,1200000,1300000,1400000,1500000,1600000,1700000,1800000,1900000,2000000,2100000,2200000,2300000,2400000,2500000,2600000,2700000,2800000,2900000,3000000])
# print(douban.head())
douban['人数等级']=pd.cut(douban['人数'],
bins=[0,500000,1000000,1500000,2000000,2500000,3000000],
labels=['0万以上','50万以上','100万以上','150万以上','200万以上','250万以上'])
# print(douban.head())
people_counts=douban['人数等级'].value_counts().sort_index()
# print(people_counts)
bar=Bar()
bar.add_xaxis(people_counts.index.tolist())
bar.add_yaxis("",people_counts.values.tolist(),category_gap='60%')
bar.set_series_opts(label_opts=opts.LabelOpts(position='right'))
bar.reversal_axis()
bar.set_global_opts(title_opts=opts.TitleOpts(title='电影评分的区间人数'))
bar.load_javascript()
bar.render_notebook()
四、饼图
# 4.绘制出电影类型的各自占比(多类型的取第一种即可)
douban['电影类型']=douban['类型'].str.split().str[0]
# print(douban.head())
# douban['电影类型'].value_counts()
movie_type=douban['电影类型'].value_counts().sort_index()
# print(movie_type)
pie=Pie()
pie.add("",[list(z) for z in zip(movie_type.index,movie_type.tolist())])
pie.set_global_opts(title_opts=opts.TitleOpts(title='电影类型的各自占比'))
pie.load_javascript()
pie.render_notebook()
五、表格
import re
headers=['排名','电影名','年份','评分','评分人数']
data2=douban[['排名','电影名','年份','评分','评分人数']]
# print(data2.head())
data2['电影名']=data2['电影名'].str.replace(r'/.*','',regex=True).astype(str)
print(data2.head())
table=Table()
table.add(headers,data2.head(20).values.tolist())
table.load_javascript()
table.render_notebook()