python数据预处理

PYTHON 最流行库:Numpy、Matplotlib 和 Pandas。Numpy 是满足所有数学运算所需要的库,由于代码是基于数学公式运行的,因此就会使用到它。Maplotlib(具体而言,Matplotlib.pyplot)则是满足绘图所需要的库。Pandas 则是最好的导入并处理数据集的一个库。对于数据预处理而言,Pandas 和 Numpy 基本是必需的。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

创建保存自变量的矩阵

X = dataset.iloc[:, :-1].values

第一个冒号表示提取数据集的全部行,「:-1」则表示提取除最后一列以外的所有列。最后的「.values」表示希望提取所有的值;

创建保存因变量的向量,取数据的最后一列

y = dataset.iloc[:, 3].values

一、数据描述

1.1 info()函数

info()函数用于打印DataFrame的简要摘要,显示有关DataFrame的信息,包括索引的数据类型dtype和列的数据类型dtype,非空值的数量和内存使用情况。

#(1)定义一个Dataframe
int_values = [1, 2, 3, 4, 5]
text_values = ['alpha', 'beta', 'gamma', 'delta', 'epsilon']
float_values = [0.0, 0.25, 0.5, 0.75, 1.0]
df = pd.DataFrame({
   "int_col": int_values, "text_col": text_values,
                  "float_col": float_values})
df

'''
int_col text_col  float_col
0        1    alpha       0.00
1        2     beta       0.25
2        3    gamma       0.50
3        4    delta       0.75
4        5  epsilon       1.00

'''
df.info(verbose=True)
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 3 columns):
int_col      5 non-null int64
text_col     5 non-null object
float_col    5 non-null float64
dtypes: float64(1), int64(1), object(1)
memory usage: 248.0+ bytes
'''

1.2 describe()函数

describe()函数用于生成描述性统计信息。 描述性统计数据:数值类型的包括均值,标准差,最大值,最小值,分位数等;类别的包括个数,类别的数目,最高数量的类别及出现次数等;输出将根据提供的内容而有所不同。

df.describe()
'''
		float_col	int_col
count	5.000000	5.000000
mean	0.500000	3.000000
std		0.395285	1.581139
min		0.000000	1.000000
25%		0.250000	2.000000
50%		0.500000	3.000000
75%		0.750000	4.000000
max		1.000000	5.000000
'''

二、缺失值处理

类型 描述
缺失值类型 1) na.nan ,float类型 ,它不等于任何值,连自己都不相等。如果用nan和任何其它值比较都会返回nan,因为nan在Numpy中的类型是浮点,因此整型列会转为浮点;而字符型由于无法转化为浮点型,只能归并为object类型(‘O’),原来是浮点型的则类型不变。
2)none,与自己相等。None == None>> True
3)pd.NA 不改变原有数据类型,它代表空整数、空布尔值、空字符
缺失值判断 1)isnull() ; 2)isna() ; 3)notna();
缺失值统计 1)列缺失:isnull().sum(axis=0) ;2)行缺失:isnull().sum(axis=1);3)缺失率:isnull().mean();
缺失值筛选 1)行筛选:df.loc[df.isnull().any(1)];2)列筛选:df.loc[:,df.isnull().any()]
缺失值填充 1)全部填充:fillna();2)向前填充:ffill();3)向后填充:dfill();4)填充平均值:df.D.fillna(df.D.mean())
缺失值删除 1)全部删除:df.dropna();2)行删除:df.dropna(axis = 0);3)列删除:df.dropna(axis = 1);按缺失率删除:df.loc[:,df.isnull().mean(axis=0)<0.1]
缺失值参与计算 1)加法:加法会忽略缺失值;2)累加:cumsum累加会忽略NA,但值会保留在列中,可以使用skipna=False跳过有缺失值的计算并返回缺失值。;3)计数:缺失值不进入计数范围里;4)聚合分组

pandas使用浮点值NaN(Not a Number)表示浮点数和非浮点数组中的缺失值,同时python内置None值也会被当作是缺失值。

方法 说明
dropna 根据各标签的值中是否存在缺失值对轴标签进行过滤,可通过阈值调节对缺失值的容忍度
fillna 用指定值或插值方法(如ffill或bfill)填充缺失数据
isnull 返回一个含有布尔值的对象,这些布尔值表示哪些值是缺失值/NA,该对象的类型与源类型一样
notnull isnull的否定式

isna/isnull/info()

判断是不是缺失值:

df = pd.DataFrame([[np.nan, 2, np.nan, 0],
                   [3, 4, np.nan, 1],
                   [np.nan, np.nan, np.nan, 5],
                   [np.nan, 3, np.nan, 4]],
                  columns=list('ABCD'))

print(df)
'''
     A    B   C  D
0  NaN  2.0 NaN  0
1  3.0  4.0 NaN  1
2  NaN  NaN NaN  5
3  NaN  3.0 NaN  4
'''
df.isna()    ##df.isnull()
'''
A	B	C	D
0	True	False	True	False
1	False	False	True	False
2	True	True	True	False
3	True	False	True	False
'''
df.isna().sum()    ##df.isnull().sum()   df.isnull().mean()  缺失率
'''
A    3
B    0
C    4
D    0
dtype: int64
'''
df.info()
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 4 columns):
A    1 non-null float64
B    4 non-null object
C    0 non-null float64
D    4 non-null int64
dtypes: float64(2), int64(1), object(1)
memory usage: 208.0+ bytes
'''
#可以看到一共有4行,但是有两列的非空值都不到4行

dropna

DataFrame.dropna(axis=0, how=‘any’, thresh=None, subset=None, inplace=False)
函数作用:删除含有空值的行或列

  • axis:维度,axis=0表示index行,axis=1表示columns列,默认为0
  • how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列
  • thresh:一行或一列中至少出现了thresh个才删除。
  • subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)
  • inplace:刷选过缺失值得新数据是存为副本还是直接在原数据上进行修改。
df = pd.DataFrame({
   "name": ['Alfred', 'Batman', 'Catwoman'],
                   "toy": [np.nan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值