数据准备(data preparation)

数据预处理及数据准备

提到数据预处理,首先不得不考虑到pandas库,链接pandas


数据准备前置知识

数据准备(data preparation) 包括数据清理及数据变形,真实世界的数据是什么样子的?为什么数据清理和数据变形是数据处理流程的不可缺少的一部分呢?

进行数据处理,我们离不开一个重要的库:pandas
以及数据可视化库:matplotlib

pandas常用命令如下:

import pandas as pd

df=pd.read_csv('filename')#读取csv文件,并用df表示
df.to_csv('filename')#写入csv文件

df_1=pd.read_excel('filename')#读取excel文件
df_1.to_excel('filename')#写入excel文件

from sqlalchemy import create_engine
engine=create_engine('sqlite://foo.db')
df_2=pd.read_sql_table('tablename',engine)
df_2.to_sql('tablename',engine)#写入sql数据库


data=[a,b]
df=pd.DataFrame(data=data,columns=['name','age'])#构造 DataFrame数据格式

df.columns
df.info()

df.shape

df[df.name=='a']#筛选

df['age'].sum()
cumsum()
min()
max()
mean()
median()

matplotlib 常用命令如下

import matplot.pyplot as plt

plt.plot(x)
plt.show()

plt.scatter(x,y)
plt.show()

plt.hist(y,bin= )
plt.show()



plt.figure(figsize=)
plt.subplot(1,2,1)
plt.plot(z)
plt.title('')

机器学习库:
Scikit Learn

数据处理步骤

清洗,变形(Cleaning/Transformation)
整合(integration)
模型化和可视化(modeling/visualization)

其中,数据清洗的难点主要在于缺失值、外点、噪声和不一致数据(如数值2和low对应,不好判别)
数据变形的主要方法有归一化、聚集和离散
归一化:将数值转化成公共范围内的比列而不会扭曲差异
离散化:字如其意,将连续数值离散化

数据预处理实战

二、使用步骤

1.读入数据

import pandas as pd

# readinf the data
df = pd.read_csv("CombinedCyclePowerPlantDirty.csv")
# two samples,打印前两条信息
print("data samples")
print(df.head(2))

# columns and types
print("columns types")
print(df.dtypes)

print("Full Info")
print(df.info())#打印数据信息,数据格式等

在这里插入图片描述

df["AP"].hist()#或者plt.hist(df.['AP'])
plt.title("AP")
plt.show()

创建一个关于所有变量的分散矩阵

df = pd.read_csv("CombinedCyclePowerPlantDirty.csv")

# scatter matrix
pd.plotting.scatter_matrix(df)

在这里插入图片描述
在这里插入图片描述
看变量与变量之间的相关关系

print("AP")
df.AP.hist()
plt.show()
print("min ", df.AP.min())
print("max ", df.AP.max())
print("mean ", df.AP.mean())
df = df[df.AP > 0]
df = df[df.AP < 100000]

每一列的数据画图,并且筛选数据

import pandas as pd
import matplotlib.pyplot as plt


df.AT = df.AT.apply(lambda x: x.replace("o","0"))
df.AT = df.AT.apply(float)

df.AT.hist()

替换掉不合格的数据

# PE AT
plt.scatter(df.AT,df.PE)
plt.title("PE, vs AT")
plt.show()

# PE V
plt.scatter(df.V,df.PE)
plt.title("PE, vs V")
plt.show()

在这里插入图片描述
比较值


datasets = {}
for name in df.TCN.unique():
    datasets[name] = df[df.TCN == name]
    plt.scatter(datasets[name].AT, datasets[name].PE, label=name)
plt.legend()
plt.show()

# Daniel Smithson had his data in F


def corrector(row):
    if row["TCN"] == "Daniel Smithson":
        return (row["AT"]-32)*5/9
    else:
        return row["AT"]


df.AT = df.apply(corrector, axis=1)

datasets = {}
for name in df.TCN.unique():
    datasets[name] = df[df.TCN == name]
    plt.scatter(datasets[name].AT, datasets[name].PE, label=name)
plt.legend()
plt.show()

在这里插入图片描述
按子集比较数据集之间的关系

from sklearn.ensemble import IsolationForest

clf = IsolationForest(
        behaviour='new', 
        max_samples=100,
        random_state=1,
        contamination=0.01)

clf.fit(df[['AP', 'RH']])
df["anomaly"] = clf.predict(df[['AP', 'RH']])

color = ["r" if data==-1 else "b" for data in df["anomaly"]]
plt.scatter(df.AT,df.PE,c=color)
plt.show()
plt.scatter(df.V,df.PE,c=color)
plt.show()

pd.plotting.scatter_matrix(df,c=df.anomaly)
plt.legend()
plt.show()

# filter and show again
pd.plotting.scatter_matrix(df[df.anomaly!=-1])
plt.show()

用离群森林去除外点、异常值

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值