电影票房数据分析(二)数据可视化

 行业动态     |      2019-11-13 13:00

在上一部分 已经获取到了2011年至今的票房数据,并保存在了mysql中。
本文将在实操中讲解如何将mysql中的数据抽取出来并做成动态可视化。


第一张图,我们要看一下每月的票房走势,毫无疑问要做成折线图,将近10年的票房数据放在一张图上展示。

数据抽取:
采集到的票房数据是按天统计的,并且我们只看正常上映的和点映的,其他如重映等场次均不在本次统计内。
因此我们先对mysql中的数据releaseinfo字段进行筛选,然后根据上映年份和月份进行分组聚合,得到10年内每月的票房数据。
用sql取到数据后,再将不同年份的数据分别放入list中,原始数据是以 万 为单位的str,这里我们折算为以 亿 为单位的float。




构造图像:
x轴数据为年份,
再分别将不同年份的票房数据添加到y轴中,
最后配置下图像的属性即可。




config = {...} # db配置省略
conn = pymysql.connect
cursor = conn.cursor
sql = 
 select substr year, 
 substr month, 
 round,2) monthbox 
 from movies_data 
 where  = 上映 or `releaseinfo`= 点映 ) 
 group by year,month order by year,month
cursor.execute
data = cursor.fetchall
x_data = list for i in data]))
x_data.sort
x_data = list)
y_data1 = [round / 10000, 2) for i in data if i[0] == 2011 ]
y_data2 = [round / 10000, 2) for i in data if i[0] == 2012 ]
y_data3 = [round / 10000, 2) for i in data if i[0] == 2013 ]
y_data4 = [round / 10000, 2) for i in data if i[0] == 2014 ]
y_data5 = [round / 10000, 2) for i in data if i[0] == 2015 ]
y_data6 = [round / 10000, 2) for i in data if i[0] == 2016 ]
y_data7 = [round / 10000, 2) for i in data if i[0] == 2017 ]
y_data8 = [round / 10000, 2) for i in data if i[0] == 2018 ]
y_data9 = [round / 10000, 2) for i in data if i[0] == 2019 ]
cursor.close
conn.close