有两个excel数据,分别是两条生产线的数据M101.excel和M102.excel,现根据各月的产品总数(包含不合格产品),以月份为横坐标,绘制两条生产线的堆叠柱状图。使用python数据分析解答
时间: 2024-12-04 14:22:59 浏览: 10
在Python中,我们可以使用pandas库读取Excel文件,并利用matplotlib库来创建堆叠柱状图。以下是简单的步骤:
1. **导入所需库**:
```python
import pandas as pd
import matplotlib.pyplot as plt
```
2. **读取Excel文件**:
```python
# 假设文件位于当前工作目录下
data1 = pd.read_excel('M101.xlsx', sheet_name='Sheet1') # 如果只有一个sheet,直接传文件名
data2 = pd.read_excel('M102.xlsx', sheet_name='Sheet1')
# 检查是否成功加载
print(data1.head(), data2.head())
```
3. **处理数据**:
确认'月份'列是日期类型,如果不是,可以使用`pd.to_datetime`将其转换。然后计算每月的产品总数(包括不合格产品):
```python
data1['月份'] = pd.to_datetime(data1['月份'])
data2['月份'] = pd.to_datetime(data2['月份'])
data1['合格产品数'] = data1['合格产品'] + data1['不合格产品']
data2['合格产品数'] = data2['合格产品'] + data2['不合格产品']
```
4. **合并数据并创建堆叠柱状图**:
```python
all_data = pd.concat([data1, data2], ignore_index=True) # 合并两份数据
all_data.set_index('月份', inplace=True)
plt.figure(figsize=(10,6))
plt.bar(all_data.index, all_data[['合格产品数']], label=['生产线1', '生产线2'], stacked=True)
plt.xlabel('月份')
plt.ylabel('产品总数')
plt.title('生产线产品总数堆叠柱状图')
plt.legend()
plt.show()
```
5. **相关问题**:
- 如何处理Excel文件不存在的情况?
- 如何根据实际需要只展示部分月份的数据?
- 创建图表时如何调整颜色和标签样式?
阅读全文