课后作业:Python机器学习环境的安装和配置

【作业提交】

将分类结果保存到文本文档进行提交,同时提交源代码。

  1. 测试结果命名为: ex01-结果图01-你的学号-你的姓名.png, ex01-结果图02-你的学号-你的姓名.png
  2. 源代码命名为: ex01-01-你的学号-你的姓名.py, ex01-02-你的学号-你的姓名.py, ex01-03-你的学号-你的姓名.py

*结果文件,要求每小题标注题号,两题之间要求空一行*


要求完成以下几个作业:

  • 利用pandas库和字典完成以下习题(ex01-01)
  • 利用matplotlib库绘制如下图(1)使用代码生成一个表达式为:$y=2x^2-3x^4+6x-3$ 的曲线图。(ex01-02, ex01-结果图01)
  • 利用matplotlib库绘制如下图(2)生成直方图(ex01-03, ex01-结果图02)

一. 利用pandas库和字典完成以下习题

1. 生成如下表格
序号 姓名 国家 学号 语文 数学 英语 科学 历史
0 拿破仑 地球联盟 2019001 33 98 33 98 94
1 哥德巴赫 黑暗祭祀 2019002 28 97 28 97 57
2 秦始皇 地球联盟 2019003 32 94 32 94 96
3 凯撒 黑暗祭祀 2019004 30 92 30 92 98
4 耶稣 地球联盟 2019005 99 100 97 98 91
In [18]:
# 0.载入pandas
import pandas as pd

# 1.创建数据 
# 1).字典 -> DataFrame
# 定义数据时候,尽量使用最贴合原始数据的数据格式来进行数据定义
data = {
    "姓名": ["拿破仑", "哥德巴赫", "秦始皇", "凯撒", "耶稣"],
    "国家": ["地球联盟","黑暗祭祀","地球联盟","黑暗祭祀","地球联盟"],
    "学号": ["2019001","2019002","2019003","2019004","2019005"],
    "数学": [98,97,94,92,100],
    "历史": [94,57,96,98,91]
}


# 2). 字典 -> DataFrame
df = pd.DataFrame(data)

# 2.显示数据
display(data)
display(df)
{'姓名': ['拿破仑', '哥德巴赫', '秦始皇', '凯撒', '耶稣'],
 '国家': ['地球联盟', '黑暗祭祀', '地球联盟', '黑暗祭祀', '地球联盟'],
 '学号': ['2019001', '2019002', '2019003', '2019004', '2019005'],
 '数学': [98, 97, 94, 92, 100],
 '历史': [94, 57, 96, 98, 91]}
姓名 国家 学号 数学 历史
0 拿破仑 地球联盟 2019001 98 94
1 哥德巴赫 黑暗祭祀 2019002 97 57
2 秦始皇 地球联盟 2019003 94 96
3 凯撒 黑暗祭祀 2019004 92 98
4 耶稣 地球联盟 2019005 100 91
2. 通过对表格的操作,获得以下几个结果

(1) 获取国家不等于“地球联盟”的数据

(2) 获取学号等于2019003的数据

(3)获取数学成绩大于95的同学的数据

(4) 获取历史成绩大于60,同时属于“黑暗祭祀”的同学的信息

In [25]:
# (1) 获取国家不等于“地球联盟”的数据
# 把真假的部分作为一个键索引传送给原来的data_frame表格
# df[df.国家 != "地球联盟"]

# (2) 获取学号等于2019003的数据  =:赋值  ==:判断相等
# df[df.学号 == "2019003"]

# (3)获取数学成绩大于95的同学的数据
# "95" 变成字符串类型, 字符串类型对比,先转换unicode再进行对比大小,两位数和三位数转换出来的格式是不同的。
# df[df.数学 > 95]

# (4) 获取历史成绩大于60,同时属于“黑暗祭祀”的同学的信息
df[(df.历史 > 60) & (df.国家 == '黑暗祭祀')]    #强制调整优先级
Out[25]:
姓名 国家 学号 数学 历史
3 凯撒 黑暗祭祀 2019004 92 98

二. 利用matplotlib库绘制如下图

1. 使用代码生成一个表达式为:$y=2x^2-3x^4+6x-3$ 的曲线图。

自变量x的取值范围为:(-20, 20, 10)

  1. -20~20 间隔为10
  2. 等差数列 -20~20,生成10个数
In [31]:
# 0. 引入库
import numpy as np
import matplotlib.pyplot as plt

# 1. 指定坐标轴(x,y)
x = np.linspace(-20,20,10)
y = 2*x**2 - 3*x**4 + 6*x - 3 

# 2. 显示、绘图
plt.plot(x,y,marker="o")

plt.show()
2. 生成直方图

直方图应包含6个序列,每个序列3种类型的特征,取值如下:

x_data = ('China', 'America', 'Japan', 'Germany', 'France', 'Italy')
y1_data = (120, 325, 310, 235, 227, 256)
y2_data = (225, 312, 314, 221, 253, 341)
y3_data = (232, 332, 222, 241, 190, 299)
In [ ]:
# 注释的快捷键 ctrl + /