一、设计要求
2012-2018 年中国马铃薯批发市场交易价格调查统计数据集本数据集收集了中国多年马铃薯批发市场交易价格数据,不仅涵盖了不同时间尺度的马铃薯平均价格、环比及同比价格变化率,同时包含不同地理空间尺度的价格数据,可为马铃薯价格预测、时空传导模拟及监测预警等相关研究和对策建议提供基础科学数据。通过分析本数据,请至少解决以下问题:
(1)25 个省(自治区、直辖市)的马铃价格变化趋势差异有什么地域特点?
(2)25 个省(自治区、直辖市)的马铃薯价格变化趋势差异有什么时间特
点?
(3)马铃薯价格变化什么时候发生了巨大浮动,其原因可能是什么?
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 马铃薯 ” 获取,拿来即用,只回复文字哦。👈👈👈
二、设计思路
- 读取和处理数据
- 读取 Excel 文件,获取包含不同省份马铃薯价格数据的各个表格。
- 将时间列转换为日期格式,并设置为数据框的索引。
- 绘制价格变化趋势图
- 使用 Matplotlib 绘制不同省份马铃薯价格随时间变化的折线图。
3.计算并绘制各省市的平均价格柱状图
- 将所有省市的数据合并到一个 DataFrame 中。
- 计算每个省市的月均价格,并绘制柱状图。
4.计算并绘制前 10 省份的平均价格饼状图
- 处理时间列为日期格式。
- 计算每个省市的平均月均价格,选择前 10 省市,并绘制饼状图。
1. 读取和处理数据
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 马铃薯 ” 获取,拿来即用,只回复文字哦。👈👈👈
import pandas as pd import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签 plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号 # 读取 Excel 文件 # 代码略(至少十行)... # 代码略(至少十行)... # 转换时间列为日期格式 for sheet in sheets: data[sheet]['时间'] = pd.to_datetime(data[sheet]['时间']) # 设置时间列为索引 for sheet in sheets: data[sheet].set_index('时间', inplace=True)
分析:
- 这段代码首先设置了中文标签和负号的显示。
- 然后,它读取 Excel 文件中包含不同省份数据的各个表格,并将时间列转换为日期格式,最后将时间列设置为索引。
2. 绘制价格变化趋势图
plt.figure(figsize=(12, 6)) # 代码略(至少十行)... # 代码略(至少十行)... plt.legend() plt.show()
分析:
- 该部分代码创建一个折线图,展示各省份马铃薯价格随时间的变化趋势。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 马铃薯 ” 获取,拿来即用,只回复文字哦。👈👈👈
3. 计算并绘制各省市的平均价格柱状图
file_path = '5 25个省(自治区、直辖市)马铃薯月平均批发价格及变化率信息.xlsx' data = pd.read_excel(file_path, sheet_name=sheets, engine='openpyxl') # 创建一个空的DataFrame来存储所有省市的数据 all_data = pd.DataFrame() # 代码略(至少十行)... # 代码略(至少十行)... # 绘制柱状图 plt.figure(figsize=(14, 8)) # 代码略(至少十行)... # 代码略(至少十行)... plt.xlabel('省份') plt.ylabel('月均价格(元/千克)') plt.title('各省市马铃薯月均价格') plt.xticks(rotation=90) plt.show()
分析:
- 该部分代码再次读取数据,将所有省市的数据合并到一个 DataFrame 中。
- 计算各省市的平均月均价格,并绘制柱状图展示结果。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 马铃薯 ” 获取,拿来即用,只回复文字哦。👈👈👈
4. 计算并绘制前 10 省份的平均价格饼状图
def convert_to_datetime(series): # 首先尝试将字符串日期格式化 dates = pd.to_datetime(series, errors='coerce', format='%Y年%m月') # 代码略(至少十行)... # 代码略(至少十行)... pd.to_datetime(series[numeric_dates].astype(float), unit='D', origin='1899-12-30') return dates for sheet in sheets: data[sheet]['时间'] = convert_to_datetime(data[sheet]['时间']) # 设置时间列为索引 for sheet in sheets: data[sheet].set_index('时间', inplace=True) # 计算每个省份的平均月均价格 average_prices = {sheet: data[sheet]['月均价格\n(元/千克)'].mean() for sheet in sheets} # 代码略(至少十行)... # 代码略(至少十行)... # 绘制饼状图 plt.figure(figsize=(10, 8)) plt.pie(average_prices_df['平均月均价格(元/千克)'], labels=average_prices_df['省份'], autopct='%1.1f%%', startangle=140) plt.title('前10省份马铃薯平均月均价格分布') plt.axis('equal') # 确保饼图为圆形 plt.show()
分析:
- 该部分代码定义了一个函数
convert_to_datetime
,用于将时间列转换为日期格式,处理了不同的日期格式。 - 计算每个省市的平均月均价格,选择前 10 个省市,并绘制饼状图展示结果。
以上是代码的详细设计思路和分析,希望能帮助您更好地理解和扩展代码。
👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 马铃薯 ” 获取,拿来即用,只回复文字哦。👈👈👈