数据科学导引上机(1)

1、导入可能使用到的包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 可以自己随时增减

2、导入数据

# 如果需导入文件与代码文件在同一个文件夹
data = pd.read_csv('turkiye-student-evaluation_generic.csv')
# 否则使用绝对路径
# data = pd.read_csv(r'绝对路径')

# 显示前5行
data.head()

 3、查看数据,简单分析

# 查询数据类型,是否有缺失值
data.info()

# 读取数据的 信息,平均数、中位数的描述
data.describe()

 4、熟悉pandas的数据选取

# 防止修改原数据
df_cor = data.copy()
df_cor.columns
# 修改列名
df_cor.columns = pd.Index(["I1","I2","I3","I4","I5"] + list(df_cor.columns[5:34]))

# 比较loc、iloc的区别;
# 根据矩阵位置选择第10行
# df_cor.iloc[:,9]
# df_cor.iloc[[1,2],:]
# 根据列名和行名选择
ff = df_cor.loc[:,['I4','Q3']]
ff

比较loc、iloc的区别
# 根据矩阵位置选择第10行
# df_cor.iloc[:,9]
# df_cor.iloc[[1,2],:]
# 根据列名和行名选择
ff = df_cor.loc[:,['I4','Q3']]

5、归一化

# 0-1标准化
from sklearn import preprocessing as prep
predata = data.copy()
minmax_scale = prep.MinMaxScaler().fit(predata[predata.columns])
predata[predata.columns] = minmax_scale.transform(predata[predata.columns])
display(predata.head())

6、相关性矩阵

# 相关矩阵
corr = df_cor.corr()
# 设置图形类型为下三角矩阵
mask = np.zeros_like(corr, dtype=np.bool)
mask[np.triu_indices_from(mask)] = True # 返回方阵的三角矩阵

# 做相关矩阵图——热力图
f, ax = plt.subplots(figsize=(10, 10)) # 设置画布大小(比例)
cmap = sns.diverging_palette(220, 10, as_cmap=True) # 调色盘
sns.heatmap(corr, mask=mask, cmap=cmap, vmax=1.0,
    square=True, xticklabels=2, yticklabels=2,
    linewidths=.3, cbar_kws={"shrink": .5}, ax=ax)
# 进行可视化
plt.show()

7、卡方检验

# 定义选取的关键特征个数
N=6
# 准备好原始特征
df_feature=data.copy()
del df_feature["attendance"]
# 准备好标签
label=data["attendance"]
"""
函数find_name(new_feature, df_feature)用来输出关键特征的名称;
输入:原始特征、选择的关键特征;
输出:关键特征的名称
"""
def find_name(new_feature, df_feature):
    
# 定义列表存储关键特征名称
    feature_name=[]
    col=df_feature.columns
# 寻找关键特征的名称信息
    for i in range(N):
        for j in range(df_feature.shape[1]):
# 判别标准为new_feature中的特征向量与df_feature中的特征向量一致
            if np.mean(abs(new_feature[i]-df_feature[col[j]]))==0:
                feature_name.append(col[j])
                print (i+1,col[j])
                break
    return feature_name

# 卡方检验,找出关键特征
from sklearn.feature_selection import SelectKBest,chi2
new_feature = SelectKBest(chi2,k=N).fit_transform(df_feature,label).T
PS_list= find_name(new_feature,df_feature)

 画出箱型图,进一步观察相关程度

# 画出箱型图
sns.boxplot(x='difficulty',y='attendance',data=data)
plt.show()

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值