运行给定的模拟数据生成程序,在当前文件夹下生成饭店营业额模拟数据文件data.csv。
import csv
import random
import datetime
import pandas as pd
import matplotlib.pyplot as plt
fn = 'data.csv'
# 打开文件fn,写入如下的语句执行结果到fp
with open(fn, 'w', encoding='utf-8') as fp:
# 创建csv文件并写入对象
wr = csv.writer(fp, lineterminator='n')
# 写入表头
wr.writerow(['日期', '销量'])
# 生成模拟数据
startDate = datetime.date(2020, 2, 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)
效果图:
使用pandas读取文件data.csv中的数据,创建DataFrame对象,并删除其中所有缺失值删除缺失值。
import pandas as pd
import matplotlib,pyplot as plt
df = pd.read csv('data.csv', encoding='utf-8')
df =df.dropna()
使用matplotlib生成拆线图,反映该饭店每天的营业额情况,并把图形保存为本地文件first.jpg。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv',encoding='utf-8')
df = df.dropna()
df['日期'] = pd.Series(range(30))
plt.figure()
df.plot(x='日期', y='销量')
plt.savefig('first.jpg')
效果图:
按月份进行统计,使用matplotlib绘制柱状图显示每个月份的营业额,并把图形保存为本地文件second.jpg。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv', encoding='utf-8')
df = df.dropna()
plt.figure()
df1 = df[:]
df1['month']=df1['日期'].map(lambda x:x[:x.rindex('-')])
df1 = df1.groupby(by='month',as_index=False).sum()
df1.plot(x='month',kind='bar')
plt.savefig('second.jpg')
效果图:
按月份进行统计,找出相邻两个月最大涨幅,并把涨幅最大的月份写入文件maxMonth.txt。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv', encoding='utf-8')
df = df.dropna()
plt.figure()
df1 = df[:]
df1['month']=df1['日期'].map(lambda x:x[:x.rindex('-')])
df1 = df1.groupby(by='month',as_index=False).sum()
df2 = df1.drop('month',axis=1).diff()
m = df2['销量'].nlargest(1).keys()[0]
with open('maxMonth.txt','w') as fp:
fp.write(df1.loc[m,'month'])
效果图:
按季度统计该饭店某年的营业额数据,使用matplotlib生成饼状图显示当年4个季度的营业额分布情况,并把图形保存为本地文件third.jpg。
import pandas as pd
import matplotlib.pyplot as plt
plt.figure()
df1 = df[:]
df1['month']=df1['日期'].map(lambda x:x[:x.rindex('-')])
df1 = df1.groupby(by='month',as_index=False).sum()
one = df1[:3]['销量'].sum()
two = df1[3:6]['销量'].sum()
three = df1[6:9]['销量'].sum()
four = df1[9:12]['销量'].sum()
plt.pie([one,two,three,four],labels=['one','two','three','four'])
plt.savefig('third.jpg')
效果图:



