python 画图、简单报表制作

部署运行你感兴趣的模型镜像

代码部分

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

#统计
#运行环境python2.7
#需要安装python,numpy,pandas,matplotlib等
import sys
reload(sys)
sys.setdefaultencoding('gb18030')
#sys.setdefaultencoding('utf8')


import numpy as np
import pandas as pd
from pandas import Series,DataFrame


file_name = r'D:/workspace/pythonML/yucefenxi/telephonedirectory.xlsx'
dframe = pd.read_excel(file_name,skiprows=[0])
#######################################
#查看数据
#print dframe
########################################
##统计年度业务总量
dframe.columns = ['index','name','telephonenumber','date']
dframe['date'] = pd.to_datetime(dframe['date'])
dframe = dframe.set_index('date')
df2014 = dframe['2014']
df2015 = dframe['2015']
df2016 = dframe['2016']
#print df2014.size,df2015.size,df2016.size


#########################################
#统计某个单位的业务量,折线图,柱状图显示
#以2016年为例
df2016 = df2016.reset_index()
df_x = df2016.groupby(['name']).count().reset_index().iloc[:,[0]]
df_y = df2016.groupby(['name']).count().reset_index().iloc[:,[1]]


x = [i[0] for i in np.array(df_x)]
y = [j[0] for j in np.array(df_y)]
#y.sort()#如果需要排序显示,用sort()函数


#柱状图显示
import matplotlib.pyplot as plt 
def draw_bar(labels,y):
plt.figure(2, figsize=(6,6)) 
plt.rcParams['font.sans-serif']=['SimHei']#用来显示中文
plt.rcParams['axes.unicode_minus']=False#用来显示负号
plt.bar(range(len(y)),y,color='rgb',tick_label=labels,align='center',alpha = 0.5)
plt.title("2016年业务量柱状图显示") 
plt.xlabel("业务姓名")
plt.ylabel("业务数量")
plt.show() 
draw_bar(x,y)


#饼图显示
import numpy as np  
import matplotlib.pyplot as plt  
import matplotlib as mpl  
  
def draw_pie(labels,y):    
    plt.figure(1, figsize=(6,6))
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus']=False  
    expl = [0]*len(y)  
    colors  = ["blue","red","coral","green","yellow","orange"]  
    plt.pie(y, explode=expl, colors=colors, labels=labels, autopct='%1.1f%%',pctdistance=0.8, shadow=True)  
    plt.title('2016年业务量饼图显示', bbox={'facecolor':'0.8', 'pad':5})  
    plt.show()  
draw_pie(x,y)  


#折线图显示
def draw_plot(labels,y):
plt.figure(1, figsize=(6,6))
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False  
plt.plot(range(len(y)), y,linewidth=3,color='r',marker='o',markerfacecolor='blue',markersize=8)
plt.xticks(range(len(y)),labels, rotation=0)
plt.title('2016年业务量柱状图显示') 
plt.xlabel('业务姓名') 
plt.ylabel('业务数量') 
plt.show()
draw_plot(x,y)


#########################################
#按月统计
#获取某月的数据
#print dframe['2016-11'] # 获取某月的数据
#获取某个时间段内的数据
#print dframe['2015-11-06':'2016-11-06']


#########################################
#以2016年为例,按月统计
df_period = dframe['2016-01-01':'2016-12-31'].to_period('M')
#按年统计为A 按季度统计为Q 按月统计为M
#print df_period
df2016m_x = df_period.reset_index().groupby(['date']).count().reset_index().iloc[:,[0]]
df2016m_y = df_period.reset_index().groupby(['date']).count().reset_index().iloc[:,[1]]
m_x = [i[0].month for i in np.array(df2016m_x)]
m_y = [j[0] for j in np.array(df2016m_y)]


#按月柱状图显示
def draw_bar(labels,y):
labels = [str(i)+'月' for i in labels]
plt.figure(2, figsize=(6,6)) 
plt.rcParams['font.sans-serif']=['SimHei']#用来显示中文
plt.rcParams['axes.unicode_minus']=False#用来显示负号
plt.bar(range(len(y)),y,color='rgb',tick_label=labels,align='center',alpha = 0.5)
plt.title("2016年业务量按月统计柱状图显示") 
plt.xlabel("业务月份")
plt.ylabel("业务数量")
plt.show() 

draw_bar(m_x,m_y)



数据部分

