利用Python进行数据初步处理


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)

猜你喜欢

转载自blog.csdn.net/weixin_38110091/article/details/88239557