Pandas学习笔记(一)——Series

201 阅读3分钟

Pandas学习笔记(1)

这是关于pandas库的学习笔记,观看的视频教材为Python数据分析与展示

1.数据类型

Pandas库的两个主要操作的数据类型为Series和DataFrame
Series主要是一个一维的数据类型,而DataFrame对应为一个多维的数据类型

Pandas和Numpy的对比

Numpy Pandas
基础数据类型 扩展数据类型
关注数据的结构表达 专注数据的应用表达
纬度:数据间关系 数据与索引间关系

2.Series数据类型

Series可以通过Python列表创建、标量值创建、Python字典创建、ndarray(Numpy数据类型)、其他函数创建

#从标量值创建
s=pd.Series(25,index=['a','b','c'])
print(s)

#通过字典创建一个Series
d=pd.Series({'a':9,'b':8,'c':7})
print(d)

#通过字典构建不同顺序的Series,NaN表示空,这个值不存在
e=pd.Series({'a':9,'b':8,'c':7},index=['c','a','b','d'])
print(e)

#通过ndarray创建
n=pd.Series(np.arange(5))
print(n)
m=pd.Series(np.arange(5),index=np.arange(9,4,-1))
print(m)

3.Series的基本操作

Series类型报错index和values两个部分
Series类型的操作类似ndarray类型
Series类型的操作类似Python字典数据类型

Series的index的数据类型是一个独有的index的类 Series的values是numpy的格式数据类型

# 这里创建了一个Series
b=pd.Series([9,8,7,6],['a','b','c','d'])
#b.index表示b的索引,b.values表示b的数据
print(b.index)
print(b.values)
'''
运行结果:
Index(['a', 'b', 'c', 'd'], dtype='object')
[9 8 7 6]
'''

Series的Index有两种,一种是自定义的索引,另一种是numpy自动索引,两者不能混用

  • Series类型的操作类似于ndarray类型
  • 索引方法相同,采用[]
  • Numpy中运算和操作可用于Series类型
  • 可以通过自定义索引的列表进行切片
  • 可以通过自动索引进行切片,如果存在自定义索引,则一同被切片
范例1

numpy操作可以应用在Series上,但是需要注意得是,返回的结果仍然是一个Series数据类型,但是如果只是单独索引一个数字,那么返回的数据类型是一个普通的numpy数据类型,由此可见,pandas的Series数据类型本质上是一个numpy数据加上一个index类型,所以其适用于numpy操作,但是又有Series的特点

b=pd.Series([9,8,7,6],['a','b','c','d'])
print(b[:3])
#输出所有大于中位数的元素
print(b[b>b.median()])
#所有所有元素求指数 输出的结果还是一个Series结果
print(np.exp(b))
'''
输出结果:
a    9
b    8
c    7
dtype: int64
a    9
b    8
dtype: int64
a    8103.083928
b    2980.957987
c    1096.633158
d     403.428793
dtype: float64

'''
范例2

Series的Python字典类型的操作

  • 通过自定义索引访问
  • 保留字in操作
  • 使用.get()方法

Numpy是基于纬度的运算,Series是基于索引的运算

b=pd.Series([9,8,7,6],['a','b','c','d'])

print('c' in b)
#保留字in不会判断自动索引
print(0 in b)
#获得一个f的值,如果不存在就返回新建的值
print(b.get('f',100))
print(b)

#Series的对齐操作
a=pd.Series([1,2,3],['c','d','e'])
b=pd.Series([9,8,7,6],['a','b','c','d'])
print(a+b)
'''
输出结果:
True
False
100
a    9
b    8
c    7
d    6
dtype: int64
a    NaN
b    NaN
c    8.0
d    8.0
e    NaN
dtype: float64
'''
范例3

Series的name属性,Series对象和索引都可以有一个名字,存储在属性.name中

#Series的name属性,Series对象和索引都可以有一个名字,存储在属性.name中
b=pd.Series([9,8,7,6],['a','b','c','d'])
print(b.name)
b.name='Series对象'
b.index.name="索引树"
print(b)
'''
输出结果:
None
索引树
a    9
b    8
c    7
d    6
Name: Series对象, dtype: int64
'''
范例4

Series的修改,是立刻修改

#Series类型的修改
b=pd.Series([9,8,7,6],['a','b','c','d'])
b['a']=15
b.name="Series"
print(b)

b.name="New Series"
b['b','c']=20
print(b)
'''
输出结果:
a    15
b     8
c     7
d     6
Name: Series, dtype: int64
a    15
b    20
c    20
d     6
Name: New Series, dtype: int64
'''

4.Series数据类型总结

Series是一维带标签的数组

index_0 \longrightarrow data_a

Series基本操作类似ndarray和字典,根据索引对齐.