实验:Python图形图像处理


1. 准备一张照片,编写Python程序将该照片进行图像处理,分别输出以下效果的图片:(a)灰度图;(b)轮廓图;

(c)变换RGB通道图;(d)旋转45度图。

2. 假设当前文件夹中data.csv文件中存放了2020年某饭店营业额,第一列为日期(如2020-02-03),第二列为每天交易额(如3560),文件中第一行为表头,其余行为实

际数据。编写程序,完成下面的任务,要求对结果图形进行适当的美化:

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

(2)绘制第1个月的营业额折线图,反映饭店每天的营业额情况,并把图形保存为本地文件day.jpg;

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

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

 1. 准备一张照片编写Python程序将该照片进行图像处理,分别输出以下效果的图片:(a)灰度图;(b)轮廓图;
# c)变换RGB通道图;(d)旋转45度图。

from PIL import Image
from PIL import ImageFilter
im = Image.open('1.jpg')
gray = im.convert('L')
rpg = im.convert("RGB")
xz = im.rotate(45)
om = im.filter(ImageFilter.CONTOUR)
gray.save('a.jpg')
om.save('b.jpg')
rpg.save('c.jpg')
xz.save('d.jpg')


# 2. 假设当前文件夹中data.csv文件中存放了2020年某饭店营业额,第一列为日期(如2020-02-03),第二列为每天交易额(如3560),文件中第一行为表头,其余行为实
# 际数据。编写程序,完成下面的任务,要求对结果图形进行适当的美化:
#
1)使用pandas读取文件data.csv中的数据,创建DataFrame对象,并删除其中所有的缺失值;
#
2)绘制第1个月的营业额折线图,反映饭店每天的营业额情况,并把图形保存为本地文件day.jpg
# 3)按月份进行统计,绘制柱状图显示每个月份的营业额,并把图形保存为本地文件month.jpg;
#
4)按季度统计该饭店2020年的营业额数据,绘制饼状图显示4个季度的营业额分布情况,并把图形保存为本地文件quarter.jpg

import matplotlib
import pandas
import matplotlib.pyplot as plt

matplotlib.rcParams['font.sans-serif'] = ['SimHei']  # pyplot中文显示
df = pandas.read_csv("data.csv", engine='python')
df['日期'] = pandas.to_datetime(df['日期'])
df[['交易额']] = df[['交易额']].astype(float)  # 将交易额转换为float类型
df = df.dropna()  # 去除缺失行


plt.figure()
df1 = df.head(31)  # 取第一个月
df1.plot(x='日期')  # 画图,以日期为x轴
plt.savefig('day.jpg')


plt.figure()
df2 = df
df2['月份'] = df2['日期'].map(lambda x: x.month)  # 提取出月份
df2 = df2.groupby(by='月份', as_index=False).sum()  # as_inside=False不把month作为新的index,分组求和
df2.plot(x='月份', kind='bar', y='交易额')
plt.savefig('month.jpg')


plt.figure()
one = df2[:3]['交易额'].sum()
two = df2[3:6]['交易额'].sum()
three = df2[6:9]['交易额'].sum()
four = df2[9:12]['交易额'].sum()
plt.pie([one, two, three, four], labels=['第一季度', '第二季度', '第三季度', '第四季度'])
plt.savefig('quarter.jpg')