当前位置:   article > 正文

python大作业代码及文档,python期末大作业题目

python大作业代码及文档

大家好,给大家分享一下python大作业代码及文档,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

先进行一些库的引入和常规操作

  1. # 数据分析三兄弟
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import pandas as pd
  5. # 分别是视频、音频处理的库
  6. import cv2
  7. from moviepy.editor import *
  8. # 中文编码
  9. plt.rcParams['font.sans-serif'] = ['YouYuan']
  10. plt.rcParams['axes.unicode_minus'] = False
  11. # 读取文件,简单处理
  12. data = pd.read_excel('国家地铁里程历程.xlsx')
  13. data = data.rename(columns={'Unnamed:0': '年份'})

1.每一列最前面的正整数之前全部设为0

2.每一列空格部分都使用前后两个值进行“线性插值”填空,以月为单位进行插值

  1. # 建立一个标题与原表相同的空表
  2. df = pd.DataFrame(columns=data.columns)
  3. # 处理这个空表,插入一行原来data的行,再插入11行空行
  4. for i in range(0, 123):
  5. df = pd.concat([df, data.loc[i:i, :]])
  6. for j in range(0, 11):
  7. df = pd.concat([df, pd.DataFrame([{"": np.nan}], columns=data.columns)], ignore_index=True)
  8. # 加上最后一行
  9. df = pd.concat([df, data.loc[123:123, :]])
  10. df = df.set_index('Unnamed: 0')
  11. df = df.interpolate()
  12. # 取出1900年后的
  13. df = df.loc[1900:]
  14. df = df.fillna(0)
  15. df = df.reset_index()
  16. # 取出年作为后面要用的标签
  17. nian = df.iloc[:, 0]
  18. nian = nian.fillna(method='ffill')
  19. # 取出数据部分
  20. df = df.iloc[:, 1:]

  1. 每幅图显示里程数最多的10个国家,当不到10个时,全部绘制。
  2. 绘图时里程数大的在上放,小的在下方Python解释器的安装步骤
  3. 每个国家对应的颜色自行定义,且保持不变,其中中国须为红色。
  4. 图中每条bar须列明国名。
  5. 图中每条bar须标注数值,数值保留小数点后2位有效数字。
  1. # 将地区和颜色对应
  2. area_list = df.columns
  3. color_list = ['#DDDDDD', '#FF44AA', '#FF5511', '#886600', '#FFFF33', '#77FF00', '#77FFEE', '#003C9D', '#D28EFF',
  4. '#770077', '#FF0000']
  5. colors = dict(zip(area_list, color_list))
  6. # 绘制图表
  7. plt.rcParams['axes.facecolor'] = '#FFE4E1'
  8. plt.figure(figsize=(15, 8), dpi=80, facecolor='#FFE4E1')
  9. for i in range(0, len(df)):
  10. # 画表
  11. plt.xlabel("公里数", fontsize=25)
  12. plt.ylabel("国家", fontsize=25)
  13. plt.tick_params(labelsize=25)
  14. plt.title("全球各国铁路里程", fontsize=30)
  15. ax = plt.subplot()
  16. ax.spines['top'].set_visible(False)
  17. ax.spines['right'].set_visible(False)
  18. # 排序
  19. df = df.sort_values(by=i, axis=1)
  20. # 保留前10个
  21. x = df.columns[1:]
  22. y = df.iloc[i, 1:]
  23. plt.barh(x, y, color=[colors[t] for t in x])
  24. ax = plt.gca()
  25. #添加标签和水印
  26. plt.text(0.8, 0.1, s=int(nian[i]), transform=ax.transAxes, fontsize=50)
  27. plt.text(0.5, 0.5, s='水印', transform=ax.transAxes, fontsize=50, alpha=0.4)
  28. for j in range(0, len(x)):
  29. plt.text(y[j] + 0.5, x[j], s=str('{:.2f}KM'.format(y[j])), fontsize=20)
  30. # plt.show()
  31. # 保存
  32. plt.savefig(r"img\t{}.jpg".format(i))
  33. plt.clf()

 将多幅图片组织为mp4格式视频,帧率设置为每秒12帧。

  1. # 读取中文路径
  2. # 前面不能出现中文路径,否则需要加上这段
  3. def cv_imread(filePath):
  4. cv_img = cv2.imdecode(np.fromfile(filePath, dtype=np.uint8), -1)
  5. return cv_img
  6. # 视频合成
  7. size = (1200, 640)
  8. videowrite = cv2.VideoWriter('test.mp4', -1, 12, size) # 12表示帧率
  9. img_array = []
  10. for filename in [r"img/t{}.jpg".format(i) for i in range(1453)]:
  11. img = cv_imread(filename)
  12. if img is None:
  13. print(filename + " is not found.")
  14. continue
  15. img_array.append(img)
  16. for i in range(1453):
  17. videowrite.write(img_array[i])
  18. videowrite.release()
  19. print('over')

加一个bgm

  1. # 加bgm
  2. video_clip = VideoFileClip('test.mp4')
  3. audio_clip = AudioFileClip('china—x.mp3')
  4. audio = afx.audio_loop(audio_clip, duration=video_clip.duration)
  5. final_video = video_clip.set_audio(audio)
  6. final_video.write_videofile('china—x.mp4')

文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树首页概览405476 人正在系统学习中
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/318899
推荐阅读
相关标签
  

闽ICP备14008679号