Python basics - data analysis assessment (graphical version)

Environmental Statement:

If not in advance: [pip install *******]

or

【ALT】+【Enter】

import csv
import numpy as np
import matplotlib.pyplot as plt

Rendering effect:

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()

Study hard and prepare for the exam.

Guess you like

Origin blog.csdn.net/feng8403000/article/details/123980347