PYTHON数据分析-Pandas学习 (2)

image

image

生成副本 # 生成 DataFrame 副本,方便数据集被多个不同流程使用 df3 = df2.copy() df3 添加行/列 data[\'id\'] = np.arange(len(data))

image

可见数据集多了一列

数值替换

利用map方法实现值的替换

data[\'is_ji\'] = data[\'is_ji\'].map({0: True,1: False})

利用一行代码进行0-1到True-False的变换

image

image

数据的删除

虽然我们可以通过数据选择方法从一个完整的数据集中拿到我们需要的数据,但有的时候直接删除 不需要的数据更加简单直接。Pandas 中,以 .drop 开头的方法都与数据删减有关。

DataFrame.drop 可以直接去掉数据集中指定的列和行。一般在使用时,我们指定 labels 标签 参数,然后再通过 axis 指定按列或按行删除即可。当然,你也可以通过索引参数删除数据,具体查看 官方文档。

df.drop(labels=[\'Median Age\', \'Total Males\'], axis=1)df.drop(labels=[1,2,3],axis=0)

DataFrame.drop_duplicates 则通常用于数据去重,即剔除数据集中的重复值。使用方法非常 简单,指定去除重复值规则,以及 axis 按列还是按行去除即可。

df.drop_duplicates()

image

可以看到利用此方法去掉了缺失值

除此之外,另一个用于数据删减的方法 DataFrame.dropna 也十分常用,其主要的用途是删除缺 少值,即数据集中空缺的数据列或行。

df.dropna() 缺失值的处理 检测缺失值

Pandas 为了更方便地检测缺失值,将不同类型数据的缺失均采用 NaN 标记。这里的 NaN 代表 Not a Number,它仅仅是作为一个标记。例外是,在时间序列里,时间戳的丢失采用 NaT 标记。

Pandas 中用于检测缺失值主要用到两个方法,分别是: isna() 和 notna() ,故名思意就是 「是缺失值」和「不是缺失值」。默认会返回布尔值用于判断。

image

data.isna()生成的是一个布尔型的数组,所以可以用data.isna().describe()来判断空缺值的数目

image

填充缺失值 填入确定的值 df.fillna(0)

此方法直接把缺失值填为0

填入周围的值

其中,limit参数表示最多向前寻找的数目

df.fillna(method=\'pad\', limit=1) df.fillna(method=\'bfill\') 平均值填充 df.fillna(df.mean()[\'C\':\'E\']) 插值填充 df_interpolate = df.interpolate()df_interpolate

对于 interpolate() 支持的插值算法,也就是 method= 。下面给出几条选择的建议:

如果你的数据增长速率越来越快,可以选择 method=\'quadratic\' 二次插值。

如果数据集呈现出累计分布的样子,推荐选择 method=\'pchip\' 。

如果需要填补缺省值,以平滑绘图为目标,推荐选择 method=\'akima\' 。

当然,最后提到的 method=\'akima\' ,需要你的环境中安装了 Scipy 库。除此之外,method=\'barycentric\' 和 method=\'pchip\' 同样也需要 Scipy 才能使用。

特征提取有关 数据归一化

有时候,DataFrame 中不同列之间的数据差距太大,需要对其进行归一化处理。 其中,Max-Min 归一化是简单而常见的一种方式,公式如下:

def normalization(df): numerator = df.sub(df.min()) denominator = (df.max()).sub(df.min()) Y = numerator.div(denominator) return Y 类型变量

类型变量是指这个变量的不同值仅仅表达不同的类型,值的大小不同但没有高低之分。

有很多变量都属于类型变量,例如 season=1,2,3,4 代表四季。

我们不能将 season 变量直接输入到神经网络,这是因为 season 数值越高并不表示相应的信号强度 越大。

解决方案是将类型变量用一个“一位热码“(one-hot)来编码,也就是:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgfgjz.html