ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

3-3 Pandas的对齐运算

2021-11-28 19:30:17  阅读:168  来源: 互联网

标签:运算 结果 NaN df1 DataFrame s2 print 对齐 Pandas


数据分析工具pandas


Pandas是一个强大的分析结构化数据的工具集,基于NumPy构建,提供了 高级数据结构数据操作工具,它是使Python成为强大而高效的数据分析环境的重要因素之一
(1) 一个强大的分析和操作大型结构化数据集所需的工具集
(2) 基础是NumPy,提供了高性能矩阵的运算
(3) 提供了大量能够快速便捷地处理数据的函数和方法
(4)应用于数据挖掘,数据分析
(5)提供数据清洗功能

3. Pandas的对齐运算

3.1 算术运算和数据对其

import numpy as np
import pandas as pd

#Series
s1 = pd.Series(np.arange(4),index=['a','b','c','d'])
s2 = pd.Series(np.arange(5),index=['a','c','e','f','g'])
#结果为:
#a    0
#b    1
#c    2
#d    3
print(s1)
#结果为:
#a    0
#c    1
#e    2
#f    3
#g    4
print(s2)
#结果为:
#a    0.0
#b    NaN
#c    3.0
#d    NaN
#e    NaN
#f    NaN
#g    NaN
s1+s2

#DataFrame
df1 = pd.DataFrame(np.arange(12).reshape(4,3),index=['a','b','c','d'],columns=list('ABC'))
df2 = pd.DataFrame(np.arange(9).reshape(3,3),index=['a','d','f'],columns=list('ABD'))
#结果为:
#   A   B   C
#a  0   1   2
#b  3   4   5
#c  6   7   8
#d  9  10  11
print(df1)
#结果为:
#   A  B  D
#a  0  1  2
#d  3  4  5
#f  6  7  8
print(df2)
#结果为:
#    A	 B	 C	 D
#a	 0.0 2.0 NaN NaN
#b	 NaN NaN NaN NaN
#c	 NaN NaN NaN NaN
#d	12.0 14.0 NaN NaN
#f	 NaN NaN NaN NaN
df1+df2

3.2 使用填充值的算术方法

方法描述
add,radd加法(+)
sub,rsub减法(-)
div,rdiv除法(/)
floordiv,rfloordiv整除(//)
mul,rmul乘法(*)
pow,rpow幂次方(**)
#Series
#结果为:
#a    0
#b    1
#c    2
#d    3
print(s1)
#结果为:
#a    0
#c    1
#e    2
#f    3
#g    4
print(s2)
#结果为:(与s1+s2效果一致)
#a    0.0
#b    NaN
#c    3.0
#d    NaN
#e    NaN
#f    NaN
#g    NaN
print(s1+s2)
print(s1.add(s2))
#fill_value=0填充值为0
#结果为:
#a    0.0
#b    1.0
#c    3.0
#d    3.0
#e    2.0
#f    3.0
#g    4.0
s1.add(s2,fill_value=0)

#DataFrame
#结果为:
#	A   B   C
#a  0   1   2
#b  3   4   5
#c  6   7   8
#d  9  10  11
print(df1)
#结果为:
#   A  B  D
#a  0  1  2
#d  3  4  5
#f  6  7  8
print(df2)
#结果为:
#	  A     B   C   D
#a   0.0   2.0 NaN NaN
#b   NaN   NaN NaN NaN
#c   NaN   NaN NaN NaN
#d  12.0  14.0 NaN NaN
#f   NaN   NaN NaN NaN
print(df1+df2)
#结果为:
#    A	  B	   C    D
#a	0.0  2.0  2.0  2.0
#b	3.0	 4.0  5.0  NaN
#c	6.0	 7.0  8.0  NaN
#d	12.0 14.0 11.0 5.0
#f	6.0	 7.0  NaN  8.0
df1.add(df2,fill_value=0)

#字母r开头,表示会翻转参数
# 1/df1 与 df1.rdiv(1) 等价
#结果为:
#      A         B         C
#a       inf  1.000000  0.500000
#b  0.333333  0.250000  0.200000
#c  0.166667  0.142857  0.125000
#d  0.111111  0.100000  0.090909
print(1/df1)
#结果为:
#       A         B         C
#a       inf  1.000000  0.500000
#b  0.333333  0.250000  0.200000
#c  0.166667  0.142857  0.125000
#d  0.111111  0.100000  0.090909
print(df1.rdiv(1))

#在重新指定索引时也可利用fill_value参数对缺失值进行填充
#结果为:
#   A	B	D
#a	0	1	9
#b	3	4	9
#c	6	7	9
#d	9	10	9
df1.reindex(columns=df2.columns,fill_value=9)

3.3 DataFrame和Series混合运算

#DataFrame和Series混合运算
arr = np.arange(12).reshape(3,4)
#结果为:[0 1 2 3]
print(arr[0])
#广播机制 每一行都减去arr[0]
#结果为:
#[[0 0 0 0]
# [4 4 4 4]
# [8 8 8 8]]
print(arr-arr[0])

#对应列索引 依次对行操作
#结果为:
#   A   B   C
#a  0   1   2
#b  3   4   5
#c  6   7   8
#d  9  10  11
print(df1)
s3 = df1.iloc[0]
#结果为:
#A    0
#B    1
#C    2
print(s3)
#广播机制 Series的索引匹配DataFrame的列索引 沿着行依次向下广播执行对应操作
#结果为:
#   A  B  C
#a  0  0  0
#b  3  3  3
#c  6  6  6
#d  9  9  9
print(df1-s3)

#对应行索引 依次对列操作
#取出df1中A列数据
s4 = df1['A']
#结果为:
#a    0
#b    3
#c    6
#d    9
print(s4)
#设置axis='index'参数后沿着列进行广播执行对应操作(axis='index'等价于axis=0)
#结果为:
#	A	B	C
#a	0	1	2
#b	0	1	2
#c	0	1	2
#d	0	1	2
df1.sub(s4,axis='index')

标签:运算,结果,NaN,df1,DataFrame,s2,print,对齐,Pandas
来源: https://blog.csdn.net/zkx990121/article/details/121584862

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有