2019年‘泰迪杯’数据分析职业技能大赛A题——个人代码分享

2023-11-16

目录

题目

任务 1 数据预处理与统计

任务 2 数据分析与可视化

代码展示

任务一 

任务二


题目

任务 1 数据预处理与统计

任务 1.1 对数据作必要的预处理,在报告中列出处理步骤,将处理后的结 国保存为“task1_1.csv”。

任务 1.2 统计每个大类商品的销售金额,将结果保存为“task1_2.csv”。

任务 1.3 统计每个中类商品的促销销售金额和非促销销售金额,将结果保 存为“task1_3.csv”。

任务 1.4 统计生鲜类产品和一般产品的每周销售金额,将结果保存为 “task1_4.csv”。

任务 1.5 统计每位顾客每月的消费额及消费天数,将结果保存为 “task1_5.csv”,并在报告中列出用户编号为 0-10 的结果。

任务 2 数据分析与可视化

任务 2.1 绘制生鲜类商品和一般商品每天销售金额的折线图,并分析比较 两类产品的销售状况。

任务 2.2 按月绘制各大类商品销售金额的占比饼图,并分析其销售状况。

任务 2.3 绘制促销商品和非促销商品销售金额的周环比增长率柱状图。

代码展示

任务一 

代码展示:

#任务1.1
import pandas as pd
import numpy as np
data=pd.read_csv('D:\\桌面\\2019A题\\附件.csv',engine='python',encoding='gbk')
data.pop('规格型号')
data.pop('单位')
data.pop('销售月份')
data.pop('商品编码')
data.index=data['顾客编号']
data.pop('顾客编号')
data.销售日期=pd.to_datetime(data['销售日期'],format='%Y%m%d',errors='coerce')
data.to_csv('D:\\桌面\\2019A题\\task1_1.csv',encoding='utf-8-sig')

#任务1.2
data12=pd.read_csv('D:\\桌面\\2019A题\\task1_1.csv',engine='python')
df12=data12.groupby('大类名称').sum('销售金额')
sales=df12['销售金额']
sales.to_csv('D:\\桌面\\2019A题\\task1_2.csv',encoding='utf-8-sig')

#任务1.3
df13=data12.groupby(['中类名称','是否促销']).sum('销售金额')
sales13=df13['销售金额']
sales13.to_csv('D:\\桌面\\2019A题\\task1_3.csv',encoding='utf-8-sig')


#任务1.4
df14=data12.groupby('商品类型')
data14=df14.get_group('生鲜')
data141=df14.get_group('一般商品')
data141=data141.groupby('销售日期').sum('销售金额')
data14=data14.groupby('销售日期').sum('销售金额')
x=len(data14)
fresh=[]
ord=[]
sum14=0
sum141=0
lst14=data14['销售金额'].tolist()
lst141=data141['销售金额'].tolist()
for i in range(0,x):
    sum14=sum14+lst14[i]
    sum141=sum141+lst141[i]
    if (i+1)%7==0:
        fresh.append(sum14)
        ord.append(sum141)
        sum14=0
        sum141=0
data14=pd.DataFrame({'生鲜':fresh,'一般商品':ord},index=range(1,len(fresh)+1))
data14.to_csv('D:\\桌面\\2019A题\\task1_4.csv',encoding='utf-8-sig')

#任务1.5
data12.销售日期=pd.to_datetime(data12['销售日期'],format='%Y/%m/%d')
data12['月']=data12['销售日期'].dt.month
df15=data12.groupby('月')
data15={}
for i in range(1,5):
    df151=df15.get_group(i)
    con = df151.groupby('顾客编号').sum('销售金额')
    day = df151.groupby(['顾客编号','销售日期']).size()
    day=day.groupby('顾客编号').size()
    data15['{:d}月消费天数'.format(i)] = day
    data15['{:d}月消费额'.format(i)]=con['销售金额']
    data15['{:d}月消费天数'.format(i)]=day
