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 patternin Python 3.8.x. - Parameter Customization: Swap
DEAMethod.VRSwithDEAMethod.CRSfor constant returns to scale, or switchOrientation.OUTPUTtoOrientation.INPUTif you want to minimize inputs instead of maximizing outputs. - Advanced Use Cases: For super-efficiency DEA or window analysis, use
SuperEfficiencyModelorWindowModelfrompyDEA.core.modelsinstead ofEnvelopmentModel.
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




