我是靠谱客的博主 帅气石头,这篇文章主要介绍Pandas基础复习-SeriesPandas(panel data & Data Analysis):Python数据分析库。Pandas库的数据类型:Series类型的基本操作,现在分享给大家,希望可以做个参考。

Pandas(panel data & Data Analysis):Python数据分析库。

Pandas是基于Numpy的,专用于数据分析的Python第三方库,最适用于处理大型结构化表格数据

Pandas最初是对冲基金公司开发出来做金融量化数据分析的Python库
Pandas借鉴了R的数据结构
Pandas基于Numpy搭建,支持Numpy中定义的大部分计算
Pandas提供了大量和其他技术交互的接口(比如IO工具 (CSV, XLSX, HDF5, …),可视化(封装pyplot),方便和其他语言技术的交互和功能扩展
Pandas底层用Cython和C做了速度优化,极大提高了执行效率

Pandas库的数据类型:

  • Series 一维
  • DataFrame 二维,Series容器,最常用
  • Panel 三维,DataFrame容器

Python的list列表,Numpy的ndarray数组和Pdandas的Series

  • list:Python自带数据类型,功能简单,操作复杂,效率低
  • ndarray(Numpy):基础数据类型,关注数据结构/运算/维度(数据间关系)
  • Series(DataFrame):扩展数据类型,关注数据实际应用,数据与索引的关系

三种数据类型的区别

  • list/Series/DataFrame的值类型可以不同,ndarray的值类型必须相同
  • 从实用性、功能强弱和和可操作性比较:list < ndarray < Series(DataFrame),实践中尽量使用Pandas数据类型。
复制代码
1
2
3
4
5
# 导入pandas库 import pandas as pd # 创建Series数据类型 se = pd.Series([2, 4, 6, 8, 10]) se
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
0 2 1 4 2 6 3 8 4 10 dtype: int64
复制代码
1
2
3
4
5
6
# 创建DataFrame数据类型 da = pd.DataFrame([ [2, 4, 6, 8, 10], [12, 14, 16, 18, 20] ]) da
01234
0246810
11214161820


Python list 列表 创建Series

复制代码
1
2
3
#默认索引 a = pd.Series([1,2,3,4]) a
复制代码
1
2
3
4
5
6
7
8
9
10
0 1 1 2 2 3 3 4 dtype: int64
复制代码
1
2
b = pd.Series([1,2,3,4],index=['a','b','c','d']) #自定义索引 b
复制代码
1
2
3
4
5
6
7
8
9
10
a 1 b 2 c 3 d 4 dtype: int64
复制代码
1
2
s = pd.Series([True,1,2.3,'a','你好']) #数据类型 s
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
0 True 1 1 2 2.3 3 a 4 你好 dtype: object

标量值 创建Series

复制代码
1
2
3
# 必须带index c = pd.Series(10, index=['a', 'b', 'c']) c
复制代码
1
2
3
4
5
6
7
8
a 10 b 10 c 10 dtype: int64
复制代码
1
2
c_null = pd.Series(index=['a', 'b', 'c']) c_null
复制代码
1
2
3
4
5
6
7
8
a NaN b NaN c NaN dtype: float64
复制代码
1
2
s = pd.Series([True,1,2.3,'a','你好'], index=['a', 'b', 'c', 'd', 'e']) s
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
a True b 1 c 2.3 d a e 你好 dtype: object

Python字典 创建Series

复制代码
1
2
d = pd.Series({'a':9,'b':8,'c':7}) d
复制代码
1
2
3
4
5
6
7
8
a 9 b 8 c 7 dtype: int64

ndarray 创建Series,索引和数据都可以通过ndarray类型生成

复制代码
1
2
3
import numpy as np n = pd.Series(np.arange(5)) n
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
0 0 1 1 2 2 3 3 4 4 dtype: int32
复制代码
1
2
m = pd.Series(np.arange(5),index=np.arange(9,4,-1)) m
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
9 0 8 1 7 2 6 3 5 4 dtype: int32

其他函数 创建Series

复制代码
1
2
n = pd.Series(range(10)) n
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 dtype: int32

Series类型的基本操作

index和value操作

复制代码
1
2
3
b = pd.Series([9, 8, 7, 6, 5, 4, 3], ['a', 'b', 'c', 'd', 'e', 'f', 'g']) b
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
a 9 b 8 c 7 d 6 e 5 f 4 g 3 dtype: int64
复制代码
1
2
# 获得索引,输出index类型,就是pandas独有的索引类型 b.index
复制代码
1
2
Index(['a', 'b', 'c', 'd', 'e', 'f', 'g'], dtype='object')
复制代码
1
2
# 获得数据,输出类型为array,就是np的array数组 b.values
复制代码
1
2
array([9, 8, 7, 6, 5, 4, 3], dtype=int64)

引索

复制代码
1
2
# 按照引索名称取值 b['b']
复制代码
1
2
8
复制代码
1
2
# 按照下标取值 b[1]
复制代码
1
2
8
复制代码
1
2
# 直接按照key取值 b.b
复制代码
1
2
8
复制代码
1
2
# 按照key值引索取值 b[['c','d','a']]
复制代码
1
2
3
4
5
6
7
8
c 7 d 6 a 9 dtype: int64
复制代码
1
2
# 错误,两套索引并存,但不能混用 b[['c','d',0]]
复制代码
1
2
3
4
5
6
7
8
c 7.0 d 6.0 0 NaN dtype: float64

切片

复制代码
1
2
# 按照下标切片 b[1:]
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
b 8 c 7 d 6 e 5 f 4 g 3 dtype: int64
复制代码
1
b[: 3]
复制代码
1
2
3
4
5
6
7
8
a 9 b 8 c 7 dtype: int64
复制代码
1
2
# 按照key引索切片 b[: 'd']
复制代码
1
2
3
4
5
6
7
8
9
10
a 9 b 8 c 7 d 6 dtype: int64
复制代码
1
b[::2]
复制代码
1
2
3
4
5
6
7
8
9
10
a 9 c 7 e 5 g 3 dtype: int64
复制代码
1
2
# 从头到尾反向切片,步长为-1,即最简单的列表倒序 b[::-1]
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
g 3 f 4 e 5 d 6 c 7 b 8 a 9 dtype: int64

类ndarray操作

  • 索引方法相同,都有[]
  • numpy中的运算和操作可用于Series类型
  • 可以通过自定义索引的列表进行切片
  • 可以通过自动索引进行切片,如果存在自定义索引,则一同被切片
复制代码
1
b[3] # 第3个值,结果是索引的值
复制代码
1
2
6
复制代码
1
b[:3] #0-3,结果还是Series类型
复制代码
1
2
3
4
5
6
7
8
a 9 b 8 c 7 dtype: int64
复制代码
1
b[b > b.median()] #所有大于中位数的值
复制代码
1
2
3
4
5
6
7
8
a 9 b 8 c 7 dtype: int64

* 类python字典的操作 *

  • 通过自定义索引访问
  • 保留字in操作
  • 使用.get()方法
复制代码
1
b['b']
复制代码
1
2
8
复制代码
1
'c' in b # 判断此键在不在b的索引中
复制代码
1
2
True
复制代码
1
0 in b #in 不会判断自动索引
复制代码
1
2
False
复制代码
1
b.get('f',100) #从b中提取索引f的值,如果存在就取出,不存在就用 100 代替
复制代码
1
2
4

根据索引对齐操作

series + series

复制代码
1
2
a = pd.Series([1,2,3],['c','d','e']) b = pd.Series([9,8,7,6],['a','b','c','d'])
复制代码
1
a + b #结果为两个值的并集,相加时索引对齐加值,索引不对齐的没值,加完也没值
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
a NaN b NaN c 8.0 d 8.0 e NaN dtype: float64
  • Series类型在运算中会自动对齐不同索引的数据
  • ndarray基于维度运算,series基于索引运算,更精确不易出错

Series类型的name属性

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

复制代码
1
b = pd.Series([9,8,7,6],['a','b','c','d'])
复制代码
1
print(b.name) # 默认没有
复制代码
1
2
None
复制代码
1
2
b.name = 'Series对象' # 对象命名 print(b.name)
复制代码
1
2
Series对象
复制代码
1
2
b.index.name = '索引列' # 索引命名 b
复制代码
1
2
3
4
5
6
7
8
9
10
11
索引列 a 9 b 8 c 7 d 6 Name: Series对象, dtype: int64

Series类型的修改

Series对象可以随时修改并立即生效

复制代码
1
b
复制代码
1
2
3
4
5
6
7
8
9
10
11
索引列 a 9 b 8 c 7 d 6 Name: Series对象, dtype: int64
复制代码
1
2
b['a'] = 15 b
复制代码
1
2
3
4
5
6
7
8
9
10
11
索引列 a 15 b 8 c 7 d 6 Name: Series对象, dtype: int64
复制代码
1
2
b.name = 'Series' b
复制代码
1
2
3
4
5
6
7
8
9
10
11
索引列 a 15 b 8 c 7 d 6 Name: Series, dtype: int64
复制代码
1
2
3
b.name = 'new series' b['b','c'] = 20 # b[['b','c']] = 20 b
复制代码
1
2
3
4
5
6
7
8
9
10
11
索引列 a 15 b 20 c 20 d 6 Name: new series, dtype: int64

最后

以上就是帅气石头最近收集整理的关于Pandas基础复习-SeriesPandas(panel data & Data Analysis):Python数据分析库。Pandas库的数据类型:Series类型的基本操作的全部内容,更多相关Pandas基础复习-SeriesPandas(panel内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(88)

评论列表共有 0 条评论

立即
投稿
返回
顶部