利用csv、random和datetime创建某个商店2023年营业额模拟数据文件data.csv,此文件中包含两列数据(日期date、销量amount)。模拟数据随机生成共365条,数据日期date起于2023-01-01止于2023-12-31,数据销量amount的取值范围为[300,600]之间。并完成以下工作: (1)利用pandas读取文件data.csv中数据,创建1个行列索引的数据结构DataFrame,并删除其中的所有缺失值。 (2)利用matplotlib生成折线图,按月份进行统计,显示商店每月的销量情况,并把图形保存为本地文件month_amount_bar.png。同时,找出相邻两个月最大涨幅,并把涨幅最大的月份写入到文件maxMonth.txt中
时间: 2023-07-15 14:15:52 浏览: 51
以下是实现该任务的Python代码:
```python
import pandas as pd
import random
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
# 生成数据并写入CSV文件
start_date = datetime.strptime("2023-01-01", "%Y-%m-%d")
end_date = datetime.strptime("2023-12-31", "%Y-%m-%d")
delta = end_date - start_date
date_list = [start_date + timedelta(days=i) for i in range(delta.days + 1)]
data = {"date": [], "amount": []}
for date in date_list:
data["date"].append(date.strftime("%Y-%m-%d"))
data["amount"].append(random.randint(300, 600))
df = pd.DataFrame(data)
df.to_csv("data.csv", index=False)
# 读取CSV文件并删除缺失值
df = pd.read_csv("data.csv")
df.dropna(inplace=True)
# 按月份统计销量并绘制折线图
df["date"] = pd.to_datetime(df["date"])
df["month"] = df["date"].dt.month
monthly_sales = df.groupby("month")["amount"].sum()
plt.plot(monthly_sales.index, monthly_sales.values)
plt.xlabel("Month")
plt.ylabel("Sales")
plt.title("Monthly Sales in 2023")
plt.savefig("month_amount_bar.png")
# 计算相邻两个月的涨幅并找出最大涨幅的月份
max_increase = 0
max_month = None
for i in range(1, len(monthly_sales)):
increase = monthly_sales[i] - monthly_sales[i-1]
if increase > max_increase:
max_increase = increase
max_month = monthly_sales.index[i]
if max_month is not None:
with open("maxMonth.txt", "w") as f:
f.write(str(max_month))
```
该代码首先生成随机数据并写入CSV文件,然后使用pandas读取文件并删除缺失值。接着,它按月份统计销量并绘制折线图,并将图形保存为本地文件。最后,它计算相邻两个月的涨幅并找出最大涨幅的月份,将该月份写入到文件maxMonth.txt中。