代码用于读取并分析教育支出数据,通过 pandas 读取 Excel 文件中的地区财政教育支出和教育支出水平数据,并利用 matplotlib 和 seaborn 库生成可视化图表。首先,代码设置中文字体和解决负号显示问题,确保中文标签正确显示;然后提取所需列数据,分别创建柱状图展示各地区的教育支出金额,以及散点图分析教育支出金额与教育支出水平之间的关系。最终将生成的图表保存为图片文件,便于后续报告或展示使用。
📊 图表 1:各地区教育支出金额
图表描述
- 标题:各地区教育支出金额
- 横轴:地区名称(如北京、天津、河北等)
- 纵轴:地方财政教育支出(单位:亿元)
- 图表类型:柱状图
- 数据展示:每个地区的教育支出金额以蓝色柱形表示,柱形上方有黑色误差线,显示数据的波动范围。
原理与意义
-
数据来源:
- 数据可能来源于某年或某段时间内的地方财政预算报告,记录了不同省份或地区的教育支出情况。
- 每个柱形的高度代表该地区的教育支出总额,误差线可能表示统计误差或年度波动范围。
-
可视化目的:
- 直观比较:通过柱状图可以快速比较不同地区之间的教育支出差异。
- 突出重点:高支出地区(如广东、江苏等)在图表中明显高于其他地区,便于识别教育投入较高的区域。
- 趋势分析:通过观察柱形的高度分布,可以发现某些地区(如东部沿海省份)教育支出普遍较高,而西部或中部部分省份支出相对较低。
-
代码实现:
- 使用
matplotlib
库绘制柱状图:import matplotlib.pyplot as plt import pandas as pd # 假设数据存储在 DataFrame 中 data = pd.read_excel('education_expenditure.xlsx') regions = data['地区'] expenditure = data['地方财政教育支出(亿元)'] plt.figure(figsize=(12, 6)) sns.barplot(x='地区', y='地方财政教育支出(亿元)', data=data) plt.xticks(rotation=90) plt.title('各地区教育支出金额') plt.tight_layout() plt.savefig('education_expenditure.png') plt.close()
- 关键点:
sns.barplot()
:用于绘制柱状图,自动处理数据分组。plt.xticks(rotation=90)
:旋转 X 轴标签,避免重叠。plt.tight_layout()
:调整布局,防止标签被截断。
- 使用
-
结论:
- 广东省的教育支出最高,接近 2500 亿元;
- 北京、江苏、山东等经济发达地区教育支出也较高;
- 部分西部地区(如西藏、青海)教育支出相对较低,可能存在资源分配不均的问题。
📊 图表 2:教育支出金额与支出水平关系
图表描述
- 标题:教育支出金额与支出水平关系
- 横轴:地方财政教育支出(单位:亿元)
- 纵轴:教育支出水平(无具体单位,可能是标准化后的指标)
- 图表类型:散点图
- 数据展示:每个点代表一个观测值,颜色为蓝色,密度较大的区域表明数据集中。
原理与意义
-
数据来源:
- 数据可能来源于教育支出与教育质量评估的综合数据库,其中横轴表示教育支出金额,纵轴表示教育支出水平(如学生平均成绩、教育资源覆盖率等)。
-
可视化目的:
- 探索相关性:通过散点图观察教育支出金额与教育支出水平之间的关系,判断是否存在正相关、负相关或无相关性。
- 异常值检测:散点图中的离群点可能表示某些特殊案例,需要进一步分析原因。
- 趋势分析:整体趋势向上表明教育支出增加可能有助于提高教育水平。
-
代码实现:
- 使用
seaborn
和matplotlib
绘制散点图:import seaborn as sns import matplotlib.pyplot as plt # 假设数据存储在 DataFrame 中 data = pd.read_excel('education_expenditure.xlsx') plt.figure(figsize=(8, 6)) sns.scatterplot(x='地方财政教育支出(亿元)', y='教育支出水平', data=data) plt.title('教育支出金额与支出水平关系') plt.savefig('expenditure_vs_level.png') plt.close()
- 关键点:
sns.scatterplot()
:用于绘制散点图,支持多种样式和配色方案。- 散点图适合展示两个连续变量之间的关系。
- 使用
-
结论:
- 散点图显示教育支出金额与教育支出水平之间存在一定的正相关关系,但并非完全线性。
- 高支出区域(如横轴右侧)的教育支出水平普遍较高,但也有部分低支出区域表现出较高的教育水平,可能受到其他因素影响(如师资力量、政策倾斜等)。
🧮 总结
图表 1 的核心价值
- 直观展示地区差异:通过柱状图清晰地展示了各地区教育支出的绝对金额,帮助决策者了解资源分配现状。
- 误差线的意义:误差线反映了数据的不确定性,为后续分析提供参考。
图表 2 的核心价值
- 揭示关联性:散点图揭示了教育支出金额与教育支出水平之间的潜在关系,为进一步研究提供方向。
- 多维度分析:结合图表 1 和图表 2,可以更全面地分析教育支出的影响因素。
整体代码如下
# -*- coding: utf-8 -*-
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文字体
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
print(f"当前工作目录: {os.getcwd()}")
# 读取Excel文件
df = pd.read_excel('D:\\1workplace\\cursorproject\\data\\教育支出水平(2007-2023).xlsx')
# 提取所需列
data = df[['地区', '地方财政教育支出(亿元)', '教育支出水平']]
# 创建柱状图
plt.figure(figsize=(12, 6))
sns.barplot(x='地区', y='地方财政教育支出(亿元)', data=data)
plt.xticks(rotation=90)
plt.title('各地区教育支出金额')
plt.tight_layout()
plt.savefig('education_expenditure.png')
plt.close()
# 创建散点图
plt.figure(figsize=(8, 6))
sns.scatterplot(x='地方财政教育支出(亿元)', y='教育支出水平', data=data)
plt.title('教育支出金额与支出水平关系')
plt.savefig('expenditure_vs_level.png')
plt.close()
数据获取,搜索公众号“MC数据分析”,输入:教育支出数据