从Python到FineBI——我的数据可视化升级之旅

第二季度结束了,半年也过去了,又要给一向雷厉风行的领导出销售数据签单和回款的数据分析报告,眼看着还有三天,需求紧急,小编也不敢懈怠。

找信息部导了上两个季度以及去年一年的excel数据,脑子第一个想到的是怎们构建表格,同比、环比、回款率,用excel做几张表,打印完事。转身倒了一杯水,一想不对,第一季度给领导汇报的时候,给了领导一份10页的纸质报告,领导甩了一句“当我批卷子呐,不合格”怼了回来,虽然没让重做,但总归是惹得不开心。

后来跟着信息部门的哥们学了两周的Python,小编大学里学了一点编程,再加上很多代码的逻辑类似于Excel的函数,好说歹说算是入了门,同时也学习了数据分析的一点思路。

按照粗浅的数据分析思路:

1、首先明确领导关注哪些数据和指标

之前想的同比、环比、回款率,其实每次月末汇报的时候都讲过了,按照这样的逻辑,季度汇报无非是把过去三个月汇总在一起,再算一下累积的数据,确实枯燥不直观。

于是我前一天有意无意地试探了下领导,除了常规的总比环比汇总数据,还想关注哪些信息。领导透露口风,“每个区域的销售和回款数据如何,回款率高低可以给个排名不,哪一季度份额最大,我们公司历年整体的销售情况是怎样等等,好让我知道汇款低了怎么回事,哪个区域表现最佳?”

2、用可视化的方式替代传统表格

这一点小编我尝到过甜头,上季度那10页报告被怼之后,我又用PPT做了一份汇报,引用各种图表,才幸免于难。

所以这一次可以升级一下,是不是用Python或者其他数据分析工具露一手,也算一次项目实践。

于是,我找信息部门的同事导来几份数据,但是由于有多年历史数据需要分析,csv文件导出大概有100多兆,试着用excel看看,一打开直接挂了。。。正无限在响应中。

算了,这么大的数据量,正好用回Python。

关于Python,同在数据分析领域的同学可能都不陌生,我们经常会使用Python提供的numpy、pandas、matplotlib等第三方库来对数据进行计算处理,同时最终生成所需要的可视化报告。

Python语言简明便捷的特性对小编还是非常有吸引力的,空想不如行动,为了快速出成果,直接开干。

一、Python数据分析可视化过程

1.DataFrame数据类型转换

首先是导入本次分析所需要使用的matplib、pandas、datetime、pylab这几个数据处理以及可视化相关的库,指定mpl的默认字体(否则图表可能会出现中文乱码问题)。接着导入销售合同明细数据表以及销售回款数据表,然后根据合同ID进行左拼接,得到结果转成DataFrame类型格式方便后续的数据计算以及可视化分析处理。

# 导入所需要的库import matplotlib.pyplot as pltimport pandas as pdimport datetimefrom pylab import mplmpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体:解决plot不能显示中文问题mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题pdcsv1=pd.read_csv('D:/DEMO/demo_contract.csv',encoding='gb2312') #导入销售合同明细表数据pdcsv2=pd.read_csv('D:/DEMO/demo_capital_return.csv',encoding='gb2312') #导入销售回款明细表数据pdcsv=pd.merge(pdcsv1,pdcsv2,how='left',on=['合同ID','合同ID']) #将销售合同明细表和销售回款明细表数据进行拼接df = pd.DataFrame(pdcsv) #转为DataFrame格式方便进行数据处理

2.时间类型转换

接着通过datatime类提供的转换方法,对合同签约时间进行格式化,分别取出签约年份、签约季度、签约月份字段,方便从不同的统计口径来观察和分析销售的签单数据和回款数据。

i=0 #遍历计数器for a in df[‘合同签约时间’]:df.set_value(i, ‘签约年份’,int(datetime.datetime.strptime(a,’%Y-%m-%d %H:%M:%S.0’).strftime(’%Y’))) #格式化合同签约字段,取出合同签约年份i=i+1i=0for a in df[‘合同签约时间’]:df.set_value(i, ‘签约季度’,(str((int(datetime.datetime.strptime(a,’%Y-%m-%d %H:%M:%S.0’).strftime(’%m’))-1)//3+1))+‘季度’) #格式化合同签约字段,取出合同签约季度i=i+1i=0for a in df[‘合同签约时间’]:df.set_value(i, ‘签约月份’,int(datetime.datetime.strptime(a,’%Y-%m-%d %H:%M:%S.0’).strftime(’%m’))) #格式化合同签约字段,取出合同签约月份i=i+1

3.分组统计&&图表绘制

最后分别按照签约年份、签约季度、签约月份来对销售的签单金额以及回款金额进行分组统计,设置好相关图形统计标题、坐标轴标题、图例等属性,规划好绘图排版区域,并且以折线图、饼图、对比柱状图的形式进行数据可视化呈现。

df.to_csv(‘D:/DEMO/join.csv’,encoding=‘gb2312’) #合并明细数据导出为csv文件数据存储dfgp1=(df[‘总金额’]/10000.0).groupby(df[‘签约年份’]).sum() #年度总签单金额分组统计,并且单位转为万dfgp2=(df[‘付款金额’]/10000.0).groupby(df[‘签约年份’]).sum() #年度付款总额分组统计,并且单位转为万plt.subplot(2,2,1) #限定绘图区域为左上方plt.ylabel(‘总金额(万)’)#显示y轴名称plt.title(‘各年度签单总金额走势’)#显示统计标题dfgp1.plot.line(label=‘签单金额’) #年度总签单金额绘图dfgp2.plot.line(label=‘回款金额’) #年度付款总额绘折线图plt.legend()#显示图例dfgp=df.groupby(df[‘签约季度’])[‘付款金额’].sum().reset_index() #各季度付款金额分组统计plt.subplot(2,2,2)#限定绘图区域为左上方plt.title(‘各季度回款金额分布’)#显示统计标题plt.pie(dfgp[‘付款金额’],labels=dfgp[‘签约季度’],autopct=’%1.1f%%’)#各季度付款金额绘制饼图dfgp=df.groupby([‘签约月份’])[‘总金额’,‘付款金额’].sum().reset_index()#各月度签单&&回款分组统计dfgp[‘总金额’]=dfgp[‘总金额’]/10000 #并且单位转为万dfgp[‘付款金额’]=dfgp[‘付款金额’]/10000 #并且单位转为万plt.subplot(3,1,3)#限定绘图区域为最下方plt.title(‘各月度签单合同金额&&回款金额对比’)#显示统计标题plt.bar(dfgp[‘签约月份’],dfgp[‘总金额’],width=0.4,label=‘签单金额’)#各月度签单&&回款分组统计绘制对比柱状图plt.bar(dfgp[‘签约月份’]+0.4,dfgp[‘付款金额’],width=0.4,label=‘回款金额’)#各月度签单&&回款分组统计绘制对比柱状图,0.4为宽度偏移量plt.ylabel(‘总金额(万)’)#显示y轴名称plt.legend()#显示图例plt.show() # 出图

4.Python可视化成果展示

程序编译运行,各年度的签单总金额&&回款金额走势、各季度回款金额分布、各月度合同签单金额&&回款金额对比数据就都以可视化的形式直接呈现出来了,还是非常舒服的,给自己默默点个赞~哼哧哼哧地准备明天过去给领导汇报我的可视化“战果”!

三、从Python到FineBI——数据可视化升级

跟领导汇报完毕之后,出来的可视化成果还是得到领导的一些认可的,将海量的数据以可视化图表的形式给领导直观地呈现了出来。

但是和我那信息化的哥们交流一番后,他觉得我的Python可视化“杰作”还存在一些问题,我也总结一下:

1.可视化图形界面是静态页面,没有动态的界面数据交互,如悬浮提示、图形联动、数据钻取、超链接跳转等等;

2.界面没有筛选器,无法切片呈现过滤部分数据;

3.领导看了已有数据之后,针对一些增长或者异常数据无法做进一步深入分析。

4.开发调试还是有一定周期的,说出来不怕大家笑话哈,我为了调这个Python页面耗费了我大半天时间。。。。

哥们建议我不妨用BI工具来实现,正好信息化采购了BI软件FineBI,之后也会和全公司像我一样的业务数据员推广学习,正好我来练练手。而且公司的数据报表需求非常多,一些部门也逐渐有了深度的数据分析的需求,确实非常迫切地需要一款能够真正多维深入地企业级数据分析工具来解决这些问题。

1.FineBI自助拖拽分析初版

到FineBI官网下载安装完毕之后发现这是一款提供给企业的B/S架构在线数据即席分析平台,除了能够方便企业信息部门制作传统企业的固定报表之外,还可以让不懂SQL/代码技术的小白快速上手拖拽式自助数据可视化分析。以下图为例,托拖拽拽,轻松帮我统计出了我们公司历年的销售金额以及回款金额数据…跟以前一行行代码调试Python程序比,简直不要太爽!

按照FineBI帮助文档,初步做出了以下的这个企业的销售&&回款分析页面,轻松地解决了领导之前反馈的Python数据可视化界面的一系列问题!

2.美化升级版

经过一番研究,发现FineBI还能够进一步提供给用户设置组件背景、仪表板背景等功能,于是乎我调出了以下的这一个美化升级版本~美滋滋!

3.领导汇报最终敲定版

另外参考了FineBI的一些内置demo,于是乎做出下图这个精美的销售管理中心驾驶舱,惊艳吧~嘿嘿,其实也不过是半个小时的鼠标操作功夫了,数据完全可视化呈现在领导面前。给领导汇报完毕之后,FineBI灵活的多维联动、钻取等OLAP分析的特性,备受领导的夸奖与喜爱!

以上就是我这次从Python到FineBI的数据分析可视化升级心得总结了,特地写出来给大家分享分享,能看到这里的同学都是真爱啦。

四、后记

当然,其实我所用到的也只是FineBI这款软件的冰山一角了,像以上的很多丰富的可视化图表也非常值得大家去使用和分析探索的,感兴趣的可以到FineBI官网参考帮助文档去了解试用啦,篇幅有限,由于时间关系暂时跟大家聊到这里了,欢迎大家共同多多交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值