HENAU 2021th FreshMan DataAnalysis
导入科学计算库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import os
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ['SimHei']
mpl.rcParams["axes.unicode_minus"] = False
import warnings
warnings.filterwarnings('ignore')
plt.style.use('fivethirtyeight')
读取新生数据
data = pd.read_excel('./data/2021级新生信息-信管学院.xlsx')
data.head()
| 河南农业大学在校学生名册 | Unnamed: 1 | Unnamed: 2 | Unnamed: 3 | Unnamed: 4 | Unnamed: 5 | Unnamed: 6 | Unnamed: 7 | Unnamed: 8 | Unnamed: 9 | Unnamed: 10 |
---|
0 | 2021-2022学年第一学期 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
1 | 年级:2021 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
2 | 院(系)/部:信息与管理科学学院 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
3 | 专业:信息与计算科学 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
4 | 班级:信计21-1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
data.tail()
| 河南农业大学在校学生名册 | Unnamed: 1 | Unnamed: 2 | Unnamed: 3 | Unnamed: 4 | Unnamed: 5 | Unnamed: 6 | Unnamed: 7 | Unnamed: 8 | Unnamed: 9 | Unnamed: 10 |
---|
727 | 2110122121 | NaN | 男 | 2001-12-23 | 汉族 | 河南省 | 河南省郑州市新郑市新港办事处隆港社区2单元1号楼10楼3号 | 451164 | 共青团员 | NaN | 本科 |
---|
728 | 2110122122 | NaN | 男 | 2004-02-20 | 汉族 | 河南省 | 河南省新乡市长垣县恼里镇西沙窝村85号 | 453400 | 共青团员 | NaN | 本科 |
---|
729 | 2110122123 | NaN | 男 | 2003-08-04 | 汉族 | 河南省 | 河南省商丘市柘城县邵元乡周元村 | 476200 | 共青团员 | NaN | 本科 |
---|
730 | 2110122124 | NaN | 男 | 2004-02-01 | 汉族 | 河南省 | 河南省信阳市光山县斛山乡卢湾村朱小湾 | 465450 | 共青团员 | NaN | 本科 |
---|
731 | 2110122125 | NaN | 男 | 2004-07-15 | 回族 | 河南省 | 河南省商丘市民权县曙光路292号 | 476800 | 群众 | NaN | 本科 |
---|
data.tail()
| 河南农业大学在校学生名册 | Unnamed: 1 | Unnamed: 2 | Unnamed: 3 | Unnamed: 4 | Unnamed: 5 | Unnamed: 6 | Unnamed: 7 | Unnamed: 8 | Unnamed: 9 | Unnamed: 10 |
---|
727 | 2110122121 | NaN | 男 | 2001-12-23 | 汉族 | 河南省 | 河南省郑州市新郑市新港办事处隆港社区2单元1号楼10楼3号 | 451164 | 共青团员 | NaN | 本科 |
---|
728 | 2110122122 | NaN | 男 | 2004-02-20 | 汉族 | 河南省 | 河南省新乡市长垣县恼里镇西沙窝村85号 | 453400 | 共青团员 | NaN | 本科 |
---|
729 | 2110122123 | NaN | 男 | 2003-08-04 | 汉族 | 河南省 | 河南省商丘市柘城县邵元乡周元村 | 476200 | 共青团员 | NaN | 本科 |
---|
730 | 2110122124 | NaN | 男 | 2004-02-01 | 汉族 | 河南省 | 河南省信阳市光山县斛山乡卢湾村朱小湾 | 465450 | 共青团员 | NaN | 本科 |
---|
731 | 2110122125 | NaN | 男 | 2004-07-15 | 回族 | 河南省 | 河南省商丘市民权县曙光路292号 | 476800 | 群众 | NaN | 本科 |
---|
数据预处理
读完数据发现不对劲儿了!!!
data.columns
Index(['河南农业大学在校学生名册', 'Unnamed: 1', 'Unnamed: 2', 'Unnamed: 3', 'Unnamed: 4',
'Unnamed: 5', 'Unnamed: 6', 'Unnamed: 7', 'Unnamed: 8', 'Unnamed: 9',
'Unnamed: 10'],
dtype='object')
data.columns = ['学号','姓名','性别','出生日期','民族','生源省份','通讯地址','邮政编码','政治面貌','籍贯','培养层次']
data.head()
| 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
0 | 2021-2022学年第一学期 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
1 | 年级:2021 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
2 | 院(系)/部:信息与管理科学学院 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
3 | 专业:信息与计算科学 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
4 | 班级:信计21-1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
data.tail()
| 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
727 | 2110122121 | NaN | 男 | 2001-12-23 | 汉族 | 河南省 | 河南省郑州市新郑市新港办事处隆港社区2单元1号楼10楼3号 | 451164 | 共青团员 | NaN | 本科 |
---|
728 | 2110122122 | NaN | 男 | 2004-02-20 | 汉族 | 河南省 | 河南省新乡市长垣县恼里镇西沙窝村85号 | 453400 | 共青团员 | NaN | 本科 |
---|
729 | 2110122123 | NaN | 男 | 2003-08-04 | 汉族 | 河南省 | 河南省商丘市柘城县邵元乡周元村 | 476200 | 共青团员 | NaN | 本科 |
---|
730 | 2110122124 | NaN | 男 | 2004-02-01 | 汉族 | 河南省 | 河南省信阳市光山县斛山乡卢湾村朱小湾 | 465450 | 共青团员 | NaN | 本科 |
---|
731 | 2110122125 | NaN | 男 | 2004-07-15 | 回族 | 河南省 | 河南省商丘市民权县曙光路292号 | 476800 | 群众 | NaN | 本科 |
---|
del_rows = data.dropna(axis='rows')
del_rows.head()
| 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
6 | 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
42 | 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
78 | 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
114 | 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
150 | 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
del_rows.index
Int64Index([ 6, 42, 78, 114, 150, 186, 222, 258, 294, 330, 366, 402, 439,
476, 513, 551, 588, 626, 663, 700],
dtype='int64')
data = data.drop(del_rows.index, axis=0)
data.head()
| 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
0 | 2021-2022学年第一学期 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
1 | 年级:2021 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
2 | 院(系)/部:信息与管理科学学院 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
3 | 专业:信息与计算科学 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
4 | 班级:信计21-1 | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN | NaN |
---|
data['姓名'] = 'BoyOrGirl'
data['籍贯'] = 'Sorry&Secret'
data.head()
| 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
0 | 2021-2022学年第一学期 | BoyOrGirl | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Sorry&Secret | NaN |
---|
1 | 年级:2021 | BoyOrGirl | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Sorry&Secret | NaN |
---|
2 | 院(系)/部:信息与管理科学学院 | BoyOrGirl | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Sorry&Secret | NaN |
---|
3 | 专业:信息与计算科学 | BoyOrGirl | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Sorry&Secret | NaN |
---|
4 | 班级:信计21-1 | BoyOrGirl | NaN | NaN | NaN | NaN | NaN | NaN | NaN | Sorry&Secret | NaN |
---|
data = data.dropna(axis='rows')
data.head()
| 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
7 | 2110104001 | BoyOrGirl | 女 | 2003-10-05 | 汉族 | 河南省 | 河南省周口市淮阳县北关淮中新村 | 466700 | 共青团员 | Sorry&Secret | 本科 |
---|
8 | 2110104002 | BoyOrGirl | 女 | 2003-09-17 | 汉族 | 河南省 | 河南省信阳市商城县金刚台大道东段农业农村局502室 | 465350 | 共青团员 | Sorry&Secret | 本科 |
---|
9 | 2110104003 | BoyOrGirl | 女 | 2003-08-04 | 汉族 | 河南省 | 河南省南阳市宛城区官庄镇官庄街 | 473131 | 共青团员 | Sorry&Secret | 本科 |
---|
10 | 2110104004 | BoyOrGirl | 女 | 2003-04-13 | 汉族 | 河南省 | 河南省平顶山市宝丰县闹店镇连店村 | 467400 | 共青团员 | Sorry&Secret | 本科 |
---|
11 | 2110104005 | BoyOrGirl | 女 | 2003-05-29 | 汉族 | 河南省 | 河南省商丘市虞城县城关镇立业家园小区4号楼一单元二楼 | 476300 | 群众 | Sorry&Secret | 本科 |
---|
data.reset_index(drop=True, inplace=True)
data.head()
| 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
0 | 2110104001 | BoyOrGirl | 女 | 2003-10-05 | 汉族 | 河南省 | 河南省周口市淮阳县北关淮中新村 | 466700 | 共青团员 | Sorry&Secret | 本科 |
---|
1 | 2110104002 | BoyOrGirl | 女 | 2003-09-17 | 汉族 | 河南省 | 河南省信阳市商城县金刚台大道东段农业农村局502室 | 465350 | 共青团员 | Sorry&Secret | 本科 |
---|
2 | 2110104003 | BoyOrGirl | 女 | 2003-08-04 | 汉族 | 河南省 | 河南省南阳市宛城区官庄镇官庄街 | 473131 | 共青团员 | Sorry&Secret | 本科 |
---|
3 | 2110104004 | BoyOrGirl | 女 | 2003-04-13 | 汉族 | 河南省 | 河南省平顶山市宝丰县闹店镇连店村 | 467400 | 共青团员 | Sorry&Secret | 本科 |
---|
4 | 2110104005 | BoyOrGirl | 女 | 2003-05-29 | 汉族 | 河南省 | 河南省商丘市虞城县城关镇立业家园小区4号楼一单元二楼 | 476300 | 群众 | Sorry&Secret | 本科 |
---|
数据分析
男女比例
count = data.groupby(['性别'])['姓名'].count()
count.head()
性别
女 200
男 411
Name: 姓名, dtype: int64
count.values
array([200, 411], dtype=int64)
count.plot(kind='barh', figsize=(20, 8), color=['c', 'b'])
plt.xlabel('人数', fontsize=15)
plt.ylabel('性别', fontsize=15)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
for y, x in enumerate(count.values):
plt.text(x+5, y-0.05, "%s" %x, fontsize=18)
plt.title('boy&girl分布柱状图', fontsize=16)
plt.show()
count.values[0]
200
man=count.values[1]
woman=count.values[0]
man_perc=man/(woman+man)
woman_perc=woman/(woman+man)
labels=['男','女']
colors=['blue','red']
plt.figure(figsize=(15, 8))
paches,texts,autotexts=plt.pie([man_perc,woman_perc],labels=labels,colors=colors,explode=(0,0.05),autopct='%0.1f%%')
for text in autotexts:
text.set_color('white')
for text in texts+autotexts:
text.set_fontsize(20)
plt.show()
绘制环形图
count
性别
女 200
男 411
Name: 姓名, dtype: int64
count.values
array([200, 411], dtype=int64)
plt.figure(figsize=(10, 5))
labels = count.index
values = count.values
plt.pie(values, labels=labels, colors=['skyblue','blue'], wedgeprops=dict(width=0.3, edgecolor='w'), autopct='%.1f%%', pctdistance=0.8)
plt.axis('equal')
plt.show()
参考:https://blog.csdn.net/LuohenYJ/article/details/108348697
data.head()
| 学号 | 姓名 | 性别 | 出生日期 | 民族 | 生源省份 | 通讯地址 | 邮政编码 | 政治面貌 | 籍贯 | 培养层次 |
---|
0 | 2110104001 | BoyOrGirl | 女 | 2003-10-05 | 汉族 | 河南省 | 河南省周口市淮阳县北关淮中新村 | 466700 | 共青团员 | Sorry&Secret | 本科 |
---|
1 | 2110104002 | BoyOrGirl | 女 | 2003-09-17 | 汉族 | 河南省 | 河南省信阳市商城县金刚台大道东段农业农村局502室 | 465350 | 共青团员 | Sorry&Secret | 本科 |
---|
2 | 2110104003 | BoyOrGirl | 女 | 2003-08-04 | 汉族 | 河南省 | 河南省南阳市宛城区官庄镇官庄街 | 473131 | 共青团员 | Sorry&Secret | 本科 |
---|
3 | 2110104004 | BoyOrGirl | 女 | 2003-04-13 | 汉族 | 河南省 | 河南省平顶山市宝丰县闹店镇连店村 | 467400 | 共青团员 | Sorry&Secret | 本科 |
---|
4 | 2110104005 | BoyOrGirl | 女 | 2003-05-29 | 汉族 | 河南省 | 河南省商丘市虞城县城关镇立业家园小区4号楼一单元二楼 | 476300 | 群众 | Sorry&Secret | 本科 |
---|
民族分布
nation_data = data.groupby('民族')['民族'].count()
nation_data
民族
回族 7
布依族 1
朝鲜族 1
汉族 598
苗族 1
蒙古族 3
Name: 民族, dtype: int64
nation_data.values
array([ 7, 1, 1, 598, 1, 3], dtype=int64)
绘制柱状图
nation_data.plot(kind='barh', figsize=(20, 8))
plt.xlabel('人数', fontsize=15)
plt.ylabel('民族', fontsize=15)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
for y, x in enumerate(nation_data.values):
plt.text(x+5, y-0.05, "%s" %x, fontsize=18)
plt.title('民族分布柱状图', fontsize=16)
plt.show()
绘制环形图
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(figsize=(15, 8), subplot_kw=dict(aspect="equal"))
recipe = ["225 g flour",
"90 g sugar",
"1 egg",
"60 g butter",
"100 ml milk",
"1/2 package of yeast"]
data1 = [225, 90, 50, 60, 100, 5]
wedges, texts = ax.pie(data1, wedgeprops=dict(width=0.5), startangle=-40)
bbox_props = dict(boxstyle="square,pad=0.3", fc='white', ec="black", lw=0.72)
kw = dict(arrowprops=dict(arrowstyle="-"),
bbox=bbox_props, zorder=0, va="center")
for i, p in enumerate(wedges):
ang = (p.theta2 - p.theta1)/2. + p.theta1
y = np.sin(np.deg2rad(ang))
x = np.cos(np.deg2rad(ang))
horizontalalignment = {-1: "right", 1: "left"}[int(np.sign(x))]
connectionstyle = "angle,angleA=0,angleB={}".format(ang)
kw["arrowprops"].update({"connectionstyle": connectionstyle})
ax.annotate(recipe[i], xy=(x, y), xytext=(1.35*np.sign(x), 1.4*y),
horizontalalignment=horizontalalignment,color='black', **kw)
ax.set_title("Matplotlib bakery: A donut")
plt.show();
plt.figure(figsize=(10, 5))
recipe = nation_data.index
data1 = nation_data.values
fig, ax = plt.subplots(figsize=(20, 8), subplot_kw=dict(aspect="equal"))
wedges, texts = ax.pie(data1, wedgeprops=dict(width=0.5), startangle=-40)
bbox_props = dict(boxstyle="square,pad=0.1", fc='white', ec="black", lw=0.72)
kw = dict(arrowprops=dict(arrowstyle="-"),bbox=bbox_props, zorder=0, va="center")
for i, p in enumerate(wedges):
ang = (p.theta2 - p.theta1)/2. + p.theta1
y = np.sin(np.deg2rad(ang)+1)
x = np.cos(np.deg2rad(ang))
horizontalalignment = {-1: "right", 1: "left"}[int(np.sign(x))]
connectionstyle = "angle,angleA=0,angleB={}".format(ang)
kw["arrowprops"].update({"connectionstyle": connectionstyle})
ax.annotate(recipe[i], xy=(x, y), xytext=(1.35*np.sign(x), 2*y),horizontalalignment=horizontalalignment,color='black', **kw)
ax.set_title("民族分布")
plt.show()
<Figure size 720x360 with 0 Axes>
plt.figure(figsize=(10, 5))
labels = nation_data.index
values = nation_data.values
plt.pie(values, labels=labels, colors=['skyblue','green','red','blue'], wedgeprops=dict(width=0.5, edgecolor='w'), autopct='%.1f%%', pctdistance=0.8)
plt.axis('equal')
plt.show()
生源省份分布
data.groupby('生源省份')['生源省份'].count()
以上是关于HENAU 2021届新生大数据分析的主要内容,如果未能解决你的问题,请参考以下文章
清北2021级新生大数据对比!北大强基计划超30%为竞赛破格录取
2021年第三届全国高校计算机能力挑战赛大数据应用赛
LUA 2020-2021届毕业展演完美落幕
拥有5大核心竞争力的华为云GaussDB,成SACC2021最靓那一个…
取消“996”大裁员年终奖缩水,这届互联网人没有余粮?
第九届中国Hadoop大数据峰会议程