环境声明:
如果没有的预先:【pip install *******】
或
【ALT】+【回车】
import csv import numpy as np import matplotlib.pyplot as plt
呈现效果:
GetRandomInfo.py:
import random def getClassName(): randomClass = ("天字一号", "地字一号", "玄字一号", "黄字一号", "东宫正品") return randomClass[int(random.random() * len(randomClass))] def getName(): """随机姓名""" randomNames = ( "华", "韦", "覃", "琴", "湘", "", "钱", "彭", "邓" "张", "王", "里", "赵", "赵", "李", "春", "梦", "星", "二", "宿", "管", "土", "生", "风", "胡") return str.format("{0}{1}{2}", randomNames[int(random.random() * len(randomNames))], randomNames[int(random.random() * len(randomNames))], randomNames[int(random.random() * len(randomNames))]) def getSex(): """随机性别""" sex = ("男", "男", "女") return sex[int(random.random() * 3)] def getSubJectName(): """随机科目""" randomClass = ("java", "python", "C#", "php", "go") return randomClass[int(random.random() * len(randomClass))] def getResults(): """随机成绩""" ra = random.randint(0, 10) if ra == 1: return int(random.random() * 21)+80 return int(random.random() * 21)+70 def GetRandomInfo(): """获取500条随机信息""" data = [] for index in range(1, 501): strInfo = str.format("{0} {1} {2} {3} {4} {5}", index, getClassName(), getName(), getSex(), getSubJectName(), getResults()) data.append(strInfo.split(",")) return data
WriteInfo.py
import csv import GetRandomInfo # 文件获取 file = open('info.csv', 'w+', encoding="utf-8") # 写入操作 writer = csv.writer(file) # 写入多行记录 writer.writerows(GetRandomInfo.GetRandomInfo()) # 刷新文件 file.flush() # 关闭文件流 file.close()
ReadInfo.py
import csv import numpy as np import matplotlib.pyplot as plt # 文件获取 file = open('info.csv', 'r', encoding="utf-8") # 内容读取 list1 = csv.reader(file) # 记录每科成绩 boyJavaCount = 0 boyJavaResult = 0 girlJavaCount = 0 girlJavaResult = 0 boyPythonCount = 0 boyPythonResult = 0 girlPythonCount = 0 girlPythonResult = 0 boyC_Count = 0 boyC_Result = 0 girlC_Count = 0 girlC_Result = 0 boyPHPCount = 0 boyPHPResult = 0 girlPHPCount = 0 girlPHPResult = 0 boyGoCount = 0 boyGoResult = 0 girlGoCount = 0 girlGoResult = 0 # 信息遍历 for line in list1: if len(line) != 0: for row in line: arr = row.split(" ") if arr[3] == "男": if arr[4] == "java": boyJavaCount += 1 boyJavaResult += int(arr[5]) elif arr[4] == "python": boyPythonCount += 1 boyPythonResult += int(arr[5]) elif arr[4] == "C#": boyC_Count += 1 boyC_Result += int(arr[5]) elif arr[4] == "php": boyPHPCount += 1 boyPHPResult += int(arr[5]) elif arr[4] == "go": boyGoCount += 1 boyGoResult += int(arr[5]) else: if arr[4] == "java": girlJavaCount += 1 girlJavaResult += int(arr[5]) elif arr[4] == "python": girlPythonCount += 1 girlPythonResult += int(arr[5]) elif arr[4] == "C#": girlC_Count += 1 girlC_Result += int(arr[5]) elif arr[4] == "php": girlPHPCount += 1 girlPHPResult += int(arr[5]) elif arr[4] == "go": girlGoCount += 1 girlGoResult += int(arr[5]) # 绘图 # 用于累计宽度坐标 x1 = np.arange(5) # X轴信息 x = ['Java', 'Python', 'C#', 'PHP', 'Go'] # 男孩各科目平均值信息 boy = [boyJavaResult / boyJavaCount, boyPythonResult / boyPythonCount, boyC_Result / boyC_Count, boyPHPResult / boyPHPCount, boyGoResult / boyGoCount] # 女孩各科目平均值信息 girl = [girlJavaResult / girlJavaCount, girlPythonResult / girlPythonCount, girlC_Result / girlC_Count, girlPHPResult / girlPHPCount, girlGoResult / girlGoCount] # 宽度 bar_width = 0.25 # 写入男孩信息 plt.bar(x, boy, bar_width) # 写入女孩信息 plt.bar(x1 + bar_width, girl, bar_width) # 一些样式 plt.legend(labels=["boy", "girl"], loc="upper left") # 标题 plt.title("results") # 展示 plt.show()