PG万般:Coze`万人使用`Excel分析器免费开源

PG万般:Coze`万人使用`Excel分析器免费开源

PG万般:Coze Excel分析器免费开源 PG万般:Coze Excel分析器免费开源 Modified June 30, 2025 Unable to load Please check the network connection and retry. ai data 工作流 智能体平台.pdf · 1.65MB Retry ai data 工作流 智能体平台.pdf Code block Python Copy from runtime import Args from typings.markdown pdf.markdown pdf import Input, Output from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4 from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.cidfonts import UnicodeCIDFont from reportlab.lib import colors from reportlab.lib.utils import ImageReader import requests from io import BytesIO import re import random import string import os from qiniu import Auth, put file, etag from datetime import datetime class MarkdownToPDF: def init (self, output path): self.c = canvas.Canvas(output path, pagesize=A4) self.width, self.height = A4 self.y = self.height 50 self.left margin = 40 self.line height = 20 pdfmetrics.registerFont(UnicodeCIDFont('STSong Light')) self.styles = { 'normal': { 'font': 'STSong Light', 'size': 12, 'color': colors.black }, 'title': { 'font': 'STSong Light', 'size': 16, 'color': colors.black }, 'strong': { 'font': 'STSong Light', 'size': 12, 'color': colors.blue, 'bold': True }, 'em': { 'font': 'STSong Light', 'size': 12, 'color': colors.black, 'italic': True }, 'mark': { 'font': 'STSong Light', 'size': 12, 'color': colors.black, 'background': colors.yellow }, 'del': { 'font': 'STSong Light', 'size': 12, 'color': colors.gray, 'strike': True }, 'code': { 'font': 'Courier', 'size': 11, 'color': colors.black, 'background': colors.lightgrey }, 'u': { 'font': 'STSong Light', 'size': 12, 'color': colors.black, 'underline': True }, 'big': { 'font': 'STSong Light', 'size': 14, 'color': colors.black }, 'small': { 'font': 'STSong Light', 'size': 10, 'color': colors.black }, 'red': { 'font': 'STSong Light', 'size': 12, 'color': colors.red }, 'orange': { 'font': 'STSong Light', 'size': 12, 'color': colors.orange }, 'blue': { 'font': 'STSong Light', 'size': 12, 'color': colors.blue }, 'green': { 'font': 'STSong Light', 'size': 12, 'color': colors.green }, 'purple': { 'font': 'STSong Light', 'size': 12, 'color': colors.purple } } def download image(self, url): try: response = requests.get(url) if response.status code == 200: return ImageReader(BytesIO(response.content)) except Exception as e: print(f"下载图片失败: {e}") return None def draw image(self, url): img = self.download image(url) if img: img width = self.width 2 self.left margin img height = img width 0.5 if self.y img height < 50: self.c.showPage() self.y = self.height 50 self.c.drawImage(img, self.left margin, self.y img height, width=img width, height=img height) self.y = (img height + 20) def process color(self, color, text): """处理颜色标签""" color = color.strip().lower() return f'<color:{color} {text}</color:{color} ' def clean text(self, text): 处理Markdown原生语法 text = re.sub(r'\ \ (. ?)\ \ ', r'<strong \1</strong ', text) text = re.sub(r'\ (. ?)\ ', r'<em \1</em ', text) text = re.sub(r' (. ?) ', r'<del \1</del ', text) text = re.sub(r' ', r'<code \1</code ', text) text = re.sub(r'==(. ?)==', r'<mark \1</mark ', text) 处理HTML样式标签 text = re.sub(r'<span style="font weight:\s bold[^"] " (. ?)</span ', r'<strong \1</strong ', text) text = re.sub(r'<span style="font weight:\s [5 9]00[^"] " (. ?)</span ', r'<strong \1</strong ', text) text = re.sub(r'<span style="font style:\s italic[^"] " (. ?)</span ', r'<em \1</em ', text) text = re.sub(r'<span style="text decoration:\s underline[^"] " (. ?)</span ', r'<u \1</u ', text) text = re.sub(r'<span style="text decoration:\s line through[^"] " (. ?)</span ', r'<del \1</del ', text) 处理字体大小 数据分析代码 输入参数示例图: 按照这个命名规范即可复制所有代码 • 复制需要把 我提供的代码中 前两行代码删掉,不要删掉 自己 新建插件的前两行,那是插件文件唯一指向 Code block Python Copy from runtime import Args from typings.Excel change.Excel change import Input, Output import pandas as pd import numpy as np import json import io import requests import copy import time from dataclasses import dataclass, field from typing import Dict, List, Optional, Union, Any from datetime import datetime @dataclass class PreprocessingConfig: drop na: bool = False date columns: List[str] = None date format: str = "%Y %m %d" @dataclass class SortConfig: column: str ascending: bool = True @dataclass class DimensionConfig: name: str dimension column: str metrics columns: List[str] aggregation methods: Dict[str, str] group by columns: List[str] = None sort by: Optional[SortConfig] = None top n: Optional[int] = None 将默认为None,代码中会处理为总行数 filters: Dict[str, Any] = None @dataclass class TimeSeriesConfig: enabled: bool = False time column: Optional[str] = None frequency: str = "M" metrics: List[str] = None aggregation: str = "sum" @dataclass class CorrelationConfig: enabled: bool = False columns: List[str] = None method: str = "pearson" @dataclass class AnalysisConfig: analysis id: str analysis name: str preprocessing: PreprocessingConfig dimensions: List[DimensionConfig] time series analysis: TimeSeriesConfig = None correlation analysis: CorrelationConfig = None class DataAnalyzer: def init (self, excel url: str, config json: str, logger=None): """初始化数据分析器 Args: excel url: Excel文件URL config json: 配置JSON字符串 logger: 日志记录器 """ self.excel url = excel url self.config json = config json self.config = None 将在load data后设置 self.df = None self.results = {} self.logger = logger or print def download file with retry(self, url, max retries=3, timeout=60, chunk size=8192): """使用分块下载和重试机制下载文件""" from requests.exceptions import RequestException for attempt in range(max retries): try: self.logger(f"尝试下载文件 (尝试 {attempt+1}/{max retries})...") 设置超时和流式传输 session = requests.Session() 增加连接池大小和保持连接 adapter = requests.adapters.HTTPAdapter( pool connections=5, pool maxsize=20, max retries=3 ) session.mount('http://', adapter) session.mount('https://', adapter) 发送HEAD请求检查文件大小 try: head response = session.head(url, timeout=timeout/2) head response.raise for status() total size = int(head response.headers.get('content length', 0)) if total size: self.logger(f"文件大小: {total size/1024/1024:.2f} MB") except Exception as e: self.logger(f"检查文件大小失败: {str(e)},继续下载...") total size = 0 开始下载 response = session.get(url, stream=True, timeout=timeout) response.raise for status() 如果HEAD请求未获取到大小,从GET响应获取 if not total size: total size = int(response.headers.get('content length', 0)) if total size: self.logger(f"文件大小: {total size/1024/1024:.2f} MB") 使用字节IO流收集数据 content = bytearray() downloaded = 0 分块下载 for chunk in response.iter content(chunk size=chunk size): if chunk: 过滤掉保持连接alive的空块 content.extend(chunk) downloaded += len(chunk) 每下载1MB记录一次进度 数据抽样代码 输入参数示例图: Unable to load Please check the network connection and retry. ai data 工作流 智能体平台.pdf · 1.65MB Retry ai data 工作流 智能体平台.pdf Unable to load Please check the network connection and retry. ai data 工作流 智能体平台.pdf · 1.65MB Retry ai data 工作流 智能体平台.pdf 数据分析代码 输入参数示例图: 按照这个命名规范即可复制所有代码 • 复制需要把 我提供的代码中 前两行代码删掉,不要删掉 自己 新建插件的前两行,那是插件文件唯一指向 数据抽样代码 输入参数示例图: Output Format 我将输出: 1. 数据分析概要 : 数据特征说明 可用分析维度 建议分析方向 2. 五个配置文件变量 : 图表提示词工程 七,常见问题 1. 数据维度分析LLM输出为null 解决方法:调整token限制,尽量调高 学习交流 作者:pg万般 作者:pg万般 一,基本信息 • 直达链接 https://www.coze.cn/store/project/7477152735444566067?from=store search suggestion&bid=6fhjgpdlg2g1j 扣子 AI 智能体开发平台 扣子是新一代 AI 大模型智能体开发平台。整合了插件、长短期记忆、工作流、卡片等丰富能力,扣子能帮你低门槛、快速搭建个性化或具备商业价值的智能体,并发布到豆包、飞书等各个平台。 • 效果图 • 应用使用数据 二,需求分析 • 来源:电商公司需要做一条工作流,对数据进行清洗与可视化设计。 • 需求痛点:主要是数据量特别大,如果直接传给通用大模型会有幻觉 三,业务流程设计 Unable to load the board. Please refresh and try again.Copy ErrorRefresh Nothing on the board yet 四,数据分析自动化系统需求说明 业务流程概述 整体流程 核心功能需求 1. 用户上传Excel文件进行数据分析 2. 系统自动识别数据维度并生成分析配置代码 3. 根据配置代码生成全量数据分析结果 4. 输出Markdown格式的表格和Echarts图表 5. 将Markdown格式转PDF保存到本地下载 二创方向 接入自己数据库 或者形成月报日报接入自己飞书 Coze工作流 五,插件代码 Markdown转PDF(存七牛)代码 输入参数示例图: 按照这个命名规范即可复制所有代码 插件入参操作指引文档: Markdown转PDF 存七牛,入参说明 Markdown转PDF 存七牛,入参说明 • 复制需要把 我提供的代码中 前两行代码删掉,不要删掉 自己 新建插件的前两行,那是插件文件唯一指向 • 复制需要把前两行代码删掉 六,提示词 配置文件提示词工程

在 小宇宙note 阅读完整内容