pandas系列—pandas库简介 一、pandas概述

pandas是提供高性能易用数据类型和分析工具的第三方库 
导入:

import pandas as pd
 
  • 1

注:pandas库是基于Numpy实现的 
一个简单的小例子:

import pandas as pd

e=pd.Series(range(5))
e
 
  • 1
  • 2
  • 3
  • 4

Out[7]: 
0 0 
1 1 
2 2 
3 3 
4 4 
dtype: int32 
其中,左面一列为索引,右面一列为数据

二、pandas的数据类型

pandas主要提供两种数据类型:Series和DataFrame 
其中,Series用来表示一维数据,DataFrame主要用来表示二维数据,也可表示多维数据。这两种数据类型在后面会详细介绍。

三、Numpy和Pandas对比

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

pandas系列—pandas库的Series类型

一、Series概述

Series是由一组数据及与之相关的数据索引组成 
例子:

import pandas as pd

a = pd.Series([9,8,7,6]) #自动索引
print(a)
 
  • 1
  • 2
  • 3
  • 4

运行结果: 
0 9 
1 8 
2 7 
3 6 
dtype: int64

import pandas as pd

b = pd.Series([9,8,7,6],index=['a','b','c','d']) #自定义索引
print(b)
 
  • 1
  • 2
  • 3
  • 4

运行结果: 
a 9 
b 8 
c 7 
d 6 
dtype: int64

二、创建Series类型的方法

Series类型可由如下类型创建:python列表、标量值、python字典、ndarray、其他函数

2.1 从标量值创建

import pandas as pd

a = pd.Series(25,index=['a','b','c','d'])
print(a)
 
  • 1
  • 2
  • 3
  • 4

运行结果: 
a 25 
b 25 
c 25 
d 25 
dtype: int64

2.2 从字典类型创建

例子1:

import pandas as pd

b = pd.Series({'a':9,'b':8,'c':7})
print(b)
 
  • 1
  • 2
  • 3
  • 4

运行结果: 
a 9 
b 8 
c 7 
dtype: int64 
例子2:

import pandas as pd

c = pd.Series({'a':9,'b':8,'c':7},index=['c','a','b','d'])
print(c)
 
  • 1
  • 2
  • 3
  • 4

运行结果: 
c 7.0 
a 9.0 
b 8.0 
d NaN 
dtype: float64

2.3 从ndarray类型创建

import pandas as pd
import numpy as np

d = pd.Series(np.arange(5))
e = pd.Series(np.arange(5),index = np.arange(9,4,-1))
print(d)
print(e)
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

运行结果: 
0 0 
1 1 
2 2 
3 3 
4 4 
dtype: int32

9 0 
8 1 
7 2 
6 3 
5 4 
dtype: int32

三、Series类型的基本操作

3.1 简单的操作

Series类型包括index和values两部分

import pandas as pd

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

g
Out[16]: 
a    9
b    8
c    7
d    6

g.index
Out[18]: Index(['a', 'b', 'c', 'd'], dtype='object')

g.values
Out[19]: array([9, 8, 7, 6], dtype=int64)

g['b']
Out[20]: 8

g[1]
Out[21]: 8
dtype: int64

g[['c','d',0]]  #自定义索引和自动索引不能混合使用
Out[24]: 
c    7.0
d    6.0
0    NaN
dtype: float64

g[['c','d','a']]
Out[25]: 
c    7
d    6
a    9
dtype: int64
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

3.3 Series类似ndarray类型的操作

import pandas as pd

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

m
Out[32]: 
a    9
b    8
c    7
d    6
dtype: int64

m[3]
Out[33]: 6

m[:3]
Out[34]: 
a    9
b    8
c    7
dtype: int64

m[m>m.median()]
Out[35]: 
a    9
b    8
dtype: int64

np.exp(m)
Out[36]: 
a    8103.083928
b    2980.957987
c    1096.633158
d     403.428793
dtype: float64
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

3.3 Series类似python字典类型的操作

import pandas as pd

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

h['b']
Out[27]: 8

'c' in h  #保留字in只会判断自定义索引
Out[28]: True

0 in h
Out[29]: False

b.get('f',100)  #若存在,就返回‘f’对应的值,若不存在,就返回100
Out[30]: 100

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3.4 Series类型的对齐操作

Series在运算中回自动对齐不同索引的数据

import pandas as pd

p = pd.Series([9,8,7,6],['a','b','c','d'])
q = pd.Series([1,2,3],['c','b','e'])

p+q
Out[39]: 
a     NaN
b    10.0
c     8.0
d     NaN
e     NaN
dtype: float64

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

3.5 Series类型的name属性

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

import pandas as pd

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

s
Out[42]: 
a    9
b    8
c    7
d    6
dtype: int64

s.name

s.name='Series对象'
s.index.name='索引列'

s
Out[46]: 
索引列
a    9
b    8
c    7
d    6
Name: Series对象, dtype: int64

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

3.6 Series类型的修改

import pandas as pd

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

t['a']=15
t.name = 'Series'

t
Out[50]: 
a    15
b     8
c     7
d     6
Name: Series, dtype: int64

t.name='New Series'
t['b','c']=20

t
Out[53]: 
a    15
b    20
c    20
d     6
Name: New Series, dtype: int64

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 注1:Series是一维带标签数组
  • 注2:Series基本操作类似ndarray和字典,根据索引对齐