Excel 数据的统计分析及绘图自动处理的python示例(精益办公实战2)

Excel 数据统计分析及绘图的自动处理python示例(精益办公实战2)

1、背景描述:

“看数不如看表,看表不如看图”

2、数据准备和任务要求:

数据准备
一份已经经过数据清洗的数据,无缺失值和重复值。
这份数据中涵括3种产品,随机收集的“蛋白质”和“固形物”的数据记录

任务要求
对数据集进行统计分析,通过图表来展示特征数据之间的关系,对数据进行挖掘以寻找有效的数据价值,并且结果需要以Excel文件的形式保存,以方便企业其他人员的查阅和使用。

3、方法步骤:

3.1 导入数据并查看

1、导入需要用到的python库
2、读取Excel文件并将数据转换为dataframe
3、查看数据集的基本信息
(数据的合并和清洗等操作请查看:Excel数据合并到统计分析自动处理的python示例(精益办公室实战1)

3.2 数据可视化–绘图

1、关键参数的赋值,并建立收集图形的列表
2、绘制柱状图
3、绘制箱型图
4、绘制分簇散点图
5、绘制散点图
6、绘制密度图
7、绘制聚合密度图
8、绘制回归图

3.3 建模并预测

建模并预测

3.4 将图表保存到Excel文件中

1、计算之前一共生成了多少个图形
2、建立收集所有图表的文件夹和图片文件的名字
3、构建图表保存的文件路径
4、将所有图表从.jpg转换为.png文件并保存
5、建立用于保存分析图表的Excel文件
6、检查文件结果

4、示例代码

4.1 导入数据
# 1、导入需要用的的python库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import openpyxl
import os
# 支持中文显示和负号显示
import matplotlib as mpl
mpl.rcParams["font.family"] = "SimHei"
mpl.rcParams["axes.unicode_minus"] = False
import warnings
warnings.filterwarnings("ignore")

# 2、从Excel中导入数据并转换为dataframe
file_path = "d:/test/Summary/Data_Summary.xlsx"
data = pd.read_excel(file_path, header=0, index_col=0)

# 3、查看数据集
data.head()

在这里插入图片描述

# 查看数据集的基本统计信息
data.info()

在这里插入图片描述

4.2 数据可视化–绘图
# 关键参数赋值 
chart_path = "d:/test/chart"
product = "产品"
category1 = "固形物"
category2 = "蛋白质"
# 收集图形的列表
fig_li = []
# 对图形显示的颜色进行设定
cur_palette = sns.color_palette("hls", 3) 
# 建立产品目录表  
prod_li = data[product].unique()        

# 1、柱状图
fig1, axes = plt.subplots(1, 1, figsize=(10, 5))
sns.countplot(x=product, data=data, palette=cur_palette)
axes.set_title("产品的取样数量统计")
fig_li.append(fig1)
plt.show()

在这里插入图片描述

# 2、箱型图
fig2, axes = plt.subplots(1, 2, figsize=(10, 5))
sns.boxplot(x=product, y=category1, data=data, ax=axes[0])
sns.boxplot(x=product, y=category2, data=data, ax=axes[1])
axes[0].set_title("产品固形物的箱型图")
axes[1].set_title("产品蛋白质的箱型图")
fig_li.append(fig2)
plt.show()

在这里插入图片描述

# 3.分簇散点图
fig3, axes = plt.subplots(1, 2, figsize=(10, 5))
sns.swarmplot(x=product, y=category1, data=data, ax=axes[0])
sns.swarmplot(x=product, y=category2, data=data, ax=axes[1])
axes[0].set_title("产品固形物的分簇散点图")
axes[1].set_title("产品蛋白质的分簇散点图")
fig_li.append(fig3)
plt.show()

在这里插入图片描述

# 4.散点图
fig4, axes = plt.subplots(1, 1, figsize=(10, 5))
sns.scatterplot(x=category1, y=category2, hue=product, data=data)
axes.set_title("产品固形物vs.蛋白质的散点图")
fig_li.append(fig4)
plt.show()

在这里插入图片描述

# 5.密度图
fig5, axes = plt.subplots(1, 2, figsize=(10, 5))
sns.kdeplot(x=category2, data=data, shade=True, ax=axes[0])
sns.kdeplot(x=category2, hue=product, data=data, shade=True, ax=axes[1])
axes[0].set_title("所有蛋白质数据的密度图")
axes[1].set_title("分产品呈现蛋白质数据的密度图")
fig_li.append(fig5)
plt.show()

在这里插入图片描述

# 6.聚合密度图
cmap_li = ["Greens", "Blues", "Reds"]

for i in range(len(prod_li)):
    li = data[data[product] == prod_li[i]]
    sns.kdeplot(x=category1, y=category2, data=li, cmap=cmap_li[i])

在这里插入图片描述

# 7.回归图
sns.lmplot(x=category1, y=category2, hue=product, data=data)
plt.show()

在这里插入图片描述

4.3 建模并预测
# 建模并预测:
from sklearn.linear_model import LinearRegression

prod_li = data[product].unique()
line_reg = LinearRegression()

for prod in prod_li:
    x_train = pd.DataFrame(data[data[product] == prod][category1])
    y_train = data[data[product] == prod][category2]
    line_reg.fit(x_train, y_train)
    print("产品:", prod)
    print("回归方程的截距:", line_reg.intercept_.round(3))
    print("回归方程的系数:", line_reg.coef_.round(3))
    print(30*"-")

在这里插入图片描述
这3种产品的回归方程式(x=“固形物”, y=“蛋白质”):
产品A001: y = -6.628 + 0.458 * x
产品A002: y = -8.844 + 0.628 * x
产品B003: y = 1.053 + 0.198 * x

4.4 将图表保存到Excel文件中
import os
import xlsxwriter

# 1、计算之前一共生成了多少个图形
num = len(fig_li)

# 2、建立收集所有图表的文件夹和图片文件的名字
file_dir = "d:/test/chart"
fig_path_li = []
for i in range(num):
    file_name = "chart" + str(i+1) + ".png"
    
# 3、构建图表保存的文件路径
    fig_path = os.path.join(file_dir, file_name)
    fig_path_li.append(fig_path)

# 4、将所有图表从.jpg转换为.png文件并保存
    fig_li[i].savefig(fig_path)

# 5、建立用于保存分析图表的Excel文件
file_chart = "d:/test/Summary/test_chart.xlsx"
writer = pd.ExcelWriter(file_chart, engine="xlsxwriter")
sheet = writer.book.add_worksheet(name="chart")
i = 0                                           # 用于计算每张图写入的行距离(每张图是25行的距离)
for path in fig_path_li:
    sheet.insert_image(i, 0, path)     # 往Excel的表格中按指定的位置写入图片
    i += 25
    
# 6、检查文件结果
writer.close()
print("执行完毕,请检查结果!")

打开Excel文件(test_chart.xlsx)就得到这些图表
在这里插入图片描述

任务完成了!

结束语
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值