python数据分析之数据处理(三步骤)

在数据加载完毕之后,就需要进行数据分析的下一步--即数据处理。而数据处理分为三个步骤:数据准备、数据分组、数据转换。

一:数据准备

  数据准备就是在加载的多个不同的数据结构(如Series、DataFrame)之上,把数据转换为统一的数据结构。--分为多个步骤:组装(合并、拼接、组合)、变型(轴向旋转)、删除。

  合并:

使用一个或多个键,将多行数据连接在一起。执行合并操作的函数为merge()。

import numpy as np
import  pandas as pd

frame=pd.DataFrame({'a':[1,2,3,4],'b':[2,3,4,5],'c':[6,7,8,9]})
frame1=pd.DataFrame({'a':[2,4,7,9],'b':[2,0,2,33],'f':[1,1,4,5]})
#合并(内连接)
so=pd.merge(frame,frame1,on='a')
print(so)
#外连接
so1=pd.merge(frame,frame1,on='a',how='outer')
print(so1)
   a  b_x  c  b_y  f
0  2    3  7    2  1
1  4    5  9    0  1
   a  b_x    c   b_y    f
0  1  2.0  6.0   NaN  NaN
1  2  3.0  7.0   2.0  1.0
2  3  4.0  8.0   NaN  NaN
3  4  5.0  9.0   0.0  1.0
4  7  NaN  NaN   2.0  4.0
5  9  NaN  NaN  33.0  5.0
import numpy as np
import  pandas as pd

frame=pd.DataFrame({'a':[1,2,3,4],'b':[2,3,4,5],'c':[6,7,8,9]})
frame1=pd.DataFrame({'a':[2,4,7,9],'b':[2,0,2,33],'f':[1,1,4,5]})
#合并(左连接)
so=pd.merge(frame,frame1,on='a',how='left')
print(so)
#右连接
so1=pd.merge(frame,frame1,on='a',how='right')
print(so1)
   a  b_x  c  b_y    f
0  1    2  6  NaN  NaN
1  2    3  7  2.0  1.0
2  3    4  8  NaN  NaN
3  4    5  9  0.0  1.0
   a  b_x    c  b_y  f
0  2  3.0  7.0    2  1
1  4  5.0  9.0    0  1
2  7  NaN  NaN    2  4
3  9  NaN  NaN   33  5
import numpy as np
import  pandas as pd

frame=pd.DataFrame({'a':[1,2,3,4],'b':[2,3,4,5],'c':[6,7,8,9]})
frame1=pd.DataFrame({'a':[2,4,7,9],'b':[2,0,2,33],'f':[1,1,4,5]})
#合并(多个键作为合并的标准)
so=pd.merge(frame,frame1,on=['a','b'],how='outer')
print(so)
   a   b    c    f
0  1   2  6.0  NaN
1  2   3  7.0  NaN
2  3   4  8.0  NaN
3  4   5  9.0  NaN
4  2   2  NaN  1.0
5  4   0  NaN  1.0
6  7   2  NaN  4.0
7  9  33  NaN  5.0
import numpy as np
import  pandas as pd

frame=pd.DataFrame({'a':[1,2,3,4],'b':[2,3,4,5],'c':[6,7,8,9]})
frame1=pd.DataFrame({'a1':[2,4,7,9],'b1':[2,0,2,33],'f':[1,1,4,5]})
#合并(按照索引合并)--不是以列进行合并
so=frame.join(frame1)
print(so)
   a  b  c  a1  b1  f
0  1  2  6   2   2  1
1  2  3  7   4   0  1
2  3  4  8   7   2  4
3  4  5  9   9  33  5

  拼接:

将数据结构按照x轴或y轴进行拼接。拼接所用的函数为concat()。

import numpy as np
import  pandas as pd

frame=pd.DataFrame({'a':[1,2,3,4],'b':[2,3,4,5],'c':[6,7,8,9]})
frame1=pd.DataFrame({'a1':[2,4,7,9],'b1':[2,0,2,33],'f':[1,1,4,5]})

se1=pd.Series(np.random.rand(4),index=[1,2,3,4])
se2=pd.Series(np.random.rand(4),index=[5,6,7,8])
#连接两个Series对象(返回一个Series对象)
so=pd.concat([se1,se2],axis=0)
print(so)
#连接两个Series对象(返回一个DataFrame对象)
so1=pd.concat([se1,se2],axis=1)
print(so1)
1    0.760366
2    0.946837
3    0.762230
4    0.817649
5    0.550010
6    0.370044
7    0.348296
8    0.862112
dtype: float64
          0         1
1  0.760366       NaN
2  0.946837       NaN
3  0.762230       NaN
4  0.817649       NaN
5       NaN  0.550010
6       NaN  0.370044
7       NaN  0.348296
8       NaN  0.862112
import numpy as np
import  pandas as pd

frame=pd.DataFrame({'a':[1,2,3,4],'b':[2,3,4,5],'c':[6,7,8,9]})
frame1=pd.DataFrame({'a1':[2,4,7,9],'b1':[2,0,2,33],'f&
  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值