ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

可视化分析三

2020-08-02 15:28:15  阅读:260  来源: 互联网

标签:分析 plt 票房 movie days 可视化 total data


可视化分析三

一.今日内容

1、 编程,在一个折线图中,画出影片A、B、C各自的周票房(文件中的所有涉及地区总周票房)收入变化,要求将输出的折线图保存成图像文件ans0303.jpg,程序源代码保存成ans0303.py,Y轴表示票房收入,单位为“万元”;X轴表示时间,以“0、1、2、3…n”的非负整数作为刻度值,单位为“周”,要求:

1) 折线图中含图例;

2) 三部电影用不同的颜色和线型表达;

3) 将电影A第一周的票房收入,电影B第二周的票房收入,电影C第三周的票房收入顺序存入ans0304.dat文件中,注意ans0303.dat只包含3个浮点型票房数据,以万元为单位,保留6位小数,数据以英文逗号分隔,不换行,文件样例如下:

23.123456,20.654321,18.123456

 

4) 对本题周票房的说明如下:若某部电影从某月2日开始上映,则从当月2日到8日为其第一周票房,9日至15日为其第2周票房,以此类推。

 

二.内容源码

import pandas as pd
import numpy as np
import datetime,sys
import matplotlib.pyplot as plt

csv_file = pd.read_csv(r"C:\Users\liu\Desktop\arg\film_log3.csv",sep=';',header=None)
csv_file.fillna(0,inplace=True)
csv_file = csv_file.drop_duplicates()
def get_movie(str):
    return csv_file[csv_file[0].isin([str])]
def real_data(movie_name):
    data = get_movie(movie_name)
    index = np.arange(data.index.size)
    return data.set_index(index)
def get_dt(data):
    start_time = datetime.datetime.strptime(data[1][0], '%Y.%m.%d')
    end_time = datetime.datetime.strptime(data[2][0], '%Y.%m.%d')
    c_days = (end_time - start_time).days + 1
    return c_days
def a_week_total(data,days):
    total = data[7].str.replace('票房(万)','').astype(float).sum()
    return total
def main(name):
    data = real_data(name)
    days = get_dt(data)
    total = a_week_total(data,days)
    week = divmod(days,7)
    a_day = total / days
    total_weeks = [float('%.6f'%(a_day*7)) for i in range(week[0])]
    total_weeks.append(float('%.6f'%(a_day * week[1])))
    return total_weeks
movie_a = main("《简单爱》")
movie_b = main("《少年班》")
movie_c = main( "《冲上云霄》")

l1, = plt.plot(np.arange(len(movie_a)),movie_a,'r')
l2, = plt.plot(np.arange(len(movie_b)),movie_b,'g')
l3, = plt.plot(np.arange(len(movie_c)),movie_c,'b')
plt.ylabel('周平均票房(万元)')
plt.xlabel('')
plt.legend([l1,l2,l3],['《简单爱》',"《少年班》" ,"《冲上云霄》"],loc=0)
plt.rcParams['font.sans-serif']=['SimHei'] #显示中文标签
plt.rcParams['axes.unicode_minus']=False   #这两行需要手动设置
plt.savefig('ans0303.jpg')
plt.show()
f = open('ans0303.dat','w')
f.write('%f,%f,%f'%(movie_a[0],movie_b[1],movie_c[2]))
f.close()

 

 

 

 

三.遇到问题

  1. 折线图的画法
  2. 各个电影数据的获取以及数据分析等

四.解决方案

折线图可以根据matplotlib中的简单例子来进行模拟,关键是里边的各个参数所代表的含义

 

标签:分析,plt,票房,movie,days,可视化,total,data
来源: https://www.cnblogs.com/ningl666/p/13418876.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有