“Python 语言程序设计实验2023春季”实验报告

实验报告八 数据分析与可视化(6月9日23:00截止)

实验八 数据分析与可视化

一、实验学时:2学时

二、实验目的

熟悉 CSV 和 TXT 文件操作。 熟练安装扩展库 numpy、pandas、matplotlib。 熟悉使用扩展库 pandas 进行数据分析的基本操作。 熟悉使用扩展库 matplotlib 进行数据可视化的基本操作。 #三、实验内容 1.使用以下代码,在当前文件夹中生成某商场营业额模拟数据文件 data.csv。数据文件有两列,分别为“日期”和“营业额”。日期从2022-1-1开始,共365天,365条营业数据。

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(2022, 1, 1) 
# 生成 365 个模拟数据 
for i in range(365): 
# 生成一个模拟数据,写入 csv 文件 
amount = 500 + i*5 + random.randrange(100) 
wr.writerow([str(startDate), amount]) 
# 下一天 
startDate = startDate + datetime.timedelta(days=1)
copy

依据以上生成的模拟数据文件,完成下面的任务:

(1)使用pandas读取文件data.csv中的数据,创建DataFrame对象,并删除其中所有缺失值。

df = pd.read_csv('data.csv',encoding="gbk").dropna()
copy

(2)绘制折线图,显示该商场每天的营业额情况,并把图形保存为本地文件 Te.jpg;

plt.plot(df['日期'], df['营业额'])
plt.savefig('Te.jpg')
plt.show()
copy

(3)绘制柱状图,显示每个月份的营业额,并把图形保存为本地文件 Ye.jpg;

df['月份'] = pd.to_datetime(df['日期']).dt.month
monthly_sales = df.groupby('月份')['营业额'].sum()
plt.bar(monthly_sales.index, monthly_sales.values)
plt.savefig('Ye.jpg')
plt.show()
copy

(4)按月份进行统计,找出相邻两个月最大涨幅,并把涨幅最大的月份写入文件maxMonth.txt;

maxMonth.txt
df['上个月销售额'] = df['营业额'].shift(1)
df['月涨幅'] = (df['营业额'] - df['上个月销售额']) / df['上个月销售额']
df.dropna(inplace=True)

max_increase = df.sort_values('月涨幅', ascending=False).iloc[0]['日期'].split('-')[1]
with open('maxMonth.txt', 'w') as f:
    f.write(max_increase)
copy

(5)按季度统计该商场 2022年的营业额数据,绘制饼状图显示2022年4个季度的营业额分布情况,并把图形保存为本地文件Je.jpg。

df['季度'] = pd.to_datetime(df['日期']).dt.quarter
quarterly_sales = df.groupby('季度')['营业额'].sum()
plt.pie(quarterly_sales.values, labels=quarterly_sales.index, autopct='%1.1f%%')
plt.savefig('Je.jpg')
plt.show()
copy

四、实验结果

(在此部分列出保持缩进格式的程序代码及运行结果截图,请注意保持格式统一,截图清晰,大小合适)

图片描述

图片描述

五、实验小结

(包括问题和解决办法、心得体会、意见与建议等)

最新评论
暂无评论~