美文网首页
餐厅项目分析1

餐厅项目分析1

作者: 奶油裙子 | 来源:发表于2023-03-22 17:16 被阅读0次

    不同维度进行数据分析

    针对订单order ID:
    什么菜最受欢迎
    点菜种类
    点菜数量
    消费金额最大
    平均消费

    针对时间日期进行分析:

    点菜量比较集中的时间
    哪一天订餐量最大
    星期几就餐人数最多

    技术点

    拼接数据:pd.concat([列1,...])
    分组进行统计(分组求和)
    排序,切片Top10
    绘制柱状图走势和高度

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from IPython.core.interactiveshell import InteractiveShell
    import openpyxl
    
    InteractiveShell.ast_node_interactivity = "all"
    pd.options.display.max_columns = 1000
    pd.options.display.max_rows = 30
    pd.set_option('display.float_format', lambda x: '%5f' % x)
    %matplotlib inline
    plt.rcParams['font.sans-serif'] = 'SimHei'
    plt.rcParams['axes.unicode_minus'] = False
    %config Inlinebackend.config_format = 'svg'
    
    #  1.加载数据
    data1 = pd.read_excel('1.xlsx', sheet_name='detail1')
    data2 = pd.read_excel('1.xlsx', sheet_name='detail2')
    data3 = pd.read_excel('1.xlsx', sheet_name='detail3')
    #  2.数据预处理(合并数据,NA等处理),分析数据
    data = pd.concat([data1, data2, data3], axis=0)  #按照行进行拼接数据
    #data.head(5)
    data.dropna(axis=1, inplace=True)  #按照列删除NA列,并且修改源数据。inplace=True是在原数据上修改。
    data.info()  #获取 DataFrame 的简要摘要
    
    #统计卖出菜品的平均价格
    round(date['amounts'].mean(), 2)  #方法一:pandas自带函数
    round(np.mean(data['amounts'], 2))  #方法二:numpy函数处理
    
    #频数统计,什么菜最受欢迎  (对菜名进行频数统计,取最大前10名)
    dishes_count = data['dishes_name'].value_counts()[:10]
    print(dishes_count)
    
    #  3.数据可视化matplotlib
    dishes_count.plot(kind='line', color=['r'])  #折线图
    dishes_count.plot(kind='bar', fontsize=16)  #柱状图
    for x, y in enumerate(dishes_count):
        print(x, y)
        plt.text(x, y + 2, y, ha='center', fontsize=12)  #text(水平位置,高的位置,数值,字水平位置)
    
    #  订单点菜的种类最多
    data_group = data['order_id'].value_counts()[:10]
    data_group.plot(kind='bar', fontsize=16, colors=['r', 'm', 'b', 'g', 'y'])
    plt.title('订单点菜的种类Top10')
    plt.xlabel('订单ID', fontsize=16)
    plt.ylabel('点菜种类', fontsize=16)
    #  8月份餐厅订单点菜种类前10名
    
    #  订单ID点菜数量Top10(分组order_id,counts求和,排序,前十)
    data['total_amounts'] = data['counts'] * data['amounts']  #统计单道菜消费总额
    dataGroup = data[['order_id', 'counts', 'amounts',
                      'total_amounts']].groupby(by='order_id')
    Group_sum = dataGroup.sum()  #分组求和
    sort_counts = Group_sum.sort_counts(by='counts', ascending=False)
    sort_counts['counts'][:10].plot(kind='bar', fontsize=16)
    plt.xlabel('订单ID')
    plt.ylabel('点菜数量')
    plt.title('订单ID点菜数量Top10')
    #八月份餐厅订单点菜数量前10名
    
    #哪个订单ID消费最多Top10
    sort_total_counts = Group_sum.sort_counts(by='total_amounts', ascending=False)
    sort_total_counts['total_amount'][:10].plot(kind='bar', fontsize=16)
    plt.xlabel('订单ID')
    plt.ylabel('消费金额')
    plt.title('订单ID消费金额Top10')
    #八月份餐厅订单消费金额前10名
    
    #哪个订单ID平均消费最贵
    Group_sum['average'] = Group_sum['total_amounts']/Group_sum['counts']
    sort_average = Group_sum.sort_values(by'average',ascending=False)
    sort_average['average'][:10].plot(kind='bar')
    plt.xlabel('订单ID')
    plt.ylabel('平均消费单价')
    plt.title('订单ID平均消费单价Top10')
    #八月份餐厅订单平均消费单价前10名
    
    #  一天当中什么时间段,点菜量比较集中(hour)
    data['hourcount'] = 1  #  新列,用作计数器
    data['time'] = pd.to_datetime(data['place_order_time'])  #  将时间转换为日期类型存储
    data['hour'] = data['time'].map(lambda x: x.hour)
    gp_by_hour = data.groupby(by='hour').count()['hourcount']
    gp_by_hour.plot(kind='bar')
    plt.xlabel('小时')
    plt.ylabel('点菜数量')
    plt.title('点菜与小时的关系图')
    
    #  哪一天订单数量最多
    data['daycount'] = 1
    data['day'] = data['time'].map(lambda x: x.day)  #解析出天
    gp_by_day = data.groupby(by='day').count()['daycount']
    gp_by_day.plot(kind='bar')
    plt.xlabel('8月份日期')
    plt.ylabel('点菜数量')
    plt.title('点菜数量与日期的关系图')
    
    #  查看星期几的人数最多,订餐数最多,映射数据到星期
    data['weekcount'] = 1
    data['weekday'] = data['time'].map(lambda x: x.weekday())  #解析出星期
    gp_by_day = data.groupby(by='weekday').count()['weekcount']
    gp_by_day.plot(kind='bar')
    plt.xlabel('星期')
    plt.ylabel('点菜数量')
    plt.title('点菜数量与星期关系图')
    

    相关文章

      网友评论

          本文标题:餐厅项目分析1

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