感谢
ButtersPC提供的数据集。 本文旨在学习数据分析的基本过程,文中敏感数据均已隐藏。本文通过一些基本描述统计,如考生人数、科目分数及平均分、考试排名,文科理科等因素,尽可能地探求数据集中包含的有价值的信息,来预测高考成绩。
导读: >1、数据集选用“某年上海某区高考二模成绩”
2、上海过去几年的高考制度采用“3+1+1”的模式,语数英 + 加一学科 + 综合,加一学科指在物理、化学、生物、地理、政治、历史中选其一。 (这条信息很重要,有助于帮我们理解数据)
使用工具 >pandas、numpy
>matplotlib 数据可视化 >Jupyter Notebook 数据分析利器 # 一、导入数据
2、文科生“五门调整总分”同 文科生“五门总分”列名不相同。 # 二、数据处理
导读: >1、数据集选用“某年上海某区高考二模成绩”
2、上海过去几年的高考制度采用“3+1+1”的模式,语数英 + 加一学科 + 综合,加一学科指在物理、化学、生物、地理、政治、历史中选其一。 (这条信息很重要,有助于帮我们理解数据)
使用工具 >pandas、numpy
>matplotlib 数据可视化 >Jupyter Notebook 数据分析利器 # 一、导入数据
# 导包
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
# plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
import pandas as pd
import numpy as np
# 导入数据
filename = './**.xls'
# df_w 文科生原始数据
# df_l 理科生原始数据
df_w = pd.read_excel(filename, sheet_name=0)
df_l = pd.read_excel(filename, sheet_name=1)
# 查看文科生数据
print(df_w.columns)
df_w.head(3)
Index([‘学科’, ‘学校’, ‘准考证号’, ‘姓名’, ‘语文’, ‘数学’, ‘英语’, ‘五门调整总分’, ‘总分排名’], dtype=’object’)
学科 | 学校 | 准考证号 | 姓名 | 语文 | 数学 | 英语 | 五门调整总分 | 总分排名 | |
---|---|---|---|---|---|---|---|---|---|
0 | 政治 | 吴淞中学 | 110203110** | 周** | 102.0 | 110.0 | 127.5 | 459.1 | 8 |
1 | 政治 | 吴淞中学 | 110203110** | 杨** | 102.0 | 101.0 | 114.5 | 452.7 | 15 |
2 | 政治 | 吴淞中学 | 110203110** | 赵** | 95.0 | 108.0 | 128.5 | 448.3 | 19 |
# 查看理科生数据
print(df_l.columns)
df_l.head(3)
Index([‘学科’, ‘学校’, ‘准考证号’, ‘姓名’, ‘语文’, ‘数学’, ‘英语’, ‘加一调整分’, ‘五门总分’, ‘总分排名’], dtype=’object’)
学科 | 学校 | 准考证号 | 姓名 | 语文 | 数学 | 英语 | 加一调整分 | 五门总分 | 总分排名 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 物理 | 行知中学 | 110101410** | 秦** | 109.0 | 127.0 | 123.5 | 117 | 494.9 | 38 |
1 | 物理 | 行知中学 | 110101410** | 王** | 98.5 | 103.5 | 128.5 | 111 | 461.3 | 189 |
2 | 物理 | 行知中学 | 110101410** | 金** | 102.0 | 135.0 | 123.0 | 127 | 507.0 | 21 |
# 查看数据格式
# 是否需要转换
df_l.dtypes
学科 object 学校 object 准考证号 int64 姓名 object 语文 float64 数学 float64 英语 float64 加一调整分 int64 五门总分 float64 总分排名 int64 dtype: object
df_w.dtypes
学科 object 学校 object 准考证号 int64 姓名 object 语文 float64 数学 float64 英语 float64 五门调整总分 float64 总分排名 int64 dtype: object 从上面发现数据质量很高,非常工整。但也存在几个小问题。 >1、文科生没有“加一调整分”列
2、文科生“五门调整总分”同 文科生“五门总分”列名不相同。 # 二、数据处理
# 修改文科生列名
df_w = df_w.rename(columns = {
'五门调整总分':'五门总分'})
df_w.head()
学科 | 学校 | 准考证号 | 姓名 | 语文 | 数学 | 英语 | 五门总分 | 总分排名 | |
---|---|---|---|---|---|---|---|---|---|
0 | 政治 | 吴淞中学 | 110203110** | 周** | 102.0 | 110.0 | 127.5 | 459.1 | 8 |
1 |