pandas 数据清洗步骤
拿到数据之后,第一步是什么?
加载数据到pandas,查看数据结构。data.head(),data.info, data.shape().
第二步,处理空值
处理空值第一步,先查看空值的结构。 data.isnull().sum()
根据数据分析的需要,如果空值所在数据行有修复可能和保存必要,就去修复(比如 填充前后行的数据,用均值填充等)
如果没有保留必要,就删除空值所在数据行data.dropna(axis=0,inplace=True), data,reset_index(drop=True,inplace=True)
处理重复值
data.drop_duplicates(inplace=True), data.reset_index(drop=True,inplace=True)
第三步, 转换字段类型
通常是时间类型的数据需要转换,通常我们日期时间加载到Pandas之后会以int,或者str类型存在
real_time = []
for i in data[\'time\']:
timeArray = time.localtime(i):
otherStyleTime = time.strftime(\'%Y-%m-%d %H:%M:%S\',timeArray)
real_time.append(otherStyleTime)
data[\'real_time\'] = real_time
data.drop(labels=\'time\',inplace=True,axis=1)
data[\'real_time\'] = pd.to_datetime(data[\'real_time\'])
时间类中既有日期也有具体的时分秒,有时候我们需要将日期和时间分开 方便统计。
data[\'H\'] = data.real_time.dt.hour # real_time 必须是时间格式才能调用dt
data[\'date\'] = data.real_time.dt.date
data[\'date\'] = data.date.astype(\'str\')
对于有时间日期参与的数据分析,我们可以查看时间的格式,如果只有某几个时间不连续,我们可以删除这些差异值
data.date.unique() # 查看日期,差异非常大的日期值 我们删除掉
只有一个时间是2月份的,其它都是连续的日期
data.drop(labels = data.loc[\'data.date = \'2067-02-21\'].index,inplace = True)
data.reset_index(drop=True,inplace = True)
data.shape()