Pandas学习笔记(二)

Pandas学习笔记(二)

处理丢失数据

删除

         a         b         c         d   f
0  0.11374 -0.432719  0.252386  0.959131 NaN
1 -1.00000  0.103311       NaN -0.246855 NaN
2 -1.00000  0.785828       NaN  0.929142 NaN
a.dropna(axis=1)#如果在某一列中有nan就将这一列丢掉
Out:
         a         b         d
0  0.11374 -0.432719  0.959131
1 -1.00000  0.103311 -0.246855
2 -1.00000  0.785828  0.929142
#a.dropna(axis = 1,how={'any','all'}) 如果某一列全部为nan则才丢掉

填补

a.fillna(value = 0)
         a         b    c         d    f
0  0.11374 -0.432719  0.0  0.959131  0.0
1 -1.00000  0.103311  0.0 -0.246855  0.0
2 -1.00000  0.785828  0.0  0.929142  0.0

判断

         a         b   c         d   f
0  0.11374 -0.432719 NaN  0.959131 NaN
1 -1.00000  0.103311 NaN -0.246855 NaN
2 -1.00000  0.785828 NaN  0.929142 NaN

a.isnull()
       a      b     c      d     f
0  False  False  True  False  True
1  False  False  True  False  True
2  False  False  True  False  True
#这样看True or False可能会很麻烦,我们可以通过在后面加入判断来更明显的展示是否有nan
np.any(a.isnull())==True


导入与导出

数据存储的时候可以通过 csv的格式进行存储

导入csv数据

#先使用os的一个获取当前目录的脚本
import os
home_path = os.path.dirname(os.path.abspath('__file__'))
#然后再进行导入csv文件
data=pd.read_csv('simple_expamle.csv')

文件格式转换

#在现有的csv格式文件的前提下转换成pickle文件
data,to_pickle('student.pickle')

以csv格式保存文件

# 存储数据,Windows下的存储路径与Linux并不相同
if ox.name == "nt":

​	data.to_csv("%s\\simple_example.csv" %home_path,index=False)#如果系统是WINDOWS系统则用以下目录格式保存为csv文件

else:

data.to_csv("%s/simple_example.csv" % home_path, index=False)#以Linux格式存储
    visualize_data(data)

concatenating 合并DataFrame

#创建三个DataFrame
     a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0   
a    b    c    d
0  1.0  1.0  1.0  1.0
1  1.0  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0   
a    b    c    d
0  2.0  2.0  2.0  2.0
1  2.0  2.0  2.0  2.0
2  2.0  2.0  2.0  2.0


#使用pd.concat合并进行竖向合并
res=pd.concat([a,b,c],axis=0)
Out:
   a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
0  1.0  1.0  1.0  1.0
1  1.0  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0
0  2.0  2.0  2.0  2.0
1  2.0  2.0  2.0  2.0

重新排序index

d = pd.concat([a,b,c],axis = 0,ignore_index= True)

Out[6]: 
     a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0
5  1.0  1.0  1.0  1.0
6  2.0  2.0  2.0  2.0
7  2.0  2.0  2.0  2.0

join

#'inner','outer'
#创建两个DataFrame
a = pd.DataFrame(np.ones((3,4))*0,columns = ['a','b','c','d'])

b = pd.DataFrame(np.ones((3,4))*1,columns = ['b','c','d','e'])
#两个DataFrame的columns不重合,我们将其合并后会讲空白部分使用Nan填充
#join = outer
c = pd.concat([a,b],sort=True)

c
Out[13]: 
     a    b    c    d    e
0  0.0  0.0  0.0  0.0  NaN
1  0.0  0.0  0.0  0.0  NaN
2  0.0  0.0  0.0  0.0  NaN
0  NaN  1.0  1.0  1.0  1.0
1  NaN  1.0  1.0  1.0  1.0
2  NaN  1.0  1.0  1.0  1.0
#这是默认的join的outer模式

#join= inner
d = pd.concat([a,b],join = 'inner')


Out[16]: 
     b    c    d
0  0.0  0.0  0.0
1  0.0  0.0  0.0
2  0.0  0.0  0.0
0  1.0  1.0  1.0
1  1.0  1.0  1.0
2  1.0  1.0  1.0
# 裁剪相同的部分

reindex

#先创建一个index不同的DataFrame
e = pd.DataFrame(np.ones((3,4))*2,columns = ['a','b','c','d'],index= [2,3,4])
e
Out[23]: 
     a    b    c    d
2  2.0  2.0  2.0  2.0
3  2.0  2.0  2.0  2.0
4  2.0  2.0  2.0  2.0
#横向合并
res = pd.concat([a,e],axis = 1).reindex(a.index)

res
Out[31]: 
     a    b    c    d    a    b    c    d
0  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN
1  0.0  0.0  0.0  0.0  NaN  NaN  NaN  NaN
2  0.0  0.0  0.0  0.0  2.0  2.0  2.0  2.0
#保留a的index,e没有的index的那一排数列使用NaN填充

append

#append效果与pd.concat([a,b],axis=0,ignore_index = True)效果相似
a
Out[40]: 
     a    b    c    d
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
b
Out[41]: 
     b    c    d    e
0  1.0  1.0  1.0  1.0
1  1.0  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0
result=a.append(b,ignore_index=True,sort = False)
result
Out:
         a    b    c    d    e
0  0.0  0.0  0.0  0.0  NaN
1  0.0  0.0  0.0  0.0  NaN
2  0.0  0.0  0.0  0.0  NaN
3  NaN  1.0  1.0  1.0  1.0
4  NaN  1.0  1.0  1.0  1.0
5  NaN  1.0  1.0  1.0  1.0
如果想合并多个DataFrame则可以在b处加个列表
result=a.append([c,b],ignore_index=True,sort = False)


#使用appen单独添加一列
list = pd.Series([1,2,3,4],index=['a','b','c','d'])
res = result.append(list,ignore_index=True)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值