问题:现有某饭店营业额模拟数据文件data.csv,请完成下 列任务: ① 使用pandas读取文件data.csv中的数据,创建DataFrame对象,并删除其 中所有缺失值。 ② 使用matplotlib生成折线图,反映该饭店每天的营业额情况,并把图形保存 为本地文件first.jpg。(dpi要求600) ③ 按月份进行统计,使用matplotlib绘制柱状图显示每个月份的营业额,并把 图形保存为本地文件second.jpg。(dpi要求600) ④ 按月份进行统计,找出相邻两个月最大涨幅,并把涨幅最大的月份写入文件 maxMonth.txt 。 ⑤ 按季度统计该饭店2017年的营业额数据,使用matplotlib 生成饼状图显示 2017年4个季度的营业额分布情况,并把图形保存为本地文件third.jpg。 (dpi要求600
时间: 2024-03-17 07:45:28 浏览: 156
好的,可以使用以下代码实现:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 任务1:读取文件并删除缺失值
data = pd.read_csv('data.csv')
data.dropna(inplace=True)
# 任务2:生成每天营业额折线图并保存
daily_sales = data.groupby('date')['sales'].sum()
fig, ax = plt.subplots(figsize=(12, 6), dpi=600)
ax.plot(daily_sales.index, daily_sales.values)
ax.set_title('每天营业额情况')
ax.set_xlabel('日期')
ax.set_ylabel('营业额')
plt.savefig('first.jpg')
# 任务3:生成每月营业额柱状图并保存
monthly_sales = data.groupby(pd.Grouper(key='date', freq='M'))['sales'].sum()
fig, ax = plt.subplots(figsize=(12, 6), dpi=600)
ax.bar(monthly_sales.index.strftime('%Y-%m'), monthly_sales.values)
ax.set_title('每月营业额情况')
ax.set_xlabel('月份')
ax.set_ylabel('营业额')
plt.savefig('second.jpg')
# 任务4:找出相邻两个月最大涨幅并写入文件
monthly_sales_pct = monthly_sales.pct_change()
max_increase = monthly_sales_pct[monthly_sales_pct == monthly_sales_pct.max()].index.strftime('%Y-%m')[0]
with open('maxMonth.txt', 'w') as f:
f.write(max_increase)
# 任务5:生成2017年营业额饼状图并保存
yearly_sales = data.groupby(pd.Grouper(key='date', freq='Y'))['sales'].sum().loc['2017']
quarterly_sales = yearly_sales.groupby(pd.Grouper(freq='Q')).sum()
fig, ax = plt.subplots(figsize=(12, 6), dpi=600)
ax.pie(quarterly_sales.values, labels=['Q1', 'Q2', 'Q3', 'Q4'], autopct='%1.1f%%')
ax.set_title('2017年季度营业额分布情况')
plt.savefig('third.jpg')
```
以上代码中,我们首先读取了一个包含日期和营业额的CSV文件,使用pandas删除了所有缺失值。然后分别完成了任务2到任务5。任务2生成了每天营业额的折线图并保存到本地,任务3生成了每月营业额的柱状图并保存到本地,任务4找出了相邻两个月最大涨幅并写入文件,任务5生成了2017年季度营业额的饼状图并保存到本地。为了保证图形的清晰度,我们设置了dpi为600。您可以根据需要修改图形大小、标题和坐标轴标签。
阅读全文