美文网首页我爱编程
7.案例:饭店营业状况数据分析

7.案例:饭店营业状况数据分析

作者: 零_WYF | 来源:发表于2018-01-26 21:04 被阅读737次

    需求:
    1)使用pandas读取文件data.csv中的数据,创建DataFrame对象,并删除其中所有缺失值;
    2)使用matplotlib生成折线图,反应该饭店每天的营业额情况,并把图形保存为本地文件first.png;
    3)按月份进行统计,使用matplotlib绘制柱状图显示每个月份的营业额,并把图形保存为本地文件second.png;
    4)按月份进行统计,找出营业额最大的月份写入文件maxMonth.txt;
    5)按季度统计该饭店2017年的营业额数据,使用matplotlib生成饼状图显示2017年4个季度的营业额分布情况,并把图形保存为本地文件third.png

    1. 引入模块

    import csv
    import datetime
    import random
    import codecs
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    # 文件名
    filename = './data.csv'
    

    2.生成模拟数据

    # 生成模拟数据
    # 把数据以UTF8编码写入文件
    with codecs.open(filename,"w","utf-8") as file:
        wr = csv.writer(file)
        # 写入标题
        wr.writerow(['日期','营业额'])
        # 生成模拟的数据
        startdate = datetime.date(2017,1,1)
        # 生成365个数据,根据需要可以调整
        for i in range(365):
            # 生成数据,并写入csv文件
            amount = 300 + i * 5 + random.randrange(100) # 营业额
            wr.writerow([str(startdate),amount])
            # 生成下一天
            startdate = startdate + datetime.timedelta(days=1)
    

    3.读取csv文件,加载数据

    # 1.读取csv文件,加载数据
    df_obj = pd.read_csv('./data.csv')
    print(df_obj)
    #################运行结果################
                日期   营业额
    0    2017-01-01   352
    1    2017-01-02   362
    2    2017-01-03   320
    3    2017-01-04   402
    4    2017-01-05   388
    5    2017-01-06   410
    6    2017-01-07   339
    ..          ...   ...
    359  2017-12-26  2193
    360  2017-12-27  2185
    361  2017-12-28  2178
    362  2017-12-29  2162
    363  2017-12-30  2207
    364  2017-12-31  2123
    
    [365 rows x 2 columns]
    ########################################
    

    4. 缺失值的处理,丢弃

    # 2. 缺失值的处理,丢弃
    df_obj.dropna()
    
    运行结果
    image.png

    5. 生成每天营业额的折线图

    # 3. 生成每天营业额的折线图
    plt.plot(df_obj['营业额'])
    plt.savefig('first.png')
    plt.show()
    
    运行结果
    image.png

    6. 按月统计,生成柱状图

    # 4. 按月统计,生成柱状图
    df_obj1 = df_obj[:]
    df_obj1['month'] = df_obj1['日期'].map(lambda x:x[:x.rindex('-')])
    # 按照month进行分组求和
    df_obj1 = df_obj1.groupby(by='month').sum()
    # print(df_obj1)
    x = np.array(range(1,13))
    width = 0.75 # 柱的宽度
    plt.bar(x,df_obj1['营业额'],width,color='b',alpha=0.6)
    plt.savefig('second.png')
    plt.show()
    
    运行结果
    image.png

    7. 查找营业额最大的月份的数据,并保存到文件

    # 5.查找营业额最大的月份的数据,并保存到文件
    m = df_obj1['营业额'].max()
    # print(m)
    df_obj2 = df_obj1[df_obj1['营业额'] == m]
    # print(df_obj2)
    # 将结果保存到文件
    max_filename = './maxMonth.txt'
    with codecs.open(max_filename,"w","utf-8") as f:
        wr = csv.writer(f)
        # 写入标题
        wr.writerow(['营业额最大月份'])
        # 写入数据
        wr.writerow([m])
    
    
    
    print(df_obj1[:3]['营业额'])
    # 第一季度
    q1 = df_obj1[:3]['营业额'].sum()
    q2 = df_obj1[3:6]['营业额'].sum()
    q3 = df_obj1[6:9]['营业额'].sum()
    q4 = df_obj1[9:12]['营业额'].sum()
    print(q1,q2,q3,q4)
    
    # 绘制 饼状图
    plt.pie([q1,q2,q3,q4],labels=['q1','q2','q3','q4'])
    plt.savefig('three.png')
    plt.show()
    
    运行结果
    image.png

    相关文章

      网友评论

        本文标题:7.案例:饭店营业状况数据分析

        本文链接:https://www.haomeiwen.com/subject/mkawaxtx.html