利用LLM(ChatGPT、Claude、LLaMA)自动化处理建筑数据。生成Python/Pandas脚本,提取文档数据,并构建自动化流程。
LLM 数据自动化用于构建.是一项面向实际任务的技能,主要用于Overview. 基于DDC方法(第2.3章),这种技能使得使用大语言模型(LLM)的构建数据处理自动化成为可能.。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
基于 DDC 方法论(第 2.3 章),本技能利用大语言模型(LLM)实现建筑数据处理的自动化。您无需手动编写数据转换代码,只需用自然语言描述需求,LLM 即可生成所需的 Python/Pandas 代码。
参考书籍:《Pandas DataFrame 和 LLM ChatGPT》
“ChatGPT、LLaMA 等 LLM 模型使不具备深厚编程背景的专业人员也能参与企业业务流程的自动化与优化。” —《Data-Driven Construction》(DDC)一书,第 2.3 章
直接用自然语言描述您的数据处理任务:
Prompt: “编写 Python 代码,读取一份包含建筑材料信息的 Excel 文件, 筛选 quantity > 100 的行,并保存为 CSV 文件。”
# 从 ollama.com 安装 Ollama ollama pull mistral # 执行查询 ollama run mistral “编写 Pandas 代码,计算 total_cost = quantity * unit_price”
import pandas as pd
# 建筑项目以 DataFrame 表示
# 行 = 构件,列 = 属性
df = pd.DataFrame({
'element_id': ['W001', 'W002', 'C001'],
'category': ['Wall', 'Wall', 'Column'],
'material': ['Concrete', 'Brick', 'Steel'],
'volume_m3': [45.5, 32.0, 8.2],
'cost_per_m3': [150, 80, 450]
})
# 计算总成本
df['total_cost'] = df['volume_m3'] * df['cost_per_m3']
print(df)
数据导入:
“编写代码,导入含施工进度计划的 Excel 文件, 解析日期字段,并构建 Pandas DataFrame”
数据筛选:
“筛选 category 为 ‘Structural’ 且成本超出预算上限 50000 的构件”
数据聚合:
“按楼层对施工数据分组, 分别计算每层的总体积与总成本”
报表生成:
“生成汇总报表:按材料类别分组统计用量, 并导出为带格式的 Excel 文件”
# 向 ChatGPT 发送的 Prompt:
# “编写代码,从 PDF 中提取表格并转为 DataFrame”
import pdfplumber
import pandas as pd
def pdf_to_dataframe(pdf_path):
"""从 PDF 文件中提取表格"""
all_tables = []
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
tables = page.extract_tables()
for table in tables:
if table:
df = pd.DataFrame(table[1:], columns=table[0])
all_tables.append(df)
if all_tables:
return pd.concat(all_tables, ignore_index=True)
return pd.DataFrame()
# 使用示例
df = pdf_to_dataframe("construction_spec.pdf")
df.to_excel("extracted_data.xlsx", index=False)
# Prompt:“分析 BIM 构件数据,按类别分组并计算体积”
import pandas as pd
def analyze_bim_elements(csv_path):
"""从 CSV 导出文件分析 BIM 构件数据"""
df = pd.read_csv(csv_path)
# 按类别分组
summary = df.groupby('Category').agg({
'Volume': 'sum',
'Area': 'sum',
'ElementId': 'count'
}).rename(columns={'ElementId': 'Count'})
return summary
# 使用示例
summary = analyze_bim_elements("revit_export.csv")
print(summary)
# Prompt:“基于工程量与单价,生成成本估算结果”
import pandas as pd
def calculate_cost_estimate(quantities_df, prices_df):
"""
计算项目成本估算
参数:
quantities_df: 包含列 [item_code, quantity] 的 DataFrame
prices_df: 包含列 [item_code, unit_price, unit] 的 DataFrame
返回:
包含成本计算结果的 DataFrame
"""
# 合并工程量与单价数据
result = quantities_df.merge(prices_df, on='item_code', how='left')
# 计算成本
result['total_cost'] = result['quantity'] * result['unit_price']
# 添加占比统计
result['cost_percentage'] = (result['total_cost'] /
result['total_cost'].sum() * 100).round(2)
return result
# 使用示例
quantities = pd.DataFrame({
'item_code': ['C001', 'S001', 'W001'],
'quantity': [150, 2000, 500]
})
prices = pd.DataFrame({
'item_code': ['C001', 'S001', 'W001'],
'unit_price': [120, 45, 85],
'unit': ['m3', 'kg', 'm2']
})
estimate = calculate_cost_estimate(quantities, prices)
print(estimate)
# Prompt:“解析施工进度计划,计算工期,并识别延误项”
import pandas as pd
from datetime import datetime
def analyze_schedule(schedule_path):
"""分析施工进度计划中的延误情况"""
df = pd.read_excel(schedule_path)
# 解析日期字段
df['start_date'] = pd.to_datetime(df['start_date'])
df['end_date'] = pd.to_datetime(df['end_date'])
df['actual_end'] = pd.to_datetime(df['actual_end'])
# 计算工期
df['planned_duration'] = (df['end_date'] - df['start_date']).dt.days
df['actual_duration'] = (df['actual_end'] - df['start_date']).dt.days
# 识别延误
df['delay_days'] = df['actual_duration'] - df['planned_duration']
df['is_delayed'] = df['delay_days'] > 0
return df
# 使用示例
schedule = analyze_schedule("project_schedule.xlsx")
delayed_tasks = schedule[schedule['is_delayed']]
print(f"延误任务数:{len(delayed_tasks)}")
# 安装 curl -fsSL https://ollama.com/install.sh | sh # 下载模型 ollama pull mistral # 通用型,7B 参数 ollama pull codellama # 专注代码生成 ollama pull deepseek-coder # 编程任务表现最佳 # 运行 ollama run mistral “编写 Pandas 代码,基于 project_id 合并两个 DataFrame”
# 将企业文档加载至本地 LLM
from llama_index import SimpleDirectoryReader, VectorStoreIndex
# 读取文件夹下所有 PDF
reader = SimpleDirectoryReader("company_documents/")
documents = reader.load_data()
# 构建可检索索引
index = VectorStoreIndex.from_documents(documents)
# 查询您的文档
query_engine = index.as_query_engine()
response = query_engine.query(
"标准混凝土配合比规范是什么?"
)
print(response)
| IDE | 适用场景 | 主要特性 |
|---|---|---|
| Jupyter Notebook | 学习与实验 | 交互式单元格、可视化支持 |
| Google Colab | 免费 GPU、快速启动 | 云端运行、预装常用库 |
| VS Code | 专业开发 | 丰富插件生态、GitHub Copilot 支持 |
| PyCharm | 大型项目 | 高级调试、重构功能完善 |
pip install jupyter pandas openpyxl pdfplumber jupyter notebook
pandas-construction-analysis 获取高级 Pandas 操作示例pdf-to-structured 了解文档结构化处理方案etl-pipeline 掌握自动化数据流水线构建方法rag-construction 学习如何在建筑文档上实现 RAG 应用相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章