data15=pd.DataFrame(data15)
data15=data15.fillna(value=0)
data15.to_csv('D:\\桌面\\2019A题\\task1_5.csv',encoding='utf-8-sig')

任务二

代码展示

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=["SimHei"]
plt.rcParams['axes.unicode_minus']=False

#任务2.1
data12=pd.read_csv('D:\\桌面\\2019A题\\task1_1.csv',engine='python')
df14=data12.groupby('商品类型')
data14=df14.get_group('生鲜')
data141=df14.get_group('一般商品')
data141=data141.groupby('销售日期').sum('销售金额')
data14=data14.groupby('销售日期').sum('销售金额')
plt.plot(data14.index,data14['销售金额'],label='生鲜')
plt.plot(data141.index,data141['销售金额'],label='一般商品')
plt.xticks(range(0,len(data14),5),rotation=90)
plt.title('生鲜类商品和一般商品每天销售金额折线图')
plt.legend()
plt.show()

#任务2.2
data12.销售日期=pd.to_datetime(data12['销售日期'],format='%Y/%m/%d')
data12['月']=data12['销售日期'].dt.month
data22=data12.groupby('月')
for i in range(1,5):
    df22=data22.get_group(i)
    df22=df22.groupby('大类名称').sum('销售金额')
    patches,l_text,p_text=plt.pie(df22['销售金额'],labels=df22.index,autopct='%.2f%%',textprops={'size':6},startangle=90)
    plt.title('各大类商品{:d}销售金额的占比饼图'.format(i))
    for t in p_text:
        t.set_size(5)
    for i in l_text:
        t.set_size(9)
    plt.show()

#任务2.3
data12=data12.groupby('是否促销')
def promotion(str):
    datay = data12.get_group(str)
    datay=datay.groupby('销售日期').sum('销售金额')
    sale23=datay['销售金额'].tolist()
    x=len(datay)
    sum=0
    sumy=[]
    rate=[]
    for i in range(0,x):
        sum=sum+sale23[i]
        if (i+1)%7==0:
            sumy.append(sum)
            sum=0
    for i in range(1,len(sumy)):
        rt=(sumy[i]-sumy[i-1])/sumy[i-1]
        rate.append(rt)
    x=[i for i in range(1,len(rate)+1) ]
    if str=='是':
        label='促销'
    else:
        label='非促销'
    plt.bar(x,rate,label=label)
    rate=np.array(rate)
    rate=np.round(rate,2)
    rate=rate.tolist()
    for x1 in x:
        plt.text(x1,rate[x1-1],rate[x1-1],va='bottom',ha='center')
promotion('是')
promotion('否')
plt.title('促销商品和非促销商品销售金额的周环比增长率柱状图')
plt.legend()
plt.show()

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2019年‘泰迪杯’数据分析职业技能大赛A题——个人代码分享 的相关文章

  • 在 Python 中将列表元素作为单独的项目返回

    Stackoverflow 的朋友们大家好 我有一个计算列表的函数 我想单独返回列表的每个元素 如下所示 接收此返回的函数旨在处理未定义数量的参数 def foo my list 1 2 3 4 return 1 2 3 4 列表中的元素数
  • 在 Celery 任务中调用 Google Cloud API 永远不会返回

    我正在尝试拨打外部电话Google Cloud Natural Language API从一个内Celery任务 使用google cloud python包裹 问题是对 API 的调用永远不会返回 挂起 celery task def g
  • matplotlib 图中点的标签

    所以这是一个关于已发布的解决方案的问题 我试图在我拥有的 matplotlib 散点图中的点上放置一些数据标签 我试图在这里模仿解决方案 是否有与 MATLAB 的 datacursormode 等效的 matplotlib https s
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • 更好地相当于这个疯狂的嵌套 python for 循环

    for a in map for b in map a for c in map b for d in map c for e in map d print a b c d e 上面的代码用于创建图中一定长度的所有路径 map a 表示从
  • PyQt 使用 ctrl+Enter 触发按钮

    我正在尝试在我的应用程序中触发 确定 按钮 我当前尝试的代码是这样的 self okPushButton setShortcut ctrl Enter 然而 它不起作用 这是有道理的 我尝试查找一些按键序列here http ftp ics
  • 打印数字时添加千位分隔符[重复]

    这个问题在这里已经有答案了 我真的不知道这个问题的 名称 所以它可能是一个不正确的标题 但问题很简单 如果我有一个数字 例如 number 23543 second 68471243 我想要它使print 像这样 23 54368 471
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • Django REST Framework - CurrentUserDefault 使用

    我正在尝试使用CurrentUserDefault一个序列化器的类 user serializers HiddenField default serializers CurrentUserDefault 文档说 为了使用它 请求 必须作为
  • Python GTK+ 画布

    我目前正在通过 PyGobject 学习 GTK 需要画布之类的东西 我已经搜索了文档 发现两个小部件似乎可以完成这项工作 GtkDrawingArea 和 GtkLayout 我需要一些基本函数 如 fillrect 或 drawline
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • 如何以正确的方式为独立的Python应用程序制作setup.py?

    我读过几个类似的主题 但还没有成功 我觉得我错过或误解了一些基本的事情 这就是我失败的原因 我有一个用 python 编写的 应用程序 我想在标准 setup py 的帮助下进行部署 由于功能复杂 它由不同的 python 模块组成 但单独
  • Firebase Firestore:获取文档的生成 ID (Python)

    我可以创建一个新文档 带有自动生成的 ID 并存储对其的引用 如下所示 my data key value doc ref db collection u campaigns add my data 我可以像这样访问数据本身 print d
  • 根据 Pandas 中的列表选择数据框行的子集

    我有一个数据框df1并列出x In 22 import pandas as pd In 23 df1 pd DataFrame C range 5 B range 10 20 2 A list abcde In 24 df1 Out 24
  • 如何在Python脚本中从youtube-dl中提取文件大小?

    我是 python 编程新手 我想在下载之前提取视频 音频大小 任何 YouTube 视频 gt gt gt from youtube dl import YoutubeDL gt gt gt url https www youtube c

