Excel数据分析

1、Excel数据读取,数据的预处理(处理缺失等)

2、数据的排序等绘制图形前的处理

3、绘图的美好,包括字体大小,配色等

4、数据打印核对

具体代码如下:

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import seaborn as sns

# 指定字体路径
font = FontProperties(fname='/Library/Fonts/SimHei.ttf')

# 读取Excel数据
df = pd.read_excel('/Users/runyabaobei/Desktop/11.xlsx', sheet_name=0)

# 将处理人列的缺失值替换为 "NA"
df['处理人'].fillna("NA", inplace=True)

# 将预估工时列的缺失值替换为 0
df['预估工时'].fillna(0, inplace=True)

# 按照“处理人”分组,然后对“预估工时”列进行求和
hours_data = df.groupby('处理人')['预估工时'].sum()

# 按照“处理人”列的值进行计数并由大到小排序
count_data = df['处理人'].value_counts().sort_values(ascending=False)

# 根据先前排序的 count_data 的索引处理人名称排序 hours_data
hours_data = hours_data.loc[count_data.index]

# 计算处理人的效率并按降序排序
efficiency_data = hours_data / count_data
efficiency_data.sort_values(ascending=False, inplace=True)

# 创建配色方案
color_count = sns.color_palette(["#609ec9"]) * len(count_data)
color_hours = sns.color_palette(["#f9b37e"]) * len(hours_data)
color_palette3 = sns.color_palette("viridis", len(efficiency_data))

sns.set(style="whitegrid")


# 创建第一张图
fig1, ax1 = plt.subplots(figsize=(12, 7))


# 在 ax1 上绘制计数和预估工时的柱状图
count_data.plot(kind='bar', ax=ax1, color=color_count, width=0.4, alpha=0.8,legend=False)
ax1_twin = ax1.twinx()

hours_data.plot(kind='bar', ax=ax1_twin, color=color_hours, width=0.3, alpha=0.8, position=0,legend=False)

# 设置 ax1 的标题和label
ax1.set_title('处理人计数与工时数柱状图', fontproperties=font, fontsize=18)
ax1.set_xlabel('处理人',fontproperties=font)
ax1.set_ylabel('计数',fontproperties=font)
ax1_twin.set_ylabel('工时数',fontproperties=font)
ax1.grid(False)

ax1.legend(['计数'], loc='upper left', prop=font)
ax1_twin.legend(['工时'], loc='upper right', prop=font)
ax1.set_xticklabels(ax1.get_xticklabels(), fontproperties=font, rotation=45, ha='right')

# 创建第二张图
fig2, ax2 = plt.subplots(figsize=(12, 7))

# 在 ax2 上绘制效率的柱状图
bars3 = efficiency_data.plot(kind='bar', ax=ax2, color=color_palette3, alpha=0.8)

# 设置 ax2 的标题和label
ax2.set_title('处理人效率柱状图', fontproperties=font, fontsize=20, pad=20)
ax2.set_xlabel('处理人', fontproperties=font)
ax2.set_ylabel('效率', fontproperties=font)

# 为ax2的xtick添加中文字体,并进行适当的旋转
ax2.set_xticklabels(ax2.get_xticklabels(), fontproperties=font, rotation=45, ha='right')

# 为每个柱状图添加数据标签展示
for bar in bars3.patches:
    ax2.text(bar.get_x() + bar.get_width() / 2, bar.get_height() + 0.01, 
             round(bar.get_height(), 2), ha='center', va='bottom', 
             fontsize=8, color='black', alpha=0.8)

# 调整图表边缘和布局
plt.tight_layout()


print('\n每个处理人的计数:')
print(count_data)

print('\n每个处理人的预估工时(小时):')
print(hours_data)

print('\n每个处理人的效率(预估工时/处理人计数):')
print(efficiency_data)

图形绘制结果如下:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值