python处理BI报表 python做报表汇总_数据读取

由于工作的关系,平常的工作内容接触数据比较多,处理起来也比较繁琐,尤其是清理数据,重复性比较高。面对着大量的数据关系,理清它确实是需要花费点时间。

恰好最近管理层对数据关注度提升了,需要我们每周提供一份报表,报表自动化我一直都想在做的,但是代码一直在摸索中,所以突破不了。本篇也是对报表自动化的前半部分做个详细的讲解,包括数据读取、拆解、透视等。

来,先看我们其中一份数据是这样子的

python处理BI报表 python做报表汇总_数据_02

我需要从这个数据里知道它的类别和总计数据,之后,我会添加数据的趋势

首先,我们先把需要用到的库导进去,如果没有,可以选安装,也非常简单:pip install XX

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

把库导进去后,找到准备好的数据文件路径,就可以开始把它读出来了。读取数据用了pandas里的内置函数pd.read_excel(),接下来我们用一下刚才那个文件。

chanpin = pd.read_excel(r"E:\深圳大区\报表源数据\产品类.xlsx",usecols=[2,3,4,7,8,9,10,11])

后面的usecols是用来选你需要的列的数据,选中了哪一列,就是读取了哪一列的数据,比如,第6列不重要,那我就不要放在上面了。

用几个方式查看读取的数据,

chanpin.shape #这个函数主要是了解数据的多少列和行

输出:

(2002, 7)

查一下各行列名字段的总计数据

chanpin.info()#这个主要是了解读取的数据的基本情况,包括一些列头、数据类型及行数据等

输出:

RangeIndex: 2002 entries, 0 to 2001

Data columns (total 6 columns):

3级部门 2002 non-null object

4级部门 2002 non-null object

5级部门 2002 non-null object

产品C 2002 non-null int64

产品D 2002 non-null int64

产品E 2002 non-null int64

dtypes: int64(3), object(3)

memory usage: 93.9+ KB

最后,再看一下具体的前面几行的数据

chanpin.head()这个就可以读取具体的数据了

python处理BI报表 python做报表汇总_python上机编程报告_03

把数据读取出来后,查看数据基本上是用了上面的3个函数;

我们来把表拆开,chanpin1和chanpin2

chanpin1=chanpin[["3级部门","产品B","产品E"]]

chanpin1.head()

输出

python处理BI报表 python做报表汇总_读取数据_04

chanpin2=chanpin[["3级部门","产品C","产品D"]]

chanpin2.head()

输出:

python处理BI报表 python做报表汇总_python上机编程报告_05

这样就赋予了两个新表;

接下来,给chanpin2插入一列数据,就是把产品C和产品D加起来,新建了一列数据;

chanpin2.insert(1,"CD的和",chanpin2["产品C"]+chanpin2["产品D"])

chanpin2.head()

这里用的了一个函数insert。

应用方法就是,你想插在那里,就在第一个值那里填序号就可以了,第二个值是你新建的列的命名,第三个值是一个公式,在这里的比较简单,就是产品C和产品D的和;

最后看输出:

python处理BI报表 python做报表汇总_数据_06

最后对原本做一个透视,在平常的表格处理的过程中运用到最多的就是透视表:

chanpin3 = chanpin[["3级部门","产品E","日期"]]

pd.pivot_table(chanpin3,values="产品E",columns="日期",index="3级部门",aggfunc="sum")

输出结果:

python处理BI报表 python做报表汇总_python处理BI报表_07

有了这一列数据,我们就可以做图表了。下篇,我们继续。