数据分析工具Pandas(3):Pandas的对齐运算

举报
DrugAI 发表于 2021/07/15 03:26:21 2021/07/15
【摘要】 数据分析工具Pandas(1):Pandas的数据结构 数据分析工具Pandas(2):Pandas的索引操作 数据分析工具Pandas(3):Pandas的对齐运算 Pandas的对齐运算 是数据清洗的重要过程,可以按索引对齐进行运算,如果没对齐的位置则补NaN,最后也可以填充NaN Series的对齐运算 1. Series 按行、索引对齐 &nb...

数据分析工具Pandas(1):Pandas的数据结构

数据分析工具Pandas(2):Pandas的索引操作

数据分析工具Pandas(3):Pandas的对齐运算

Pandas的对齐运算

是数据清洗的重要过程,可以按索引对齐进行运算,如果没对齐的位置则补NaN,最后也可以填充NaN

Series的对齐运算

1. Series 按行、索引对齐

 


  
  1. s1 = pd.Series(range(10, 20), index = range(10))
  2. s2 = pd.Series(range(20, 25), index = range(5))
  3. print('s1: ' )
  4. print(s1)
  5. print('')
  6. print('s2: ')
  7. print(s2)

运行结果:


  
  1. s1:
  2. 0 10
  3. 1 11
  4. 2 12
  5. 3 13
  6. 4 14
  7. 5 15
  8. 6 16
  9. 7 17
  10. 8 18
  11. 9 19
  12. dtype: int64
  13. s2:
  14. 0 20
  15. 1 21
  16. 2 22
  17. 3 23
  18. 4 24
  19. dtype: int64

2. Series的对齐运算

 


  
  1. # Series 对齐运算
  2. s1 + s2

运行结果:


  
  1. 0 30.0
  2. 1 32.0
  3. 2 34.0
  4. 3 36.0
  5. 4 38.0
  6. 5 NaN
  7. 6 NaN
  8. 7 NaN
  9. 8 NaN
  10. 9 NaN
  11. dtype: float64

DataFrame的对齐运算

1. DataFrame按行、列索引对齐

 


  
  1. df1 = pd.DataFrame(np.ones((2,2)), columns = ['a', 'b'])
  2. df2 = pd.DataFrame(np.ones((3,3)), columns = ['a', 'b', 'c'])
  3. print('df1: ')
  4. print(df1)
  5. print('')
  6. print('df2: ')
  7. print(df2)

运行结果:


  
  1. df1:
  2. a b
  3. 0 1.0 1.0
  4. 1 1.0 1.0
  5. df2:
  6. a b c
  7. 0 1.0 1.0 1.0
  8. 1 1.0 1.0 1.0
  9. 2 1.0 1.0 1.0

2. DataFrame的对齐运算

 


  
  1. # DataFrame对齐操作
  2. df1 + df2

运行结果:


  
  1. a b c
  2. 0 2.0 2.0 NaN
  3. 1 2.0 2.0 NaN
  4. 2 NaN NaN NaN

填充未对齐的数据进行运算

1. fill_value

使用addsubdivmul的同时,

通过fill_value指定填充值,未对齐的数据将和填充值做运算

 


  
  1. print(s1)
  2. print(s2)
  3. s1.add(s2, fill_value = -1)
  4. print(df1)
  5. print(df2)
  6. df1.sub(df2, fill_value = 2.)

运行结果:


  
  1. # print(s1)
  2. 0 10
  3. 1 11
  4. 2 12
  5. 3 13
  6. 4 14
  7. 5 15
  8. 6 16
  9. 7 17
  10. 8 18
  11. 9 19
  12. dtype: int64
  13. # print(s2)
  14. 0 20
  15. 1 21
  16. 2 22
  17. 3 23
  18. 4 24
  19. dtype: int64
  20. # s1.add(s2, fill_value = -1)
  21. 0 30.0
  22. 1 32.0
  23. 2 34.0
  24. 3 36.0
  25. 4 38.0
  26. 5 14.0
  27. 6 15.0
  28. 7 16.0
  29. 8 17.0
  30. 9 18.0
  31. dtype: float64
  32. # print(df1)
  33. a b
  34. 0 1.0 1.0
  35. 1 1.0 1.0
  36. # print(df2)
  37. a b c
  38. 0 1.0 1.0 1.0
  39. 1 1.0 1.0 1.0
  40. 2 1.0 1.0 1.0
  41. # df1.sub(df2, fill_value = 2.)
  42. a b c
  43. 0 0.0 0.0 1.0
  44. 1 0.0 0.0 1.0
  45. 2 1.0 1.0 1.0

参考资料

 

文章来源: drugai.blog.csdn.net,作者:DrugAI,版权归原作者所有,如需转载,请联系作者。

原文链接:drugai.blog.csdn.net/article/details/104285978

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。