import pandas as pd
df = pd.read_csv('路径/文件名') # 读取数据
# 查看数据信息
print(df.info())
print(df.describe())
print(df.head()) #查看表头
print(df.shape) #查看行列
print(df.dtypes) #查看数据类型
print(df["x-box"].hist()) #查看变量分布
print(df.isnull().sum()) #查看每一列缺失值情况
print(df.isnull().sum(axis=1)) #查看每一行缺失值情况
print(df["high"].value_counts()) #查看 high 这一列的值统计
print(df['high'].unique()) #查看 high 这一列数据有哪些不同的取值
# 查看特征相关性 df.corr() 皮尔森相关系数
df.corr()
# 数据预处理
# 缺失值填充
df.fillna(df.mode().iloc[0],inplace=True) #众数填充,inplace=True,修改应用于df
df.fillna(df.median()) # 中位数填充
df["high"][df.age.isnull()] = "0" #对某一列填充
# Imputer填充缺失值
from sklearn.preprocessing import Imputer
names = list(df.columns)
imp = Imputer(missing_values='NaN', strategy='mean', axis=0) # axis=0 用该列的其余数值的平均值填充空值,按行往下进行
imp2 = Imputer(missing_values='NaN', strategy='median', axis=0)
imp3 = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)
df = imp.fit_transform(df) # 处理后的表为numpy格式,并且没有列名
df = pd.DataFrame(df,columns=names) # 转换成pandas格式,添加列名
# 删除不需要的字段
df.drop(['id', 'uid'], axis=1, inplace=True) # 删除id,uid字段
# 亚编码:pandas内置方法
sex = pd.get_dummies(df['性别']) # 亚编码
# 将原表中 性别 字段删除,拼接上亚编码以后的表,形成一个新的表
df = pd.concat([df.drop(['性别'], axis=1), sex], axis=1)
# rank()函数
df['high']=df['high'].rank()
# 连续特征离散化
df['high2']=pd.cut(df['high'],bins=[0,5,10,15,20]).astype('str')
# 连续特征按照给定的范围进行切割分类,切割以后转换成str类型的数据
df['high2']=LabelEncoder().fit_transform(df['high2'])
# 对切割后的不同范围的数据进行编码
# 降维
# PCA降维
from sklearn.decomposition import PCA
pca = PCA(n_components=2) # n_components保留维度数
pca.fit(x_test)
# LDA降维
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
lda = LinearDiscriminantAnalysis(n_components=2)
lda.fit(x_test, y_test)
lda.transform(x_test)