pandas中有四列,分别是区域,手次,委托年月,委托金额,回收率,用matplotlib画图,横坐标为委托日期,左纵坐标轴为委托金额,右纵坐标轴为回收率,每个区域划一行图,每行画四个,四个之间手次不同
时间: 2024-10-10 21:13:00 浏览: 41
Python使用matplotlib和pandas实现的画图操作【经典示例】
在Pandas中处理这样的数据并使用Matplotlib创建图形,首先你需要对数据进行整理和清洗,然后使用`groupby`功能按区域分组,并在同一图上绘制每个区域的数据。可以按照以下步骤操作:
1. 导入所需的库:
```python
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
```
2. 加载和预处理数据:
```python
# 假设df是你的DataFrame
df['委托日期'] = pd.to_datetime(df['委托年月']) # 将字符串转换为日期格式
# 确保‘委托日期’列是日期类型
```
3. 按照区域、手次和委托日期分组:
```python
grouped_data = df.groupby(['区域', '手次', '委托日期']).agg({'委托金额': 'sum', '回收率': 'mean'})
```
4. 创建子图并绘制折线:
```python
fig, axs = plt.subplots(nrows=len(set(df['区域'])), ncols=2, figsize=(10, len(set(df['区域'])) * 5), sharex=True)
axs = axs.ravel() # 获取所有轴
for i, (region, sub_df) in enumerate(grouped_data.groupby('区域')):
ax = axs[i]
# 绘制委托金额折线
ax.plot(sub_df['委托日期'], sub_df['委托金额'], label='委托金额')
ax.set_ylabel('委托金额', color='blue') # 设置左侧y轴标签
ax.tick_params(axis='y', labelcolor='blue')
# 绘制回收率折线,使用right参数共享x轴
ax_twin = ax.twinx()
ax_twin.plot(sub_df['委托日期'], sub_df['回收率'], color='green', label='回收率')
ax_twin.set_ylabel('回收率', color='green') # 设置右侧y轴标签
ax_twin.tick_params(axis='y', labelcolor='green')
# 格式化x轴
ax.xaxis_date()
formatter = DateFormatter('%Y-%m-%d') # 使用特定日期格式
ax.xaxis.set_major_formatter(formatter)
ax.set_title(region) # 设置每个区域标题
ax.legend()
plt.tight_layout() # 调整子图间距
plt.show()
```
在这个例子中,我们假设你的DataFrame已经按照需要的格式排列好。运行上述代码后,你会得到一个由各区域数据组成的图表,每个区域占一行,左侧显示委托金额,右侧显示回收率。
阅读全文