12.6周总结
1. 学习Python的DataFrame模块性质,以及如何运用DataFrame进行数据清洗
2. 600行
3. 8h
二 DataFrame的性质
2.1 索引、切片
# 数据集
data = {
'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
'year':[2000,2001,2002,2001,2002],
'pop':[1.5,1.7,3.6,2.4,2.9]
}
frame2 = pd.DataFrame(data,index=['one','two','three','four','five'],columns=['year','state','pop','debt'])
# 返回一列数据
frame2['year']
# 返回多列多行 (返回两行)
frame2[['two','three']]
#取行 (第一到第二条数据)
frame2[:2]
# 逻辑判断 ()
frame2[frame2['year']>2001]
2.2 返回行数,列数
返回列数:
df.shape[1]
返回行数:
df.shape[0]
2.3 排序
#按照任意一列或多列进行排序
frame.sort_values(by=['a','b'])
#输出
d a b c
three 0 1 2 3
one 4 5 6 7
三 数据清洗
3.1 去重
data.duplicated() #标记出哪些是重复的(true)
data.drop_duplicates() #直接将重复删除,默认保留第一条
3.2 处理缺失数据
-
isnull方法用于判断数据是否为空数据;
-
fillna方法用于填补缺失数据;
-
dropna方法用于舍弃缺失数据。
data.dropna() # 默认为整行删除
data.dropna(how='all',axis=1,inplace=True) # how=all,是当整行全是na的时候才进行删除
data.fillna({1:2,2:3}) #第二列全部替换为2, 第三列全部替换为3
3.3 异常值检测
(1) 通过逻辑判断来检测数据情况
frame2[frame2['year']>2001]
(2) 把异常的数据替换成0
# 将age的6、158替换成缺失
data_noDup['Age'].replace([158, 6], np.nan)
# 将package的-9替换成0
data_noDup['Package'].replace(-9, 0)