Bootstrap

深度之眼比赛实战班第一场比赛作业1.4 | 个人笔记

视频讲解

数据清洗

定义

对数据进行重新审查和校验,目的在于删除重复信息,纠正存在的错误,并提供数据的一致性

难点

数据针对的应用不同,难以归纳统一的方法和步骤,但可以根据不同的数据给出不同的数据清理方法

方法

  1. 解决缺失值:
    平均值,最大值,最小值或更为复杂的概率估计代替缺失的值
  2. 去重
    相等的记录合并为一条记录(即合并/清除)
  3. 解决错误值
    用统计分析的方法识别可能的错误值或异常值,如偏差分析、识别不遵守分布或回归方程的值,也可以用简单的规则库(常识性规则,业务特定规则等)检测数据值,或使用不同属性间的约束,外部的数据来检测和清理数据
  4. 解决数据的不一致性
    比如数据是类别型或者次序型

场景

  1. 删除多列(pandas中的drop())
  2. 更改数据类型
  3. 将分类变量转换为数字变量
  4. 检查缺失数据
  5. 删除列中的字符串
  6. 删除列中的空格
  7. 用字符串连接两列(带条件)
  8. 转换时间戳(从字符串到日期时间格式)

数据处理

定义

对数据(数值/非数值)进行分析和加工的技术过程

总结

让数据能够更好的拟合模型,更便于计算,减少计算量(需要具体问题具体分析)

方法

  1. 对数变换
  2. 标准缩放
  3. 转换数据类型
  4. 独热编码(One-hot)
  5. 标签编码(Label)

打卡作业

作业问题

  1. 读取文件,显示五行
  2. pandas中的两种数据结构
  3. pandas的可视化函数
  4. pearson系数为什么可以用来衡量数据之间的相关性
  5. 如何利用pandas来显示数据信息

作业回答

1. 读取文件

    # 读取train文件
    train = pd.read_csv("train.csv")
    # 显示后五行,前五行为train.head()    
    train.tail()

2. 两种数据结构

  • Series
    Series是一种一维的存储数据的对象,由一组数据(Values)+数据标签(index)组成

Series

并且数据和标签都可以自行定义,且可以不是数值(说白了数据和标签之间是映射关系)

# 可以放入一个数组,也可以指定索引
ser1 = pd.Series([1,2,3])
ser2 = pd.Series([1,2,3],index=['a','b','c'])	#index参数默认为整数型,可修改
ser1		    # 查看内容,一般是一列索引一列数据,下面是数据的类型
ser1.values		# 查看数据
ser1.index		# 查看索引(范围)
ser2['d'] = 4	 # 添加一个数据和其索引

# 索引用法
'b' in ser2			# 查看b是否在ser2中,返回boolean类型
x = {'e': 100, 'f':101, 'g':102, 'h':103}
y = pd.Series(x)	# 其他用法,将字典转换为Serises型
s = {'e', 'g', 'h'}
z = pd.Series(x, index=s)
y + z				# Series会对其索引进行算术运算,没对齐的都是NaN

# 其他用法
x = {'e': 100, 'f':101, 'g':102}
ser3 = pd.Series(x) # 将字典转换为Serises型
# Series本身和索引都有name属性
ser3.name='mmp'
ser3.index.name='mmpo'
  • DataFrame

    DataFrame是一种二维的存储数据的对象,它的索引有行(index)列(columns,相当于name)

DataFrame

3. pandas中的可视化函数

.plot()方法

plot()方法可以生成Series和DataFrame的线型图,DataFrame中还会自己创建图例

参数

​ 1. 线型图

​ None

​ 2. 柱状图

kind='bar'垂直柱状图

kind='barh'水平柱状图

​ ax 指定在某个子图上作图

​ stacked=True 生成堆积柱状图

​ 3. 密度图

kind='kde' 密度图


.hist()方法

对频率进行离散化,生成直方图


.scatter()方法

传入X, Y轴,生成散点图

4. pearson系数为什么可以用来衡量数据之间的相关性

样本点估计pearson相关系数公式如下

r = 1 n − 1 ∑ i = 1 n ( X i − X ‾ σ X ) ( Y i − Y ‾ σ Y ) r=\frac{1}{n-1} \sum_{i=1}^{n}\left(\frac{X_{i}-\overline{X}}{\sigma_{X}}\right)\left(\frac{Y_{i}-\overline{Y}}{\sigma_{Y}}\right) r=n11i=1n(σXXiX)(σYYiY)

原公式就是二者协方差除以二者标准差之积

pearson

协方差是X,Y的值分别与其期望的差 的乘积的期望,衡量的是它们与平均值的距离的期望,反应了它们的正负相关,但是在数据比较分散的时候单纯的协方差并不能很好地反映X,Y的相关度,很多时候协方差看起来还是比较大,但实际相关度比较小,所以需要引入它们的标准差,标准差衡量的是它们的分散程度,两者的商就能平衡掉数据分散带来的影响

图引用自JasonCcccc博客 https://blog.csdn.net/ichuzhen/article/details/79535226

5. 如何利用pandas来显示数据信息

# 简单查看数据
dataframe.head()
# 数据维度
dataframe.shape
# 属性和类型
dataframe.dtypes
# 统计性描述
dataframe.describe()
# 数据分组分布
print(data.groupby('class').size())
# 数据属性相关性
print(data.corr(method='pearson'))
# pearson相关系数
dataframe.corr(method='pearson')
# 偏度
data.skew()
# 峰度
data.kurt()

引用自李威威博客 https://blog.csdn.net/lw_power/article/details/83180900

;