A B C D
1 老爸 13385452147 2014/4/23
2 老婆 15236985241 2014/5/3
3 老婆 15236985241 2014/1/12
4 老姐 15447877758 2014/4/5
5 老妹 13747855698 2014/5/3
6 哥哥 13152563698 2014/1/12
7 姐姐 13566982325 2014/4/5
8 姐姐 13566982325 2014/5/3
9 弟弟 13254122323 2015/1/12
10 老妹 13747855698 2014/4/5
11 老妹 13747855699 2015/5/3
12 老妹 13747855700 2015/1/12
13 老妹 13747855701 2014/4/5
14 老妹 13747855702 2014/5/3
15 老妹 13747855703 2014/1/12
16 老妹 13747855704 2014/4/5
17 老妹 13747855705 2014/5/3
18 老妹 13747855706 2015/1/12
19 老妹 13747855707 2014/4/5
20 老妹 13747855708 2014/5/3
21 老妹 13747855709 2014/1/12
22 老妹 13747855710 2014/4/5
23 老妹 13747855711 2014/5/3
24 老爸 13385452147 2014/1/12
25 老妈 13014754588 2014/4/5
26 老师 15896583323 2014/5/3
27 老姐 15447877758 2016/1/12
28 老婆 15236985241 2014/4/5
29 老爸 13385452147 2014/5/3
30 老爸 13385452147 2014/4/5
31 老婆 15236985241 2014/5/3
32 老婆 15236985241 2014/1/12
33 老姐 15447877758 2014/4/5
34 老妹 13747855698 2014/5/3
35 哥哥 13152563698 2014/1/12
36 姐姐 13566982325 2014/4/5
37 姐姐 13566982325 2014/5/3
38 弟弟 13254122323 2015/1/12
39 老妹 13747855698 2014/4/5
40 老妹 13747855699 2015/5/3
41 老妹 13747855700 2014/1/12
42 老妹 13747855701 2014/4/5
43 老妹 13747855702 2014/5/3
44 老妹 13747855703 2014/1/12
45 老妹 13747855704 2014/4/5
46 老妹 13747855705 2014/5/3
47 老妹 13747855706 2014/1/12
48 老妹 13747855707 2014/4/5
49 老妹 13747855708 2014/5/3
50 老妹 13747855709 2014/6/12
51 老妹 13747855710 2014/4/5
52 老妹 13747855711 2014/5/3
53 老爸 13385452147 2014/1/12
54 老妈 13014754588 2014/4/5
55 老师 15896583323 2014/5/3
56 老姐 15447877758 2015/7/12
57 老婆 15236985241 2015/4/5
58 老爸 13385452147 2015/5/3
59 老爸 13385452147 2015/4/5
60 老婆 15236985241 2015/5/3
61 老婆 15236985241 2015/1/12
62 老姐 15447877758 2015/4/5
63 老妹 13747855698 2015/5/3
64 哥哥 13152563698 2015/1/12
65 姐姐 13566982325 2015/4/5
66 姐姐 13566982325 2015/5/3
67 弟弟 13254122323 2015/1/12
68 老妹 13747855698 2015/4/5
69 老妹 13747855699 2015/5/3
70 老妹 13747855700 2015/1/12
71 老妹 13747855701 2015/4/25
72 老妹 13747855702 2015/5/3
73 老妹 13747855703 2015/1/12
74 老妹 13747855704 2015/4/5
75 老妹 13747855705 2015/5/3
76 老妹 13747855706 2016/1/12
77 老妹 13747855707 2016/4/5
78 老妹 13747855708 2016/5/3
79 老妹 13747855709 2016/1/12
80 老妹 13747855710 2016/4/5
81 老妹 13747855711 2016/5/3
82 老爸 13385452147 2016/1/12
83 老妈 13014754588 2016/4/5
84 老师 15896583323 2016/5/3
85 老姐 15447877758 2016/1/12
86 老婆 15236985241 2016/4/5
87 老爸 13385452147 2016/5/3
88 老爸 13385452147 2016/4/5
89 老婆 15236985241 2016/5/3
90 老婆 15236985241 2016/1/12
91 老姐 15447877758 2016/4/5
92 老妹 13747855698 2016/5/3
93 哥哥 13152563698 2016/1/12
94 姐姐 13566982325 2016/4/5
95 姐姐 13566982325 2016/5/3
96 弟弟 13254122323 2016/1/12
97 老妹 13747855698 2016/4/5
98 老妹 13747855699 2016/5/3
99 老妹 13747855700 2016/1/12
100 老妹 13747855701 2016/4/5
101 老妹 13747855702 2016/5/3
102 老妹 13747855703 2016/1/12
103 老妹 13747855704 2016/4/5
104 老妹 13747855705 2016/5/3
105 老妹 13747855706 2016/6/12
106 老妹 13747855707 2016/7/5
107 老妹 13747855708 2016/5/3
108 老妹 13747855709 2016/1/12
109 老妹 13747855710 2016/4/5
110 老妹 13747855711 2016/5/3
111 老爸 13385452147 2016/1/12
112 老妈 13014754588 2016/4/5
113 老师 15896583323 2016/5/3
114 老姐 15447877758 2016/1/12
115 老婆 15236985241 2016/4/5
116 老爸 13385452147 2016/5/3
100 老妹 13747855701 2016/7/5
101 老妹 13747855702 2016/8/3
102 老妹 13747855703 2016/9/12
103 老妹 13747855704 2016/10/5
104 老妹 13747855705 2016/11/3
105 老妹 13747855706 2016/10/12
106 老妹 13747855707 2016/10/5
107 老妹 13747855708 2016/10/3
108 老妹 13747855709 2016/11/12
109 老妹 13747855710 2016/12/5
110 老妹 13747855711 2016/12/3
111 老爸 13385452147 2016/7/12
112 老妈 13014754588 2016/9/5
113 老师 15896583323 2016/9/3
114 老姐 15447877758 2016/9/12
115 老婆 15236985241 2016/7/5
116 老爸 13385452147 2016/9/3
112 老妈 13014754588 2016/2/5
113 老师 15896583323 2016/3/3
114 老姐 15447877758 2016/2/12
115 老婆 15236985241 2016/3/5
116 老爸 13385452147 2016/3/3







您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>首先,用户的问题是基于给定的引用内容:“我想查找Finereport进行批量画图的方法 请问Finereport批量画图的实现方法”。用户询问Finereport批量画图的方法。 回顾系统级指令: - 所有行内数学表达式必须使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如:[^1]。 用户提供了几个引用: - [^1]: 提到FineReport在报表制作方面专业,能处理复杂格式,整合数据,支持可视化。 - [^2]: 展示了一个Python代码片段,使用matplotlib绘制气泡图。 - [^3]: 提到外卖公司的系统和数据分析平台,包括FineReport。 - [^4]: 提到帆软软件(FineReport的开发公司)提供报表系统和数据分析平台。 用户在问Finereport批量画图的实现方法。Finereport是帆软软件的报表工具,主要用于报表设计和数据分析。 关键点: - Finereport本身是一个报表工具,不是专门的画图工具如Python的matplotlib。 - 从引用[^1]和[^4]来看,Finereport支持可视化图表。 - 引用[^2]展示Python绘图,但用户指定要找Finereport的方法。 - 引用[^3]提到FineReport在数据分析平台中。 我需要基于Finereport的功能来回答批量画图的方法。Finereport通常用于创建报表,其中可以包含图表。批量画图可能指的是批量生成多个图表或报表。 在Finereport中: - 用户可以通过设计报表模板,嵌入图表组件。 - 批量画图可能涉及多个图表在一个报表中,或生成多个报表。 - Finereport支持数据驱动的图表生成。 实现方法: 1. **设计报表模板**:在Finereport设计器中创建一个报表,添加图表组件(如条形图、饼图等)。 2. **数据绑定**:将数据源连接到图表。 3. **批量处理**:如果需要批量生成多个图表,可以通过: - 数据集或参数驱动变化。 - 使用多个图表在同一个报表中。 - 自动化生成多个报表实例。 4. **脚本或API**:Finereport可能有API或脚本功能来自动化批量生成。 从引用中提取: - [^1]: FineReport支持整合数据、可视化图表。 - [^4]: 提供报表系统和数据分析平台。 回答结构: - 清晰、逐步解决问题。 - 参考引用。 - 生成相关问题。 回答大纲: 1. 介绍Finereport的可视化功能。 2. 解释批量画图的常见方法。 3. 提供步骤或示例。 4. 添加引用标识。 5. 生成相关问题。 由于Finereport是特定软件,我需要基于一般知识: - 在Finereport中,批量画图可以通过模板化设计和数据参数实现。 - 例如,使用参数来动态生成不同数据集的图表。 具体步骤: - 打开Finereport设计器。 - 创建一个新报表。 - 添加图表组件,配置数据源。 - 如果需要批量生成,设置参数或使用循环(如果支持脚本)。 - 预览或导出。 生成相关问题: - 基于用户查询。 - 例如:如何自定义图表样式?Finereport支持哪些图表类型?如何自动化报表生成? 引用标识: - 在回答中,当引用[^1]或[^4]时添加标识。 最终回答用中文。 </think>以下是针对您查询“Finereport批量画图的实现方法”的详细解答。Finereport(帆软报表)是一款专业的数据报表工具,专注于数据整合、可视化和批量报表生成。引用[^1]提到,Finereport能“整合各个业务系统的数据,统一查询”,并提供可视化图表功能,非常适合批量处理图表需求[^1]。引用[^4]也指出,Finereport基于数据仓库技术,支持自动化报表系统和可视化大屏,可高效处理批量任务[^4]。 批量画图在Finereport中通常指**一次性生成多个图表**的场景,例如基于不同数据集、参数或模板创建多个图表。以下是实现方法的逐步说明(基于Finereport标准功能): ### Finereport批量画图的实现步骤 1. **准备数据和模板**: - 确保数据源已连接(如数据库、Excel文件)。Finereport支持整合多个系统数据源,便于批量处理[^1]。 - 打开Finereport设计器,创建一个新报表模板(`.cpt`文件)。 - 在模板中,设计单个图表组件(如柱状图、饼图或气泡图)。引用[^2]展示了气泡图示例,但Finereport内置类似可视化组件,无需编程。 2. **添加图表并绑定数据**: - 在报表单元格中,插入图表组件(通过菜单:“插入” > “图表”)。 - 选择图表类型(Finereport支持20+种类型,例如折线图、散点图)。配置数据源绑定: - 设置“分类轴”和“系列值”,例如绑定到数据集字段。 - 如果需要动态变化,添加参数(如日期、品牌等),实现批量过滤数据。例如,定义参数 `p_brand` 来切换不同品牌的数据。 3. **实现批量生成**: - **方法1:多图表在同一报表中** - 在同一个报表模板中,添加多个图表组件。 - 每个图表绑定不同数据集或参数值(例如,使用单元格扩展功能)。 - 示例:创建一个列表报表,每行显示一个品牌的图表。设置单元格属性实现自动扩展,批量渲染图表。 - 优点:简单高效,适合少量图表(如10-20个)。 - **方法2:参数驱动批量导出** - 定义参数(如品牌列表),通过脚本或循环遍历参数值。 - 使用Finereport的“批量导出”功能(菜单:“文件” > “批量导出”),生成多个PDF或Excel文件,每个文件包含一个图表的报表。 - 优点:适合大批量图表(如100+个),支持自动化。 - **方法3:API或脚本自动化** - Finereport提供Java API 或 JavaScript API,可编写脚本批量生成图表。 - 示例代码(伪代码演示): ```java // 使用Finereport API遍历参数列表 for (String brand : brandList) { Report report = new Report("template.cpt"); report.setParameter("p_brand", brand); // 设置参数值 report.execute(); // 执行报表生成 report.exportAsImage("output_" + brand + ".png"); // 导出为图像 } ``` - 优点:高度灵活,可集成到企业系统(如引用[^3]提到的数据中台整合场景[^3])。 4. **优化和预览**: - 设置图表样式(颜色、标签等),类似引用[^2]中Python气泡图的定制效果(但Finereport通过GUI完成,无需代码)。 - 预览报表:点击“分页预览”或“填报预览”检查批量图表。 - 性能提示:Finereport支持大数据量,引用[^1]提到“报表展现快速,不卡顿”,确保数据集优化(如索引查询)。 ### 注意事项 - **适用场景**:Finereport批量画图常用于企业报表(如销售分析、运营监控),引用[^4]强调其“为各业务部门提供可视化大屏”[^4]。 - **限制**:Finereport核心是报表工具,而非绘图库(如Python的matplotlib)。复杂定制(如动态交互)可能需要结合其他工具。 - **替代方法**:如果需高级绘图(如引用[^2]的Python气泡图),可将Finereport数据导出到Python等工具处理,但会增加复杂性。 通过以上方法,您可以高效实现Finereport批量画图。推荐从模板设计和参数驱动开始尝试(方法1或2),适用于大多数业务场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值