接上:深度学习入门 之 Pandas学习笔记(一)
上个笔记主要学习的内容是pandas对数据的选择和修改 *** 作。
这篇笔记将介绍pandas对数据处理的一些方法。
目录
一、 Pandas处理丢失数据
1.1 丢失非数据行(nan)【dropna()】
1.2 给nan数据填充值 【fillna()】
1.3 判断是否含nan 【isnull()针对单个数据、np.any(t.isnull())针对整个数组】
二、 Pandas导入导出
2.1 数据读取
2.2 数据存储
三、 Pandas合并
3.1 concatenating方式
3.2 append方式
3.3 merge方式
一、 Pandas处理丢失数据 1.1 丢失非数据行(nan)【dropna()】
axis=0表示对行选择丢失,axis=1表示对列选择丢失。
how='any'表示只要行或列中有一个nan则丢失该行或者该列。
how='all'表示要满足行或列所有数据均为nan才丢弃。
test1 = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [0, np.nan, 3, 7],
'C': [4, 6, np.nan, 9]})
print (test1)
# 丢掉含有nan的行 (含一个就丢)
print (test1.dropna())
# 所有均为nan才会丢 axis默认为0
print (test1.dropna(axis=0, how='all'))
# 丢掉含有nan的列 (含一个就丢)
print (test1.dropna(axis=1))
# 一列中所有均为nan才会丢
print (test1.dropna(axis=1, how='all'))
1.2 给nan数据填充值 【fillna()】
value参数可以指定赋值内容。
test1 = pd.DataFrame({'A': [1, 2, 3, 4],
'B': [0, np.nan, 3, 7],
'C': [4, 6, np.nan, 9]})
print (test1)
# 给数值为nan的元素重新赋值
print (test1.fillna(value=999))
1.3 判断是否含nan 【isnull()针对单个数据、np.any(t.isnull())针对整个数组】
# 判断nan 输出数组 每个数据都true or false
print (test1.isnull())
# 针对整个数组 最终输出 true or false
print (np.any(test1.isnull()))
二、 Pandas导入导出 2.1 数据读取
可读取多种类型文件。
可视化处理数据的话建议CSV格式,因为可以使用excel打开……
2.2 数据存储对应也可存储多种类型文件。
三、 Pandas合并 3.1 concatenating方式
可横向可竖向,可inner可outer
竖着排序会出现a b c d e五列,对于不存在的数会用nan填充。
水平横着排序直接a b c d b c d e列序号。
另外还有join、join_axes参数,其中join可以取inner(仅保留相同列)和outer值。
join_axes可以指定以哪一个数组index为参照,不写的话默认每个数组都会考虑,取并集。
res = pd.concat([t1, t2], axis=1, join_axes=[t1.index])
t1 = pd.DataFrame(np.arange(12).reshape((3, 4)), columns=['a', 'b', 'c', 'd'])
t2 = pd.DataFrame(np.arange(12, 24).reshape((3, 4)), columns=['b', 'c', 'd', 'e'])
print (t1)
print (t2)
# 按行合并 竖着合并
res = pd.concat([t1, t2], axis=0, ignore_index=True)
print (res)
# 按列合并 横着合并
res = pd.concat([t1, t2], axis=1)
print (res)
3.2 append方式
只能竖向且column有要求(一致)
# append合并 可一次性合并多个 column一致
res = t1.append([t1, t2], ignore_index=True)
print (res)
3.3 merge方式
可以on指定哪些列仅出现一次,并且给其他相同列名通过加后缀区分。
t1 = pd.DataFrame(np.arange(12).reshape((3, 4)), columns=['a', 'b', 'c', 'd'], index=['K0', 'K1', 'K2'])
t2 = pd.DataFrame(np.arange(1, 13).reshape((3, 4)), columns=['b', 'c', 'd', 'e'], index=['K1', 'K2', 'K3'])
print (t1)
print (t2)
# merge合并 默认inner 很像自然连接
res = pd.merge(t1, t2, on=['b', 'c', 'd'])
print (res)
# 借助indicator参数可在合并时不重名
res2 = pd.merge(t1, t2, on='b', suffixes=['_left', '_right'])
print (res2)
暂时完结~
推荐阅读:深度学习 之 Matplotlib学习笔记(一)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)