python学习笔记(4)

数据预处理

Data cleaning

数据缺失填充(固定值、均值、上下数据)

import pandas as pd
a = pd.read_csv('path', index_col='Date')
# print(a)  文件缺失值在读取a中显示NaN
# a.isnull() 缺失为true
a.dropna(how='all')  # how整行(列)为null时才删除  默认删除单个元素为空的行

a.fillna(a.mean(), inplace=True)  # inplace是否更改原始的数据  均值填充

a.fillna(method='ffill')  # 上一个非缺失值fill  f下一个填充  主义数据位置是否在第一行或者最后

数据异常

import pandas as pd
a = pd.read_csv('path', index_col='Date')
# print(a)  文件缺失值在读取a中显示NaN
# a.isnull() 缺失为true
a.dropna(how='all')  # how整行(列)为null时才删除  默认删除单个元素为空的行

a.fillna(a.mean(), inplace=True)  # inplace是否更改原始的数据  均值填充

# a.fillna(method='ffill')  # 上一个非缺失值fill  f下一个填充  主义数据位置是否在第一行或者最后

a.describe()  # 集中对数据的行列个概率参数进行计算(average、std、min、mid、count、max)
# a.loc['index'] = [data]   加入异常数据
# a.iloc[:, 0:4]  a.drop['',axis=1].boxplot()  异常检测的公式可以自己实现或者修改
a[abs(a-a.mean()) > 3*a.std()].dropna(how='all')  # 3sigma原则

Data integration

Data transformation

常用方式:规范化、连续属性二值化、特征二值化
规范化的常用方法:最值规范、z-zero规范化、小数定规范化

import pandas as pd
from sklearn.datasets import load_boston
boston = datasets.load_boston()
boston.feature_names
boston.target   # 必要的声明(Flankly speaking I'don't know that's why)
boston_df = pd.DataFrame(boston.data[:, 4:7])  # 切片处理
boston_df.columns = boston.feature_names[4:7]

# min-max :x'= (x-min)/(max-min)  个人感觉类似归一化  通过比列大小体现数据的差异
from sklearn import preprocessing
preprocessing.minmax_scale(boston_df)
# z-zero:x'=(x-average(x))/std
b = (boston_df-boston_df.mean())/boston_df.std()  # 自定义
preprocessing.scale(boston_df)
# 小数定标规范化
c = boston_df/10**np.ceil(np.log10(boston_df.abs().max()))  # ceil取整

import pandas as pd
boston = datasets.load_boston()
pd.cut(boston.AGE, 5, labels=range(5))  # 等宽法(区间分割)
pd.qcut(boston.AGE, 5, labels=range(5))  # 等频法(数据数量分割)

# 特征二值化(多分类问题转换成二分类问题)
from sklearn.preprocessing import Binarizer
X = boston.target.reshape(-1, 1)  # data矩阵的转置
Binarizer(threshold=20.0).fit_transform(X)

Data exploration

from sklearn import datasets
iris = datasets.load_iris()
import pandas as pd
iris_df = pd.DataFrame(iris.data)
# print(iris.data)
iris_df.columns = iris.feature_names
# print(iris_df.columns)
iris_df['target'] = iris.target
iris_df.target.astype(float)
# print(iris_df.target)

iris_df.iloc[:, 0]
import matplotlib.pyplot as plt
plt.hist(iris_df.iloc[:, 0], 30, color='g')  # 等宽分箱
plt.show()
import scipy
c = scipy.stats.normaltest(iris_df.iloc[:, 0])  #数据分布可能多种情况用相应的函数进行验证即可
# NormaltestResult(statistic=5.735584236235733, pvalue=0.05682424941067306)
print(c)

iris_df.target.value_counts().plot(kind='pie')

统计量分析:均值、中位数、标准差、四分位距(体现数据的变异程度)

iris_df.iloc[:, 0].mean()
iris_df.iloc[:, 0].median()
iris_df.iloc[:, 0].std()

iris_df.iloc[:, 0].quantile()  
iris_df.iloc[:, 0].quantile([0.75]).loc[0.75] - iris_df.iloc[:, 0].quantile([0.25, 0.75]).loc[0.25]

#四合一
iris_df.iloc[:, 0].describe()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值