Home
>
银川项目管理创新
>
银川中文erp
银川中文erp

time:2020-04-21 10:20:03

author:重庆佰鼎科技有限公司

【Font size: big medium smail

本文由重庆佰鼎科技有限公司提供,重点介绍了中文erp相关内容。重庆佰鼎科技有限公司专业提供项目管理创新,项目资料管理,项目管理资料等多项产品服务。公司客户好评率高,行业口碑好,是在本行业中您的不二选择

中文erp接着上一篇文章,那么,这一段代码有什么用途上的扩展呢?比如你每日要从一堆报表中做总结,或者要从erp系统里导出数据,然后做报告给老板,那么,我的这段代码,就是很好的帮手,套用你平时的模板,填入每日变化的数据,一个按键就可以省略好多重复性的工作.

现在,我会一部分一部解析我的代码.先给出代码的套路:

读取入数据----处理数据-----生成每一部分的段落,-----生成统计图表----最后把每一段插入到word文档里面.

也就是我一开始说的 数据输入,方法计算,产生结果的套路.

# -*- coding: utf-8 -*-

"""

Created on Sat Nov 17 16:19:10 2018

读取文件,作图,生成word文档

@author: 浩海泛舟

"""这个其实可由可无,spyder自动生成,第一行声明编码,下面是代码说明和作者,代码日期.

from pyecharts import Pie as 包_饼图

from pyecharts import Bar as 包_柱状图

import pandas as 包_科学计算

from docx import Document as 包_电子文档

from docx.shared import Inches as 包_英寸

import time as 包_时间这片是导入包,后面会详细说明,为了区分,我把包从新改名,并在前面带 '包_'标识,用于到时出错的时候,可以直接查找替换.

def 方法_今日星期几():

今日 = 包_时间.localtime()

星期数 = 包_时间.strftime("%w",今日)

星期_数字_字典 = {

'1' : '星期一',

'2' : '星期二',

'3' : '星期三',

'4' : '星期四',

'5' : '星期五',

'6' : '星期六',

'0' : '星期天',}

return 星期_数字_字典[星期数]自定义方法,为了之后可以重复使用而不至于多次写同一段代码.和包的命名处理一样,前面带 '方法_' 区分.

#读取excel文档中文erp

电子表格1 = 'lghcj.xlsx'

电子表格2 = 'zmkrw.xlsx'

数据表1 = 包_科学计算.read_excel(电子表格1, sheet_name=None)['Sheet1']

数据表2 = 包_科学计算.read_excel(电子表格2, sheet_name=None)['Sheet1']就和注释一样 ,把两个主要两个excel表读取进来,变成数据表,为什么这么写?因为pandas这个外部引入的包,也就是 包_科学计算 这个包,它的读取方法就是这样,没什么为什么的.

#合并两个表

数据列 = [数据表1,数据表2]

数据表3 = 包_科学计算.concat(数据列)

#df1[df1['A'].isin([1])] 选取df1中A列包含数字1的行

数据表3=数据表3[~数据表3['出处'].isin(['抖音'])] #删除表中关于 抖音的数据

#类别归纳

类别替换表 = [[['新闻','政务','国际','财经','新三板'],'时政'],[['热点','电影','电视','传媒','八卦','影视'],'娱乐'],

[['心理','感情'],'情感'],[['排球','NBA','CBA','西甲','健身'],'体育'],[['美文','故事','收藏','励志','文化'],'人文'],

[['女人','彩票','其它','其他'],'综合'],[['科学','数码','互联网'],'科技'],[['育儿'],'教育'],[['游戏','动漫'],'游戏动漫'],

[['健康','家居','职场','养生','理财','减肥','保健'],'生活'],[['笑话'],'搞笑'],[['星座','风水'],'星座风水'],[['摄影'],'时尚'],

[['历史','奇闻','社会'],'奇闻历史'],[['美食'],'饮食']

]

for i in 类别替换表:

数据表3['类别'].replace(i[0],i[1],inplace = True)读取数据以后,进行数据处理,因为原来的数据表已经比较干净,所以处理得比较少.各位读者要结合自身的实际情况,如果您的数据很多杂项,这里数据清洗就比较复杂了.这一片是大的数据处理,服务于整个程序.

表_评论数_头十名 = 数据表3.sort_values(by = '评论数',ascending=False).head(10) #按评论数排序,降序排列,获取头10篇

表_阅读数_头十名 = 数据表3.sort_values(by = '阅读数',ascending=False).head(10) #按阅读数排序,降序排列,获取头10篇

段落3 = '''各家平台阅读量最多的 TOP 10:

'''

for i in range(10):

阅读数 = round(int(表_阅读数_头十名['阅读数'][i])/10000,0)

文本 = '''TOP-%s %s万阅读,

《%s》,%s,%s,%s

'''%(i+1,str(阅读数)[:-2],表_阅读数_头十名['标题'][i],表_阅读数_头十名['作者'][i],表_阅读数_头十名['出处'][i],表_阅读数_头十名['类别'][i])

