import csv import random import datetime fn = 'data.csv' with open(fn, 'w') as fp: #创建csv文件写入对象 wr = csv.writer(fp) #写入表头 wr.writerow(['日期', '销量']) startDate = datetime.date(2017, 1, 1) #生成365个模拟数据,可以根据需要进行调整 for i in range(365): amount = 300 + i*5 + random.randrange(100) wr.writerow([str(startDate), amount]) startDate = startDate + datetime.timedelta(days=1) 上面是生成数据的代码,下面是任务: 1)使用pandas读取文件data.csv中的数据,创建DataFrame对象,并删除其中所有缺失值; 2)使用matplotlib生成折线图,反应该饭店每天的营业额情况,并把图形保存为本地文件first.jpg; 3)按月份进行统计,使用matplotlib绘制柱状图显示每个月份的营业额,并把图形保存为本地文件second.jpg; 4)按月份进行统计,找出相邻两个月最大涨幅,并把涨幅最大的月份写入maxMonth.txt; 5)按季度统计该饭店2017年的营业额数据,使用matplotlib生成饼状图显示2017年4个季度的营业额分布情况,并把图形保存为本地文件third.jpg。
时间: 2024-04-15 17:24:22 浏览: 74
使用python的pandas库读取csv文件保存至mysql数据库
import pandas as pd
import matplotlib.pyplot as plt
# 1. 使用pandas读取文件data.csv中的数据,创建DataFrame对象,并删除其中所有缺失值
df = pd.read_csv('data.csv')
df.dropna(inplace=True)
# 2. 使用matplotlib生成折线图,反应该饭店每天的营业额情况,并保存为本地文件first.jpg
plt.plot(df['日期'], df['销量'])
plt.xlabel('日期')
plt.ylabel('销量')
plt.savefig('first.jpg')
plt.close()
# 3. 按月份进行统计,使用matplotlib绘制柱状图显示每个月份的营业额,并保存为本地文件second.jpg
df['日期'] = pd.to_datetime(df['日期'])
df['月份'] = df['日期'].dt.month
monthly_sales = df.groupby('月份')['销量'].sum()
monthly_sales.plot(kind='bar')
plt.xlabel('月份')
plt.ylabel('销量')
plt.savefig('second.jpg')
plt.close()
# 4. 按月份进行统计,找出相邻两个月最大涨幅,并将涨幅最大的月份写入maxMonth.txt
monthly_sales_diff = monthly_sales.diff()
max_increase = monthly_sales_diff[monthly_sales_diff == monthly_sales_diff.max()].index[0]
with open('maxMonth.txt', 'w') as f:
f.write(str(max_increase))
# 5. 按季度统计该饭店2017年的营业额数据,使用matplotlib生成饼状图显示2017年4个季度的营业额分布情况,并保存为本地文件third.jpg
df['季度'] = df['日期'].dt.quarter
quarterly_sales = df.groupby('季度')['销量'].sum()
quarterly_sales.plot(kind='pie', autopct='%1.1f%%')
plt.ylabel('')
plt.savefig('third.jpg')
plt.close()
阅读全文