• 可视化分析三


    可视化分析三

    一.今日内容

    1、 编程,在一个折线图中,画出影片ABC各自的周票房(文件中的所有涉及地区总周票房)收入变化,要求将输出的折线图保存成图像文件ans0303.jpg,程序源代码保存成ans0303.pyY轴表示票房收入,单位为“万元”;X轴表示时间,以“0123…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:UsersliuDesktopargfilm_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中的简单例子来进行模拟,关键是里边的各个参数所代表的含义

  • 相关阅读:
    Django中关于MySQL的bug总结
    css的外边距合并或者外边距塌陷问题
    双十二开篇之作
    浅谈css的行内类型标签和块级标签
    css的padding和border问题
    Django中的bug总结
    css清除浮动的方法
    Ubuntu图标变成问号
    pku1149 PIGS
    sizeof()功能
  • 原文地址:https://www.cnblogs.com/ningl666/p/13418876.html
Copyright © 2020-2023  润新知