'commit'
This commit is contained in:
@@ -20,6 +20,7 @@ class EducationDataModel:
|
||||
TEACHER_COUNT_FILE = os.path.join(DATA_DIR, 'TeacherCount.json')
|
||||
ENROLLMENT_COUNT_FILE = os.path.join(DATA_DIR, 'ZaiXiaoShengCount.json')
|
||||
ADMISSION_COUNT_FILE = os.path.join(DATA_DIR, 'ZhaoShengCount.json')
|
||||
POPULATION_FILE = os.path.join(DATA_DIR, 'RenKou.json') # 新增:人口数据文件路径
|
||||
|
||||
@staticmethod
|
||||
def load_json_file(file_path):
|
||||
@@ -247,6 +248,58 @@ class EducationDataModel:
|
||||
|
||||
return result
|
||||
|
||||
# 新增:人口数据相关方法
|
||||
@staticmethod
|
||||
def get_population_data_by_year(year):
|
||||
"""获取指定年份的云南省人口数据"""
|
||||
# 加载人口数据文件
|
||||
population_data = EducationDataModel.load_json_file(EducationDataModel.POPULATION_FILE)
|
||||
# 获取云南省数据
|
||||
yunnan_data = EducationDataModel.get_province_data(population_data)
|
||||
|
||||
if not yunnan_data:
|
||||
print(f"未获取到云南省{year}年的人口数据")
|
||||
return None
|
||||
|
||||
year_str = str(year)
|
||||
result = {
|
||||
'year': year,
|
||||
'total_population': yunnan_data.get('total_population', {}).get(year_str, 0), # 万人
|
||||
'birth_population': yunnan_data.get('birth_population', {}).get(year_str, 0), # 原数据单位为个
|
||||
'urban_population': yunnan_data.get('urban_population', {}).get(year_str, 0), # 万人
|
||||
'rural_population': yunnan_data.get('rural_population', {}).get(year_str, 0), # 万人
|
||||
'urbanization_rate': yunnan_data.get('urbanization_rate', {}).get(year_str, 0) # %
|
||||
}
|
||||
|
||||
# 将新生人口转换为万人(如果是整数)
|
||||
if isinstance(result['birth_population'], int):
|
||||
result['birth_population'] = round(result['birth_population'] / 10000, 1)
|
||||
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
def print_population_data(population_data):
|
||||
"""打印人口数据"""
|
||||
if not population_data:
|
||||
print("没有可打印的人口数据")
|
||||
return
|
||||
|
||||
year = population_data.get('year', '未知')
|
||||
print(f"云南省 {year}年人口概览")
|
||||
print("-------------------")
|
||||
print(f"总人口 {population_data.get('total_population', 0):,} 万人")
|
||||
print(f"新生人口 {population_data.get('birth_population', 0)} 万人")
|
||||
print(f"城镇人口 {population_data.get('urban_population', 0):,} 万人")
|
||||
print(f"乡村人口 {population_data.get('rural_population', 0):,} 万人")
|
||||
print(f"城镇化率 {population_data.get('urbanization_rate', 0):.2f} %")
|
||||
|
||||
# 验证数据一致性
|
||||
total = population_data.get('total_population', 0)
|
||||
urban_rural_sum = population_data.get('urban_population', 0) + population_data.get('rural_population', 0)
|
||||
if abs(total - urban_rural_sum) > 0.01:
|
||||
print("\n注意:总人口与城镇人口+乡村人口存在差异")
|
||||
print(f"差异值: {abs(total - urban_rural_sum):.2f} 万人")
|
||||
|
||||
@staticmethod
|
||||
def print_education_data(data, year):
|
||||
"""打印教育数据"""
|
||||
@@ -268,20 +321,24 @@ class EducationDataModel:
|
||||
for file_path in [EducationDataModel.SCHOOL_COUNT_FILE,
|
||||
EducationDataModel.TEACHER_COUNT_FILE,
|
||||
EducationDataModel.ENROLLMENT_COUNT_FILE,
|
||||
EducationDataModel.ADMISSION_COUNT_FILE]:
|
||||
EducationDataModel.ADMISSION_COUNT_FILE,
|
||||
EducationDataModel.POPULATION_FILE]: # 新增:检查人口数据文件
|
||||
if os.path.exists(file_path):
|
||||
print(f"找到数据文件: {file_path}")
|
||||
else:
|
||||
print(f"警告:数据文件不存在: {file_path}")
|
||||
|
||||
# 获取数据
|
||||
# 获取并打印教育数据
|
||||
education_data = EducationDataModel.get_education_data_by_year(year)
|
||||
|
||||
# 打印数据
|
||||
if education_data:
|
||||
EducationDataModel.print_education_data(education_data, year)
|
||||
else:
|
||||
print("未获取到任何数据")
|
||||
print("未获取到任何教育数据")
|
||||
|
||||
# 新增:获取并打印人口数据
|
||||
print("\n" + "=" * 50)
|
||||
population_data = EducationDataModel.get_population_data_by_year(year)
|
||||
EducationDataModel.print_population_data(population_data)
|
||||
|
||||
except Exception as e:
|
||||
print(f"获取数据时发生错误: {e}")
|
||||
|
Binary file not shown.
Reference in New Issue
Block a user