Pandas库入门
操作索引即操作数据,操作数据时度进行过多的考虑
Pandas库的引用
1 | Pandas是Python第三方库,提供高性能易用数据类型和分析工具 |
1 | cumsum() |
Pandas库的理解
1 | Pandas主要提供两个数据类型:Series(表示一维数据),DataFrame(表示二维/多维数据) |
Pandas库的Series类型
1 | Series类型由一组数据及与之相关的数据索引组成 |
Series类型可以由如下类型创建:
1 | • Python列表 |
从标量值创建
1 | import pandas as pd |
从字典类型创建
1 | import pandas as pd |
从ndarray类型创建
1 | import pandas as pd |
Series类型的基本操作:
1 | Series类型包括index和values两部分 |
Series类型的操作类似ndarray类型:
1 | • 索引方法相同,采用[] |
Series类型的操作类似Python字典类型:
1 | • 通过自定义索引访问 |
Seri类型对齐操作
1 | import pandas as pd |
Series类型的name属性
1 | Series对象和索引都可以有一个名字,存储在属性.name中 |
Series类型的修改
1 | Series对象可以随时修改并即刻生效 |
Series类型
1 | Series是一维带“标签”数组 |
DataFrame类型
DataFrame类型由共用相同索引的一组列组成
1 | DataFrame是一个表格型的数据类型,每列值类型可以不同 |
1 | DataFrame类型可以由如下类型创建: |
从二维ndarray对象创建
1 | import pandas as pd |
从一维ndarray对象字典创建
1 | import pandas as pd |
从列表类型的字典创建
1 | import pandas as pd |
1 | import pandas as pd |
数据类型操作
- 如何改变Series和DataFrame对象?
- 增加或重排:重新索引
- 删除:drop
重新索引
1 | .reindex()能够改变或重排Series和DataFrame索引 |
.reindex(index=None, columns=None, …)的参数:
参数 |说明
—|—
index, columns | 新的行列自定义索引
fill_value | 重新索引中,用于填充缺失位置的值
method |填充方法, ffill当前值向前填充,bfill向后填充
limit |最大填充量
copy |默认True,生成新的对象,False时,新旧相等不复制
1 | d=d.reindex(columns=['城市','同比','环比','定基']) |
索引类型
1 | Series和DataFrame的索引是Index类型 |
索引类型的常用方法
| 方法 | 说明 |
|---|---|
| .append(idx) | 连接另一个Index对象,产生新的Index对象 |
| .diff(idx) | 计算差集,产生新的Index对象 |
| .intersection(idx) | 计算交集 |
| .union(idx) | 计算并集 |
| .delete(loc) | 删除loc位置处的元素 |
| .insert(loc,e) | 在loc位置增加一个元素e |
索引类型的使用
1 | d |
删除指定索引对象
1 | .drop()能够删除Series和DataFrame指定行或列索引 |
算术运算法则
- 算术运算根据行列索引,补齐后运算,运算默认产生浮点数
- 补齐时缺项填充NaN (空值)
- 二维和一维、一维和零维间为广播运算
- 采用+ ‐ * /符号进行的二元运算产生新的对象
数据类型的算术运算
1 | import pandas as pd |
方法形式的运算
方法 |说明
—|—
.add(d, *argws)| 类型间加法运算,可选参数
.sub(d, *argws)| 类型间减法运算,可选参数
.mul(d, *argws)| 类型间乘法运算,可选参数
.div(d, *argws)| 类型间除法运算,可选参数
1 | b.add(a,fill_value=100) |
不同维度运算
1 | b |
比较运算法则
- 比较运算只能比较相同索引的元素,不进行补齐
- 二维和一维、一维和零维间为广播运算
- 采用> < >= <= == !=等符号进行的二元运算产生布尔对象
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55a
Out:
0 1 2 3
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
d=pd.DataFrame(np.arange(12,0,-1).reshape(3,4))
d
Out:
0 1 2 3
0 12 11 10 9
1 8 7 6 5
2 4 3 2 1
a>d
Out:
0 1 2 3
0 False False False False
1 False False False True
2 True True True True
a==d
Out:
0 1 2 3
0 False False False False
1 False False True False
2 False False False False
c=pd.Series(np.arange(4))
c
Out:
0 0
1 1
2 2
3 3
dtype: int32
#不同维度,广播运算,默认在1轴
a>c
Out:
0 1 2 3
0 False False False False
1 True True True True
2 True True True True
c>0
Out[97]:
0 False
1 True
2 True
3 True
dtype: bool