Pandas之数据清洗
前面我们用pandas做了一些基本的操作,接下来进一步了解数据的操作,
数据合并
在pandas中可以通过merge对数据进行合并操作。
1 2 3 4 5 6 7 8 |
import numpy as np import pandas as pd data1 = pd.DataFrame({'level':['a','b','c','d'], 'numeber':[1,3,5,7]})
data2=pd.DataFrame({'level':['a','b','c','e'], 'numeber':[2,3,6,10]}) print(data1) |
结果为:
1 |
print(data2) |
结果为:
1 |
print(pd.merge(data1,data2)) |
结果为:
1 2 3 4 5 |
data3 = pd.DataFrame({'level1':['a','b','c','d'], 'numeber1':[1,3,5,7]}) data4=pd.DataFrame({'level2':['a','b','c','e'], 'numeber2':[2,3,6,10]}) print(pd.merge(data3,data4,left_on='level1',right_on='level2')) |
结果为:
1 |
print(pd.merge(data3,data4,left_on='level1',right_on='level2',how='left')) |
结果为:
其他详细参数说明
重叠数据合并
有时候我们会遇到重叠数据需要进行合并处理,此时可以用comebine_first函数。
1 2 3 4 5 |
data3 = pd.DataFrame({'level':['a','b','c','d'], 'numeber1':[1,3,5,np.nan]}) data4=pd.DataFrame({'level':['a','b','c','e'], 'numeber2':[2,np.nan,6,10]}) print(data3.combine_first(data4)) |
结果为:
数据重塑和轴向旋转
这个内容我们在上一篇pandas文章有提到过。数据重塑主要使用reshape函数,旋转主要使用unstack和stack两个函数。
1 2 3 4 |
data=pd.DataFrame(np.arange(12).reshape(3,4), columns=['a','b','c','d'], index=['wang','li','zhang']) print(data) |
结果为:
1 |
print(data.unstack()) |
结果为:
数据转换
删除重复行数据
1 2 3 |
data=pd.DataFrame({'a':[1,3,3,4], 'b':[1,3,3,5]}) print(data) |
结果为:
1 |
print(data.duplicated()) |
结果为:
1 |
print(data.drop_duplicates()) |
结果为:
替换值
除了使用我们上一篇文章中提到的fillna的方法外,还可以用replace方法,而且更简单快捷
1 2 3 |
data=pd.DataFrame({'a':[1,3,3,4], 'b':[1,3,3,5]}) print(data.replace(1,2)) |
结果为:
1 |
print(data.replace([1,4],np.nan)) |
数据分段
1 2 3 4 |
data=[11,15,18,20,25,26,27,24] bins=[15,20,25] print(data) print(pd.cut(data,bins)) |
结果为:
可以看出分段后的结果,不在分段内的数据显示为na值,其他则显示数据所在的分段。
1 |
print(pd.cut(data,bins).labels) |
结果为:
1 |
print(pd.cut(data,bins).levels) |
结果为:
1 |
print(value_counts(pd.cut(data,bins))) |
结果为:
此外还有一个qcut的函数可以对数据进行4分位切割,用法和cut类似。
排列和采样
我们知道排序的方法有好几个,比如sort,order,rank等函数都能对数据进行排序
1 2 |
data=np.random.permutation(5) print(data) |
结果为:
1 2 3 |
df=pd.DataFrame(np.arange(12).reshape(4,3)) samp=np.random.permutation(3) print(df) |
结果为:
print(samp)
print(df.take(samp))
今天就到这里吧~
听说有气质的人都会关注这个公众号!
文章来源: blog.csdn.net,作者:敲代码的灰太狼,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/tongtongjing1765/article/details/100581668
- 点赞
- 收藏
- 关注作者
评论(0)