You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python 3.8.5环境下pyDEA GUI运行失败,求脚本运行方法及DEA分析示例代码

Absolutely! I’ve hit that exact locale-related GUI bug with pyDEA on Python 3.8.x before—script-based execution is a solid workaround that avoids that regex flag issue entirely. Here’s a complete, runnable example to execute DEA analysis via script, including all necessary imports and core method calls:

Script-Based pyDEA Execution Guide

1. Required Imports

First, import the core pyDEA modules for data handling, model execution, and result export:

from pyDEA.core.data_processing.read_data_from_xls import read_data
from pyDEA.core.models.envelopment_models import EnvelopmentModel
from pyDEA.core.data_processing.write_data_to_xls import write_data
from pyDEA.core.utils.dea_utils import DEAMethod, Orientation, ReturnsToScale

2. Prepare Your Input Data

Your input Excel file should follow this structure:

  • First column: DMU (Decision Making Unit) names (no duplicates, no empty values)
  • Subsequent columns: Input and Output metrics (all numerical values)

3. Full Example Code

# ----------------------
# Step 1: Load input data
# ----------------------
# Replace with your Excel file path and sheet name
input_file = 'your_dea_data.xlsx'
data = read_data(input_file, sheet_name='Sheet1')

# ----------------------
# Step 2: Define DEA settings
# ----------------------
# List your input and output column names (match Excel headers)
input_columns = ['Labor_Hours', 'Operating_Cost']
output_columns = ['Revenue', 'Customer_Satisfaction']

# Configure DEA parameters
dea_method = DEAMethod.VRS  # Use DEAMethod.CRS for Constant Returns to Scale
orientation = Orientation.OUTPUT  # Maximize outputs; use Orientation.INPUT to minimize inputs
returns_to_scale = ReturnsToScale.VRS  # Must align with dea_method

# ----------------------
# Step 3: Run DEA analysis
# ----------------------
# Initialize the model with your data and settings
dea_model = EnvelopmentModel(
    data, input_columns, output_columns, dea_method, orientation, returns_to_scale
)
# Execute the model
dea_model.run()

# ----------------------
# Step 4: Extract results
# ----------------------
efficiency_scores = dea_model.get_efficiency_scores()  # DMU -> efficiency value
peer_references = dea_model.get_peers()  # DMU -> list of peer DMUs
slack_values = dea_model.get_slacks()  # DMU -> input/output slack values

# ----------------------
# Step 5: Save results to Excel
# ----------------------
output_file = 'dea_analysis_results.xlsx'
write_data(output_file, efficiency_scores, peer_references, slack_values, input_columns, output_columns)

# Optional: Print quick results to console
print("DEA Efficiency Scores:")
for dmu, score in efficiency_scores.items():
    print(f"{dmu}: {score:.4f}")

Key Notes

  • Locale Bug Avoidance: Running via script skips the GUI’s regex logic that triggers the ValueError: cannot use LOCALE flag with a str pattern in Python 3.8.x.
  • Parameter Customization: Swap DEAMethod.VRS with DEAMethod.CRS for constant returns to scale, or switch Orientation.OUTPUT to Orientation.INPUT if you want to minimize inputs instead of maximizing outputs.
  • Advanced Use Cases: For super-efficiency DEA or window analysis, use SuperEfficiencyModel or WindowModel from pyDEA.core.models instead of EnvelopmentModel.

Make sure your pyDEA installation is up-to-date (run pip install --upgrade pyDEA if needed) and that your Excel data is properly formatted with no missing values in numerical columns.

内容的提问来源于stack exchange,提问作者LancDec

火山引擎 最新活动