Python数据分析基础步骤
1.提出问题
2.理解数据
3.数据清洗
4.构建模型
5.数据可视化
数据清洗从名字上也看的出就是把“脏”的“洗掉”,指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。因为数据仓库中的数据是面向某一主题的数据的集合,这些数据从多个业务系统中抽取而来而且包含历史数据,这样就避免不了有的数据是错误数据、有的数据相互之间有冲突,这些错误的或有冲突的数据显然是我们不想要的,称为“脏数据”。我们要按照一定的规则把“脏数据”“洗掉”,这就是数据清洗。读取数据:
在数据清洗开始之前,我们需要先读取数据集:
为方便之后的数据清洗,在读取数据时可以先将所有数据的数据类型全都更改为字符串类型。数据清洗:
数据清洗可分为:
- 选择子集
- 列名重命名
- 缺失数据处理
- 数据类型转换
- 数据排序
- 异常值处理
通过以上这六个步骤,我们才能拿到有价值的数据。选择子集&列名重命名&缺失数据处理:
DataFrame.dropna()函数可以去除空值所在的行或列,该函数含有很多参数。
其中,参数how可以等于'any'或'all',当how='any'时,只要存在空值,就去除空值所在的行或列;当how='all'时,只有当该行或该列全为空值时才会去除;
参数subset='column name'表示删除该列中存在空值的行。数据类型转换:
在这里主要设计两部分数据类型转换,第一个是销售数量,应收金额,实收金额这三列数据的数据类型转换为float类型;第二个是将销售时间转换为datetime类型并只保留表示年月日时间的这一部分。
在第一部分中,用到了.astype()方法:
salesDf['销售数量'] = salesDf['销售数量'].astype('float')
即可将该列的数据类型转换为float类型。
在第二部分中,首先需要将年月日与星期分开:
#获取销售时间这一列 timeCols = salesDf.loc[:,'销售时间'] #timeCols为Series类型且可以使用for循环 #获取该列中的日期数据 dateStr = [] for value in timeCols: dateStr.append(value.split(' ')[0]) #此时的DateStr就是我们需要的日期列了,接着我们需啊将列表类型转换为Series类型 dateSer = pd.Series(dateStr) #最后,我们只需要将dateSer放入salesDf中即可 salesDf.loc[:,'销售时间'] = dateSer
此时的列表如上图所示,接着我们需要将销售时间这一列改为datetime类型
salesDf.loc[:,'销售时间']=pd.to_datetime(salesDf.loc[:,'销售时间'],format='%Y-%m-%d', errors='coerce')
数据排序:
这里使用了sort_values()函数,参数有by,ascending,na_position
by表示按哪几列排序
ascending=True时表示升序排列,ascending=False时表示将序排列
naposition='first'时表示排序时将空值放在最前面,na_position='last'时表示将空值放在最后面
但此时,经过排序后索引值被打乱了,所以我们对索引重新排序。
删除异常值:
由上图的描述统计信息可以看到min是负数,这是不可能的,所以我们需要去除异常值所在的行。
#找出正常值所在列 querySer = salesDf.loc[:,'销售数量']>0 #去除异常值 salesDf = salesDf.loc[querySer,:]构建模型: