Pandas(Serises)

来源:互联网 发布:淘宝上买春药搜什么 编辑:程序博客网 时间:2024/06/05 14:55

导包

import pandas as pd

import numpy as np

from pandas import Series,DataFrame

一.Series

1.Series的创建

Series是一种类似与一维数组的对象,由下面两个部分组成:
values:一组数据(ndarray类型)
index:相关的数据索引标签

创建Series
两种创建方式:
1:
由列表或numpy数组创建,默认索引为0-n-1

obj=Series([1,2,3,4])    #默认索引从0开始
obj

0    1
1    2
2    3
3    4
dtype: int64

obj2=Series([1,2,3,4],index=['a','b','c','d'])   #自主定义索引
obj2

a    1
b    2
c    3
d    4
dtype: int64

由narray创建的是引用,而不是副本。
对series元素的改变也会改变原来narray的值(列表不存在这种情况)

a=np.array([1,2,3,4])
obj=Series(a,index=['a','b','c','d'])
obj

a    1
b    2
c    3
d    4
dtype: int64

obj['d']=0    #对Series元素的改变,影响narray自身的改变

a

array([1, 2, 3, 0])

2:由字典创建

obj=Series({'a':1,"b":2})

obj

a    1
b    2
dtype: int64

练习1:
使用多种方法创建以下Series,命名为sss: 语文 150 数学 150 英语 150 理综 300

#1由np.narray创建
ss=np.array([150,150,150,300])
sss=Series(ss,index=['语文','数学','英语','理综'])
sss

#法二:由字典创建
sss=Series({'语文':150,'数学':150,'英语':150,'理综':300})
sss

2)Series的索引和切片
可以使用中括号取单个索引(此时返回的是元素类型),或者中括号里一个列表取多个索引(此时返回的仍然是一个Series类型)。分为显示索引和隐式索引:
(1) 显式索引:
- 使用index中的元素作为索引值
- 使用.loc[](推荐)
注意,此时是开区间

sss['语文']

150

sss['语文':'英语']

语文    150
数学    150
英语    150
dtype: int64

(2) 隐式索引:
- 使用整数作为索引值
- 使用.iloc[](推荐)
注意,此时是半开区间

sss[0:2]

sss.iloc[0:2]

练习2:
使用多种方法对练习1创建的Series sss进行索引和切片:
索引: 数学 150
切片: 语文 150 数学 150 英语 150

索引:sss['数学']

切片:sss.iloc[0:3]#sss[0:3]

3)Series的基本概念
可以把Series看成一个定长的有序字典
可以通过shape,size,index,values等得到series的属性

head(),tail()查看数据内容head()默认为前5个,tail()默认为后5 个数据

可以使用pd.isnull(),pd.notnull(),或自带isnull(),notnull()函数检测缺失数据

pd.isnull(obj)#obj.isnull()   #查看是否为空值

pd.notnull(obj)#obj.notnull()  #查看是否不为空

Series对象本身及其索引都有一个name属性

4)Series的运算
(1) 适用于numpy的数组运算也适用于Series

obj+2

obj[obj>1]

(2) Series之间的运算
在运算中自动对齐不同索引的数据
如果索引不对应,则补NaN

若要保留所有的index,则需要使用add()/sub()/mul()/div()/函数  内部添加fill_value=0

A = pd.Series([2,4,6],index=[0,1,2])
B = pd.Series([1,3,5],index=[1,2,3])
display(A,B)

A.add(B,fill_value=0)




原创粉丝点击