课件程序
1、提交课件pandas操作示例截图
2、编写程序,先在当前文件夹中生成某书店2019年度每日的营业额模拟数据文件data.csv。然后完成下面的任务:
(1)使用pandas读取文件data.csv中的数据,创建DataFrame对象,并删除其中所有缺失值;
(2)使用matplotlib生成折线图,反应该书店每天的营业额情况,并把图形保存为本地文件first.jpg;
(3)按月份进行统计,使用matplotlib绘制柱状图显示每个月份的营业额,并把图形保存为本地文件second.jpg;
(4)按月份进行统计,找出相邻两个月最大涨幅,并把涨幅最大的月份写入maxMonth.txt;
(5)按季度统计该书店2019年的营业额数据,使用matplotlib生成饼状图显示2019年4个季度的营业额分布情况,并把图形保存为本地文件third.jpg。
import csv
import random
import datetime
fn='data.csv'
with open(fn,'w',newline='')as fp:
wr=csv.writer(fp) #一行一行写入csv文件
wr.writerow(['日期','营业额']) #写入表头
startDate=datetime.date(2019,1,1) #生成模拟时间
for i in range(365):#生成365个模拟数据,写入csv
amount=300+5*i+random.randrange(100)
wr.writerow([str(startDate),amount])
startDate=startDate+datetime.timedelta(days=1)#下一天
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.sans-serif']=['SimHei'] #pyplot中文显示
df=pd.read_csv('data.csv',encoding='cp936')
df=df.dropna()#读取数据,丢弃缺失值
#生成天营业额折线图
plt.figure()
df.plot(x='日期')
plt.savefig(r'E:\first.jpg')
#生成月营业额柱状图
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(r'E:\second.jpg')
#查找涨幅最大月份,写入文件
plt.figure()
df2=df1.drop('month',axis=1).diff()#在销量列中每月跟上月相减的差集
m=df2['营业额'].nlargest(1).keys()[0]#查找销量列中差集最大的一个数所对应的索引
with open(r'E:\maxMonth.txt','w')as fp:
fp.write(df1.loc[m,'month'])#索引m对应的month
#生成季度营业额饼状图
plt.figure()
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(r'E:\third.jpg')#路径自己选择可不用更改