随机推荐

  • 基于Pytorch1.8.0+Win10+RTX3070的MNIST网络构建与训练

    直接上代码 先上整个的代码 import torch import torchvision from torch utils data import DataLoader import matplotlib pyplot as plt im
  • Vue3 用src动态引入本地图片

    Vue3 用src动态引入本地图片 东非不开森的主页 躲起来的星星也在努力发光 你也要 如有错误或不足之处 希望可以指正 非常感谢 src动态引入本地图片 1 vue cli搭建的项目 2 vite搭建的项目动态引入本地图片 1 vue c
  • 微信小程序 表单 form 组件

    完整微信小程序 Java后端 技术贴目录清单页面 必看 表单 将组件内的用户输入的switch input checkbox slider radio picker 提交 当点击 form 表单中 form type 为 submit 的
  • 《微机原理》-绪论

    微机原理 文章目录 微机原理 前言 一 微型计算机系统组成 1 早期计算机硬件系统 2 微型计算机系统硬件组成 二 存储器 前言 本系列博客主要是观看西安电子科技大学看老师于2009年录制的 微机原理视频 课程的CPU以8086CPU为例进
  • 基于粒子群改进深度信念网络的回归分析,基于PSO-DBN的回归分析

    目录 背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机 RBM 粒子群算法的原理 DBN的粒子群改进深度信念网络的回归分析 基本结构 主要参数 数据 MATALB代码 结果图 展望 背影 DBN是一种深度学习神经网络 拥有提
  • elementUi中的图片预览功能(图片放大、缩小)preview-src-list属性

    一 图片有时候需要放大预览 放大后可支持放大缩小等功能 element中的preview src list属性可以实现 二 主要代码
  • 2023前端面试题及答案整理(JavaScript)

    JS类型 string number boolean undefined null symbol es6 BigInt es10 object 值类型和引用类型的区别 两种类型的区别是 存储位置不同 值类型存储在栈 stack 中 占空间小
  • sublime Text3下载与安装以及解决安装Install Package时遇见的问题

    sublime Text3下载与安装以及解决安装Install Package时遇见的问题 最近下载安装sublime Text3后 在安装Install Package时遇到了几个问题 网上搜了一大圈终于解决了 特此记录为以后之便 一 下
  • 关于光纤收发器的一些基本常识介绍

    光纤收发器是网络数据传输中必不可缺少的一种设备 那么 什么是光纤收发器呢 光纤收发器都有什么组成的呢 光纤收发器是怎么分类的呢 光纤收发器有哪些特点呢 光纤收发器在数据传播过程中起到什么作用呢 接下来我们就跟随飞畅科技的小编一起来详细了解下
  • idea自动导包、生成作者日期、快捷键自动生成序列化版本号、maven配置。

    文件编码修改 在菜单中的File gt Settings gt Editor gt File Encoding下修改项目文件的编码 自动导包删除包 在菜单中的File gt Settings gt Editor gt General gt
  • docker Centos7镜像无法联网

    docker镜像启动之后 ping外网的IP无法连通 丢失率100 启动命令的问题 启动的时候需要添加网络策略参数 net 建议启动命令如下 docker run net host privileged itd centos 7 usr s
  • switch语句中的case结尾是否必须添加break语句?

    一般必须在case语句结尾添加break语句 但不是一定必须的 switch c 语句中c可以是int long char unsigned int等类型 唯独不可以是float类型 我百度搜到的比较容易理解的解释如下 一 不加break就
  • Sentinel注解集合排序-代码笔记

    private static void insertSorted List
  • Console.WriteLine打印中文为何出乱码?

    因为你当前环境代码页是437 是美国英语的字符编码 你把你环境设置成936就是简体中文字符编码环境了 你当前的是这个 Console OutputEncoding Encoding GetEncoding 437 设置成这样就支持中文编码了
  • 虚拟机运用vscode实现可视化代码跟踪调试

    可视化代码跟踪调试 一 安装基于跨平台多类型代码编辑器VScode 二 安装vscode的c c 插件 三 配置launch json和task json这两个文件 1 创建文件 2 打开vscode 四 编译调试c 程序 一 安装基于跨平
  • 隐私协议&授权访问的实现

    目录 交互逻辑 隐私协议的实现 初始化隐私协议 隐私协议确认弹窗 再次确认弹窗 隐私政策 用户协议界面 用户协议界面 隐私政策界面 隐私协议的文档 授权访问的实现 初始化授权访问 授权访问工具类 隐私协议 授权访问的示例项目 交互逻辑 用户
  • 华为OD机试 - 约瑟夫问题(Java)

    题目描述 输入一个由随机数组成的数列 数列中每个数均是大于 0 的整数 长度已知 和初始计数值 m 从数列首位置开始计数 计数到 m 后 将数列该位置数值替换计数值 m 并将数列该位置数值出列 然后从下一位置从新开始计数 直到数列所有数值出
  • Caffe源码中syncedmem文件分析

    Caffe源码 caffe version 09868ac date 2015 08 15 中有一些重要文件 这里介绍下syncedmem文件 1 include文件 1
  • Qt之qcustomplot绘图总结

    1 绘图类 QCPGraph 折线图 QCPCurve 用于曲线图 可以有循环 QCPBars 柱形图 如果有多个QCPBars 可以依次重叠 QCPStatisticalBox 需实例化 盒子图 QCPColorMap 实例化 色谱图 Q
  • 2019年‘泰迪杯’数据分析职业技能大赛A题——个人代码分享

    目录 题目 任务 1 数据预处理与统计 任务 2 数据分析与可视化 代码展示 任务一 任务二 题目 任务 1 数据预处理与统计 任务 1 1 对数据作必要的预处理 在报告中列出处理步骤 将处理后的结 国保存为 task1 1 csv 任务