python对比两列数据的不同,python pandas数据分析
在家为国家做贡献没意思。你最好跟我学Python。
对了,你喜欢什么文章封面?总用这个感觉有点丑。
人生苦短,我用Python
上方门户:
学习Python数据分析(1):数据分析的基础
学习Python数据分析(2)熊猫:概述
首先,引言介绍了熊猫的数据结构。毕竟数据结构是一切的基础。
Pandas有两种主要的数据结构:序列和数据帧。本文介绍第一个系列。
先导入模块,把熊猫和Numpy引入代码。如下图。
importnumpyasnpimportpandaapseries可以很容易理解为一维数组,用来存储整数、浮点数、字符串、Python对象等数据。
这个概念类似于Java的集合。
如果不能理解,请看下图。(Excel很好画,灵魂的画师登场)。
这里的数据就是上面的数据类型,不限于图中的整数。
如果没有指定索引值,将自动创建一个从0开始的数字类型的索引。比如0,1,2,3…Len(数据)- 1。
创建系列。使用pd在这里创建。系列功能:
S=PD.series(NP.random.rand) 5,index=[a , b , c , d , e]) print (s (s (s) print) s.s
a 0.218164 b 0.153201 c 0.572437d 0.142784 e 0.710664d类型:float 64 index ([ a , b , c , d , e]),d类型= object )0.25554545如果未指定,则直接使用数字索引。
如果手动指定注意:索引,索引长度必须与数据长度一致。如果不匹配,将引发ValueError异常,如下所示:
S=PD.series(NP.random.rand) 6,index=[a , b , c , d , e])异常部分:
错误3360 lengthoffpassed传递的值6,索引含义5字典实例化系列可以由字典实例化。比如如下图。
D={b: 1, a: 0, c:2}S2=PD.series(d) print) S2)结果如下:
使用数据为b 1a 0 c 2d type:int 64http://www.Sina.com/dictionary.如果没有设置索引参数,则为Python版本=3.6,Pandas版本=0.23。在Python 3.6或Pandas 0.23上,如果没有设置index参数,Series将按字母顺序对字典的键列表进行排序。
在上面的例子中,对于当前环境Python 3.6或Pandas 0.23,Series按字母顺序排序,而不是按当前字典顺序,输出结果是[a , b , c]。
另外,用字典创建数据时,设置索引也会根据索引提取数据中对应的值。如果数据中没有对应的索引,将使用NaN来表示缺失的数据。例如:
S3=PD.series(d,index=[b , c , d , a]) print) S3)结果如下:
1.0c 2.0 dnana 0.0 type:float 64标量值实例化数据也支持标量值的实例化。如果数据是标量值,则必须在实例化Series时指定索引。Series根据索引的长度重复此标量值。如下图。
S4=PD.series(5.index=[a , b , c , d , e]) print) S4)结果如下:
5.0b 5.0 c 5.0d 5.0e 5.0 type:基于浮动64索引打印(s [0])打印(s [:3])打印)s [s (SG)]]的操作方法
t;S.median()])print(s[[4,3,1]])结果如下:
0.481205137399224 a 0.481205 b 0.045604 c 0.108321d类型:Float64d 0.495208 e 0.817171d类型:float 64e 0.817171d 0.495208 b 0.045604d类型:float 64同时,Series还支持索引标签。
Print (s [a]) s [e]=12。打印结果如下:
0.481205137399224 a 0.481205 b 0.045604 c 0.108321d 0.495208 e 12.00000 type:float 64如果直接使用不在序列中的索引标签,将会引发KeyError异常:
# throw KeyError异常# print(s[f])我们可以通过in来判断当前序列是否包含索引标签,如下:
打印(s中的 e )打印(s中的 f )结果如下:
True您可以通过get方法获得系列没有的索引标签,并且可以设置返回的默认值:
print(s . get( f )print(s . get( f ,np.nan))结果如下:
Nan常用方法# Print e的幂,e是2.71828的常数Print(NP . exp(s))# Print s中每个元素的根(NP . sqrt(s))Print(s . dtype)Print(s . array)Print(s . to _ numpy())。结果如下:
a 1.618023 b 1.046659 c 1.114406d 1.640840 e 2.264085d类型:float 64a 0.693699 b 0.213555 c 0.329122d 0.7037711 e 0.903975d类型:float 64 float 64 panda sarray[0.4 8120513939.24,0.04 . 39224
注意:系列之间的操作将根据标签自动对齐数据。
Print(s[1:] s[:-1])结果如下:
nanb 0.091207 c 0.216642d 0.990417 e NAND类型:Float64对索引未对齐的序列进行运算,其计算结果是所涉及的所有索引的并集。如果在序列中找不到标签,则运算结果标记为NaN,即缺失值。
名称系列支持名称属性,我们可以给自己定义的系列起一个自己喜欢的名称:
S5=pd.series (np.random.randn (5),name= my _ series )print(S5)print(S5 . name)print(ID(S5))结果如下:
0.4914501 0.9399652 0.8684373-0.0995754 1.866875名称:my _ series,dtype:float 64 my _ series 1492397351368这里,边肖方便地使用id方法打印s5的内存地址。
类似地,Series为我们提供了重命名方法rename():
#重命名系列S6=S5。重命名( my _ series _ different )print(ID(S6)),结果如下:
1923973513680 0.4914501 0.9399652 0.8684373-0.0995754 1.866875名称:my _ Series _ different,dtype: float 641492400065800比较这两个s5和s6,可以看到这两个系列的数据内容相同,名称
不过有一点需要注意:s5和s6是两个不同的对象,这里打印的不同内存地址也说明了这一点。实际上,这里并没有修改s5的名称,而是创建了一个新对象并使用了新的name属性。
和往常一样,为了方便起见,所有的示例代码都将上传到代码管理仓库Github和Gitee。
示例-Github
示例-Gitee
参考https://www.pypandas.cn/docs/getting_started/dsintro.html
您的扫码关注是对边肖坚持原创的最大鼓励:)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。