段落3 = 段落3 + 文本首先说明,这一段是代码是有 bug 的,今天才发现,因为之前的数据一直比较干净,连原来的排序变化都比较少,以至于没有及时发现.所以,也是为什么泛舟会把生成第三段的代码先放到前面来,以为比较简单嘛.

表_评论数_头十名 = 数据表3.sort_values(by = '评论数',ascending=False).head(10) #按评论数排序,降序排列,获取头10篇

表_阅读数_头十名 = 数据表3.sort_values(by = '阅读数',ascending=False).head(10) #按阅读数排序,降序排列,获取头10篇

头十阅读索引号 = 表_阅读数_头十名.index.values #之前的代码有bug,这句加上去,然后后面要重新修改

段落3 = '''各家平台阅读量最多的 TOP 10:

'''

排名 = 0

for i in 头十阅读索引号:中文erp

#由于原先代码的bug,所以要修改如下

阅读数 = round(int(表_阅读数_头十名['阅读数'][i])/10000,0)

排名 = 排名 + 1

文本 = '''TOP-%s %s万阅读,

《%s》,%s,%s,%s

'''%(排名,str(阅读数)[:-2],表_阅读数_头十名['标题'][i],表_阅读数_头十名['作者'][i],表_阅读数_头十名['出处'][i],表_阅读数_头十名['类别'][i])

段落3 = 段落3 + 文本上面是修改过的代码,由于pandas的原因,所以获取排序后的头十项,不是直接把这10项拷贝到新的表里.所以要先获取这10项的索引.再按索引处理.再加入'排名'这个变量,使得段落生成不会有差错.今天找到了这个bug,修改的时候查资料花了1个小时,没有查到泛舟预想的效果,直接按自己的想法做了.其实bug是不可避免的存在,也没什么大不了,泛舟的指导思想,能修复问题就行,不在乎代码美丑,不要完美主义,毕竟如果是上班的话,我要的是提交报表,而不是写漂亮的代码.

#分类汇总

数据表4 = 数据表3.groupby(by='出处').sum()

print(数据表3)

#数据2 = 数据1['阅读数']

#d4 = d4.drop('抖音',axis=0)

数据表4.sort_values(by = '阅读数',ascending=False,inplace=True) #按篇数排序,降序排列

数据表_汇总 = 数据表4.sum()

数据表4['阅读/总量占比'] = 数据表4.apply(lambda x: round(int(x['阅读数'])/int(数据表_汇总[0])*100,2), axis=1)

数据表4['文章数目/总量占比'] = 数据表4.apply(lambda x: round(int(x['篇数'])/int(数据表_汇总[2])*100,2), axis=1)

print(数据表4)

print(数据表_汇总)

#获取索引名称和数值

制表数据 = 数据表4.iloc[:,0] #获取指定汇总列

制表数据名称 = 制表数据.index.values #获取索引名称

制表数据 = 制表数据.values #获取汇总数据

#attr = nn

#v1 = n

饼图 = 包_饼图('阅读量占比')

饼图.add('',制表数据名称,制表数据,is_label_show = True)

饼图路径1 = r'./html/pie_yuedu_01.gif'

饼图.render(饼图路径1) #储存图片

阅读占比 = 数据表4.iloc[:,3]

阅读量第一的 = [制表数据名称[0],阅读占比[0]]

#获取索引名称和数值

制表数据 = 数据表4.iloc[:,2] #获取指定汇总列

制表数据名称 = 制表数据.index.values #获取索引名称

制表数据 = 制表数据.values #获取汇总数据

#attr = nn

#v1 = n

饼图 = 包_饼图('文章数量占比')

饼图.add('',制表数据名称,制表数据,is_label_show = True)

饼图路径2 = r'./html/pie_pianshu_01.gif'

饼图.render(饼图路径2)

篇数占比 = 数据表4.iloc[:,4]

篇数第一的 = [制表数据名称[0],篇数占比[0]]

if 阅读量第一的[0] == 篇数第一的[0]:

段落1_文字 = '其中阅读量和数量最多的都是'+阅读量第一的[0]+',阅读量占'+str(阅读量第一的[1])+'%,'+'文章数目占'+str(篇数第一的[1])+'%,领先其他。'

else:

段落1_文字 = '其中阅读量最多的是'+阅读量第一的[0]+',占'+str(阅读量第一的[1])+'%,'+'文章数量最多的是'+ 篇数第一的[0] + ',占'+str(篇数第一的[1])+'%,领先其他。'

print(阅读量第一的)

print(篇数第一的)

#段落拼接

#日期

今日日期 = 包_时间.strftime('%Y-%m-%d',包_时间.localtime(包_时间.time())) #获取今天的日期

日期列表 = 今日日期.split('-')

今日日期中文 = '今天是%s年%s月%s日'%(日期列表[0],日期列表[1],日期列表[2])

今日星期几 = 方法_今日星期几()

阅读总数 = str(round(数据表_汇总[0]/100000000,2)) #换算总阅读量,x亿

段落1 = '%s,%s。截止中午,泛舟收集了今日头条,uc,百家号,搜狐号等,过去24小时里,超一万阅读量的文章%s篇,总阅读量%s亿,%s'%(今日日期中文,今日星期几,数据表_汇总[2],阅读总数,段落1_文字)

这一片代码是生成段落一和两个饼图,是不是看着有些长和有些重复?对的,因为我就是直接写下来,也没有优化,直接把复制,没有把重复的代码段写成自定义函数方法来调用.

#分类汇总

数据表4 = 数据表3.groupby(by='类别').sum()

#print(d3)

#数据2 = 数据1['阅读数']

#d4 = d4.drop('抖音',axis=0)

数据表4.sort_values(by = '阅读数',ascending=False,inplace=True) #按篇数排序,降序排列

数据表_汇总 = 数据表4.sum()

数据表4['阅读数(万)'] = 数据表4.apply(lambda x: round(int(x['阅读数'])/10000,2), axis=1)

#d4['文章数目/总量占比'] = d4.apply(lambda x: round(int(x['篇数'])/int(ds[2])*100,2), axis=1)

#获取索引名称和数值

制表数据 = 数据表4.iloc[:,3] #获取指定汇总列

制表数据名称 = 制表数据.index.values #获取索引名称

制表数据 = 制表数据.values #获取汇总数据

#柱状图

#attr = ['uc头条','东方头条','今日头条','搜狐自媒体','百度百家','趣头条']

#v1 = [5,20,36,10,75,90]

#attr = nn

#v1 = n

柱状图 = 包_柱状图('类别阅读量分布','', width=1200, height=500 )

柱状图.add('单位(万)',制表数据名称,制表数据,is_label_show=True,xaxis_interval=0,

is_more_utils = True #设置最右侧工具栏

)

#bar.show_config() #调试输出pyecharts的js配置信息

柱状图路径1 = r'./html/first01.gif'

柱状图.render(柱状图路径1)

阅读量排名相关 = [制表数据名称[0],制表数据[0],制表数据名称[1],制表数据名称[2],制表数据名称[3]] #阅读量第一的名称和数量,后三名的名称

数据表4.sort_values(by = '篇数',ascending=False,inplace=True) #按篇数排序,降序排列

#获取索引名称和数值

制表数据 = 数据表4.iloc[:,2] #获取指定汇总列

制表数据名称 = 制表数据.index.values #获取索引名称

制表数据 = 制表数据.values #获取汇总数据

#柱状图

#attr = ['uc头条','东方头条','今日头条','搜狐自媒体','百度百家','趣头条']

#v1 = [5,20,36,10,75,90]

#attr = nn

#v1 = n

柱状图 = 包_柱状图('类别数量分布','', width=1200, height=500 )

柱状图.add('',制表数据名称,制表数据,is_label_show=True,xaxis_interval=0,

is_more_utils = True #设置最右侧工具栏

)

#bar.show_config()

#调试输出pyecharts的js配置信息

柱状图路径2 = r'./html/first02.gif'

柱状图.render(柱状图路径2)

篇数排名相关 = [制表数据名称[0],制表数据[0],制表数据名称[1],制表数据名称[2],制表数据名称[3]] #阅读量第一的名称和数量,后三名的名称

段落2 = '各个领域中,%s领域阅读量最多,阅读量%s万,其后是%s,%s,%s。文章数量最多的是%s领域,共%s篇,而跟随其后的是%s,%s,%s等领域。'%(阅读量排名相关[0],阅读量排名相关[1],阅读量排名相关[2],阅读量排名相关[3],阅读量排名相关[4],篇数排名相关[0],篇数排名相关[1],篇数排名相关[2],篇数排名相关[3],篇数排名相关[4])

段落4 = '这些里面有你关心的感兴趣的么?'

段落5 = '感谢您的阅读,本文由浩海泛舟,自动工坊机器人自动收集生成发布!'这一片是成才段落二和相应的柱状图.也是和上一片的问题,没有优化.

文档 = 包_电子文档()

#文档.add_heading('测试插入段落', 0) #插入标题

第一段 = 文档.add_paragraph(段落1)

图片1 = 文档.add_picture(饼图路径1,width=包_英寸(6)) #插入图片尺寸设置为宽 6寸,6寸刚好为文档宽度。

图片2 = 文档.add_picture(饼图路径2,width=包_英寸(6))

第二段 = 文档.add_paragraph(段落2)

图片3 = 文档.add_picture(柱状图路径1,width=包_英寸(6))

图片4 = 文档.add_picture(柱状图路径2,width=包_英寸(6))

第三段 = 文档.add_paragraph(段落3)

第四段 = 文档.add_paragraph(段落4)

第五段 = 文档.add_paragraph(段落5)

文档.save('数据分析文档.docx')最后把生成的所有段落数据和图片,顺序插入到word文档里,就完成任务了.

到这里,已经做了一次简要的说明,接下来就是正式进入python的入门编程了.下一篇,泛舟会说说python编程的套路.对的编程就是一个一个的套路.

感谢您的阅读,望勿喷.

Reprint please indicate:http://dmeu.cnsoftweb.com/xmgl-1533.html