环境声明: 如果没有的预先:【pip install *******】 或 【ALT】+【回车】 import csv import numpy as np import matplotlib.pyplot as plt 呈现效果: GetRandomInfo.py: import random def getClassName (): randomClass = (
环境声明:
如果没有的预先:【pip install *******】
或
【ALT】+【回车】
import csvimport numpy as np
import matplotlib.pyplot as plt
呈现效果:
GetRandomInfo.py:
import randomdef 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 csvimport GetRandomInfo
# 文件获取
file = open('info.csv', 'w+', encoding="utf-8")
# 写入操作
writer = csv.writer(file)
# 写入多行记录
writer.writerows(GetRandomInfo.GetRandomInfo())
# 刷新文件
file.flush()
# 关闭文件流
file.close()
ReadInfo.py
import csvimport 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()
好好复习,准备考试哦。