import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from scipy.stats import kurtosis, skew
import os
# 读取Excel文件
filename = 'data\附件2-2清洗整理后数据.xlsx'
data = pd.read_excel(filename)
# 配置中文字体显示问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 提取相关数据列
crop_names = data['作物名称'] # 作物名称
yield_per_acre = data['亩产量/斤'] # 亩产量/斤
cost_per_acre = data['种植成本/(元/亩)'] # 种植成本/(元/亩)
price_per_kg = data['销售单价/(元/斤)'] # 销售单价/(元/斤)
# 设置seaborn样式
# 关闭 seaborn 的默认字体设置
sns.set(style="whitegrid", font_scale=1.2, rc={"font.sans-serif": ['SimHei'], "axes.unicode_minus": False})
# --- 1. 数据可视化 ---
# 保存图片的文件夹
output_dir = 'fig'
if not os.path.exists(output_dir):
os.makedirs(output_dir)
# 1.1 绘制直方图(数据分布)
plt.figure(figsize=(15, 15))
plt.subplot(3,1,1)
plt.hist(yield_per_acre, bins=30, color='skyblue', edgecolor='black')
plt.title('亩产量分布', fontsize=14)
plt.xlabel('亩产量(斤)')
plt.ylabel('频率')
plt.subplot(3,1,2)
plt.hist(cost_per_acre, bins=30, color='lightgreen', edgecolor='black')
plt.title('种植成本分布', fontsize=14)
plt.xlabel('种植成本(元/亩)')
plt.ylabel('频率')
plt.subplot(3,1,3)
plt.hist(price_per_kg, bins=30, color='lightcoral', edgecolor='black')
plt.title('销售单价分布', fontsize=14)
plt.xlabel('销售单价(元/斤)')
plt.ylabel('频率')
plt.tight_layout()
plt.savefig(os.path.join(output_dir, 'histograms.png')) # 保存直方图
plt.show()
# 1.2 绘制箱型图(展示数据的集中趋势和离群点)
plt.figure(figsize=(10, 12))
plt.subplot(3,1,1)
sns.boxplot(yield_per_acre, color='skyblue')
plt.title('亩产量箱型图', fontsize=14)
plt.ylabel('亩产量(斤)')
plt.subplot(3,1,2)
sns.boxplot(cost_per_acre, color='lightgreen')
plt.title('种植成本箱型图', fontsize=14)
plt.ylabel('种植成本(元/亩)')
plt.subplot(3,1,3)
sns.boxplot(price_per_kg, color='lightcoral')
plt.title('销售单价箱型图', fontsize=14)
plt.ylabel('销售单价(元/斤)')
plt.tight_layout()
plt.savefig(os.path.join(output_dir, 'boxplots.png')) # 保存箱型图
plt.show()
# 1.3 绘制散点图(展示变量之间的相关性)
plt.figure(figsize=(12, 12))
plt.subplot(2,2,1)
plt.scatter(yield_per_acre, cost_per_acre, color='skyblue')
plt.title('亩产量 vs 种植成本', fontsize=14)
plt.xlabel('亩产量(斤)')
plt.ylabel('种植成本(元/亩)')
plt.subplot(2,2,2)
plt.scatter(yield_per_acre, price_per_kg, color='lightgreen')
plt.title('亩产量 vs 销售单价', fontsize=14)
plt.xlabel('亩产量(斤)')
plt.ylabel('销售单价(元/斤)')
plt.subplot(2,2,3)
plt.scatter(cost_per_acre, price_per_kg, color='lightcoral')
plt.title('种植成本 vs 销售单价', fontsize=14)
plt.xlabel('种植成本(元/亩)')
plt.ylabel('销售单价(元/斤)')
plt.tight_layout()
plt.savefig(os.path.join(output_dir, 'scatterplots.png')) # 保存散点图
plt.show()
# --- 2. 描述性分析 ---
# 计算均值, 中位数, 标准差, 峰度, 偏度
desc_stats = {
'亩产量': {
'均值': np.mean(yield_per_acre),
'中位数': np.median(yield_per_acre),
'标准差': np.std(yield_per_acre),
'峰度': kurtosis(yield_per_acre),
'偏度': skew(yield_per_acre)
},
'种植成本': {
'均值': np.mean(cost_per_acre),
'中位数': np.median(cost_per_acre),
'标准差': np.std(cost_per_acre),
'峰度': kurtosis(cost_per_acre),
'偏度': skew(cost_per_acre)
},
'销售单价': {
'均值': np.mean(price_per_kg),
'中位数': np.median(price_per_kg),
'标准差': np.std(price_per_kg),
'峰度': kurtosis(price_per_kg),
'偏度': skew(price_per_kg)
}
}
# 打印描述性统计结果
print('--- 描述性分析 ---')
for key, stats in desc_stats.items():
print(f'{key}: 均值={stats["均值"]:.2f}, 中位数={stats["中位数"]:.2f}, 标准差={stats["标准差"]:.2f}, '
f'峰度={stats["峰度"]:.2f}, 偏度={stats["偏度"]:.2f}')
# --- 3. 相关性分析 ---
# 计算相关系数
correlations = {
'亩产量与种植成本': yield_per_acre.corr(cost_per_acre),
'亩产量与销售单价': yield_per_acre.corr(price_per_kg),
'种植成本与销售单价': cost_per_acre.corr(price_per_kg)
}
# 打印相关性分析结果
print('--- 相关性分析 ---')
for key, corr in correlations.items():
print(f'{key}的相关系数: {corr:.2f}')
# 创建 DataFrame
df = pd.DataFrame({
'作物名称': crop_names,
'亩产量': yield_per_acre,
'种植成本': cost_per_acre,
'销售单价': price_per_kg
})
# 绘制成对关系图
sns.pairplot(df[['亩产量', '种植成本', '销售单价']], diag_kind='kde', plot_kws={'alpha':0.6})
plt.suptitle('成对关系图', y=1.0, fontsize=16, fontweight='bold')
plt.savefig(os.path.join(output_dir, 'pairplot.png')) # 保存图像到fig文件夹
plt.show()
# 计算相关系数矩阵
correlation_matrix = df[['亩产量', '种植成本', '销售单价']].corr()
# 绘制热力图
plt.figure(figsize=(8, 6))
sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', center=0, linewidths=0.5, fmt='.2f')
plt.title('变量相关性热力图', fontsize=16, fontweight='bold')
plt.savefig(os.path.join(output_dir, 'correlation_heatmap.png')) # 保存图像到fig文件夹
plt.show()
import seaborn as sns
import matplotlib.pyplot as plt
# 绘制累积密度图
plt.figure(figsize=(10, 6))
sns.ecdfplot(yield_per_acre, label='亩产量', color='skyblue')
sns.ecdfplot(cost_per_acre, label='种植成本', color='lightgreen')
sns.ecdfplot(price_per_kg, label='销售单价', color='lightcoral')
plt.title('累积密度图', fontsize=16, fontweight='bold')
plt.xlabel('值')
plt.ylabel('累积概率')
plt.legend()
plt.grid(True, linestyle='--', alpha=0.6)
plt.savefig(os.path.join(output_dir, 'cdf_plots.png')) # 保存图像到fig文件夹
plt.show()
# 绘制对比图
plt.figure(figsize=(15, 10))
# 直方图
plt.subplot(2, 3, 1)
plt.hist(yield_per_acre, bins=30, color='skyblue', edgecolor='black')
plt.title('亩产量直方图')
plt.xlabel('亩产量(斤)')
plt.ylabel('频率')
plt.subplot(2, 3, 2)
plt.hist(cost_per_acre, bins=30, color='lightgreen', edgecolor='black')
plt.title('种植成本直方图')
plt.xlabel('种植成本(元/亩)')
plt.ylabel('频率')
plt.subplot(2, 3, 3)
plt.hist(price_per_kg, bins=30, color='lightcoral', edgecolor='black')
plt.title('销售单价直方图')
plt.xlabel('销售单价(元/斤)')
plt.ylabel('频率')
# 箱型图
plt.subplot(2, 3, 4)
sns.boxplot(yield_per_acre, color='skyblue')
plt.title('亩产量箱型图')
plt.ylabel('亩产量(斤)')
plt.subplot(2, 3, 5)
sns.boxplot(cost_per_acre, color='lightgreen')
plt.title('种植成本箱型图')
plt.ylabel('种植成本(元/亩)')
plt.subplot(2, 3, 6)
sns.boxplot(price_per_kg, color='lightcoral')
plt.title('销售单价箱型图')
plt.ylabel('销售单价(元/斤)')
plt.tight_layout()
plt.savefig(os.path.join(output_dir, 'histogram_boxplot_comparison.png')) # 保存图像到fig文件夹
plt.show()
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
可视化.zip (31个子文件)
可视化
Q1-数据预处理-整体数据可视化.py 3KB
Q2-数据预处理-价格可视化.py 4KB
Q1-数据预处理-占地面积可视化.py 3KB
Q1-数据预处理-描述性统计分析.py 7KB
data
附件2-1.xlsx 13KB
附件1-1.xlsx 10KB
附件1-2.xlsx 10KB
附件2-1导入数据.xlsx 13KB
附件2-2清洗整理后数据.xlsx 13KB
Q1-数据预处理-柱状图.py 3KB
Q1-数据预处理-异常值分析.py 5KB
fig
histogram_boxplot_comparison.png 90KB
correlation_heatmap.png 34KB
地块面积饼图.png 440KB
crop_comparison_chart.png 309KB
price_range_heatmap.png 58KB
scatterplots.png 78KB
地块面积分布图_美观.png 255KB
散点图_销售单价与亩产量.png 132KB
cdf_plots.png 43KB
异常值检测结果.png 52KB
median_price.png 28KB
boxplots.png 58KB
地块面积分布图.png 255KB
条形图_作物亩产量与种植成本.png 143KB
条形图_销售单价范围.png 107KB
histograms.png 70KB
price_range_scatter.png 69KB
original_price_range.png 31KB
qq_plots.png 73KB
pairplot.png 80KB
共 31 条
- 1
资源评论
布凯彻-劳斯基
- 粉丝: 390
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功