pandas基础--数据结构:DataFrame
从本文开始介绍pandas的相关知识。
pandas含有是数据分析工作变得更快更简单的高级数据结构和操作工具,是基于numpy构建的。
本章节的代码引入pandas约定为:import pandas as pd,另外import numpy as np也会用到。
官方介绍:pandas - Python Data Analysis Library (pydata.org)
pandas数据结构介绍:主要有两种:Series和DataFrame。本文对DataFrame进行简单介绍。
2 DataFrame介绍
官方文档:DataFrame — pandas 1.3.4 documentation (pydata.org)
DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等)。DataFrame既可以行索引也可以列索引,它可以被看作由Series组成的字典(共用同一个索引)。DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。
2.1 构建DataFrame
最常见的一种是直接传入一个等长列表或NumPy数组组成的字典,DataFrame会自动加上索引(和Series一样),且全部列会被有序排列。如果指定了列序列,就会按照指定顺序进行排列,如果传入的列在数据中找不到,就会产生NaN值。
1 >>> data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'], 'year': [2000, 2001, 2002, 2001, 2002], 'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
2 >>> frame = pd.DataFrame(data)
3 >>> frame
4 state year pop
5 0 Ohio 2000 1.5
6 1 Ohio 2001 1.7
7 2 Ohio 2002 3.6
8 3 Nevada 2001 2.4
9 4 Nevada 2002 2.9
10 >>> pd.DataFrame(data, columns=['year', 'state', 'pop']) #指定列序列
11 year state pop
12 0 2000 Ohio 1.5
13 1 2001 Ohio 1.7
14 2 2002 Ohio 3.6
15 3 2001 Nevada 2.4
16 4 2002 Nevada 2.9
17 >>> frame2 = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'], index=['one', 'two', 'three', 'four', 'five'])
19 >>> frame2
20 year state pop debt
21 one 2000 Ohio 1.5 NaN
22 two 2001 Ohio 1.7 NaN
23 three 2002 Ohio 3.6 NaN
24 four 2001 Nevada 2.4 NaN
25 five 2002 Nevada 2.9 NaN
26 >>>
另一种常见的数据形式是嵌套字典(也就是字典的字典)。外层字典的键作为列,内层键则作为行索引。内层字典的键会被合并、排序以形成最终的索引。
1 >>> pop = {'Nevada': {2001: 2.4, 2002:2.9}, 'Ohio':{2000: 1.5, 2001: 1.7, 2002: 3.6}}
2 >>> frame3 = pd.DataFrame(pop)
3 >>> frame3
4 Nevada Ohio
5 2001 2.4 1.7
6 2002 2.9 3.6
7 2000 NaN 1.5
8 >>> frame3.T #可以进行转置
9 2001 2002 2000
10 Nevada 2.4 2.9 NaN
11 Ohio 1.7 3.6 1.5
12 >>> pd.DataFrame(pop, index=[2001, 2002, 2003]) #显示指定索引
13 Nevada Ohio
14 2001 2.4 1.7
15 2002 2.9 3.6
16 2003 NaN NaN
17 >>>
下表是DataFrame构造函数所能接受的各种数据。
| 类型 | 说明 |
|---|---|
| 二维ndarray | 数据矩阵,还可以传入行标和列标 |
| 由数组、列表或元组组成的字典 | 每个序列会变成Datarame的一列,所有序列的长度必须相同。 |
| NumPy的结构化/记录数组 | 类似于“由数组组成的字典” |
| 由Series组成的字典 | 每个Series会称为一列,如果没有显示指定索引,则各Series的索引会被合并成结果的行索引。 |
| 由字典组成的字典 | 各内层字典会成为一列,键会被合并成结果的行索引,跟“由Series组成的字典”的情况一样。 |
| 字典或Series的列表 | 各项将会成为DataFrame的一行,字典键或Series索引的并集将会成为DataFrame的列标。 |
| 由列表或元组组成的列表 | 类似于“二维ndarray” |
| 另一个DataFrame | 该DataFrame的索引将被沿用,除非显示指定了其他索引 |
| NumPy的MaskedArray | 类似于“二维ndarray”的情况,知识掩码值在结果DataFrame会变成Na/缺省值。 |
2.2 获取值
通过字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series。返回的Series拥有原DataFrame相同的索引,且其name属性已经被相应的设置好了。
1 >>> frame2
2 year state pop debt
3 one 2000 Ohio 1.5 NaN
4 two 2001 Ohio 1.7 NaN
5 three 2002 Ohio 3.6 NaN
6 four 2001 Nevada 2.4 NaN
7 five 2002 Nevada 2.9 NaN
8 >>> frame2['state']
9 one Ohio
10 two Ohio
11 three Ohio
12 four Nevada
13 five Nevada
14 Name: state, dtype: object
15 >>> frame2.year
16 one 2000
17 two 2001
18 three 2002
19 four 2001
20 five 2002
21 Name: year, dtype: int64
2.3 赋值
列可以通过赋值的方式进行修改。
1 >>> frame2
2 year state pop debt
3 one 2000 Ohio 1.5 NaN
4 two 2001 Ohio 1.7 NaN
5 three 2002 Ohio 3.6 NaN
6 four 2001 Nevada 2.4 NaN
7 five 2002 Nevada 2.9 NaN
8 >>> frame2['debt'] = 16.5
9 >>> frame2
10 year state pop debt
11 one 2000 Ohio 1.5 16.5
12 two 2001 Ohio 1.7 16.5
13 three 2002 Ohio 3.6 16.5
14 four 2001 Nevada 2.4 16.5
15 five 2002 Nevada 2.9 16.5
16 >>> frame2['debt'] = np.arange(5)
17 >>> frame2
18 year state pop debt
19 one 2000 Ohio 1.5 0
20 two 2001 Ohio 1.7 1
21 three 2002 Ohio 3.6 2
22 four 2001 Nevada 2.4 3
23 five 2002 Nevada 2.9 4
24 >>>
将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配,如果赋值的是一个Series,就会精确匹配DataFrame的索引,所有的空位都将被填上缺失值。
1 >>> frame2
2 year state pop debt
3 one 2000 Ohio 1.5 0
4 two 2001 Ohio 1.7 1
5 three 2002 Ohio 3.6 2
6 four 2001 Nevada 2.4 3
7 five 2002 Nevada 2.9 4
8 >>> val = pd.Series([-1.2, -1.5, -1.7], index=['two', 'four', 'five'])
9 >>> frame2.debt = val
10 >>> frame2
11 year state pop debt
12 one 2000 Ohio 1.5 NaN
13 two 2001 Ohio 1.7 -1.2
14 three 2002 Ohio 3.6 NaN
15 four 2001 Nevada 2.4 -1.5
16 five 2002 Nevada 2.9 -1.7
17 >>>
为不存在的列赋值会创建一个新列,关键字del用于删除列:
1 >>> frame2
2 year state pop debt
3 one 2000 Ohio 1.5 NaN
4 two 2001 Ohio 1.7 -1.2
5 three 2002 Ohio 3.6 NaN
6 four 2001 Nevada 2.4 -1.5
7 five 2002 Nevada 2.9 -1.7
8 >>> frame2['eastern'] = frame2.state == 'Ohio'
9 >>> frame2
10 year state pop debt eastern
11 one 2000 Ohio 1.5 NaN True
12 two 2001 Ohio 1.7 -1.2 True
13 three 2002 Ohio 3.6 NaN True
14 four 2001 Nevada 2.4 -1.5 False
15 five 2002 Nevada 2.9 -1.7 False
16 >>> del frame2['eastern']
17 >>> frame2.columns
18 Index(['year', 'state', 'pop', 'debt'], dtype='object')
19 >>>
2.4 其他
如果设置了DataFrame的index和columns的name属性。这些信息也会被显示出来。
1 >>> frame3
2 Nevada Ohio
3 2001 2.4 1.7
4 2002 2.9 3.6
5 2000 NaN 1.5
6 >>> frame3.index.name = 'year'
7 >>> frame3.columns.name = 'state'
8 >>> frame3
9 state Nevada Ohio
10 year
11 2001 2.4 1.7
12 2002 2.9 3.6
13 2000 NaN 1.5
14 >>> frame3.values
15 array([[2.4, 1.7],
16 [2.9, 3.6],
17 [nan, 1.5]])
18 >>>
pandas基础--数据结构:DataFrame的更多相关文章
- pandas 学习 第1篇:pandas基础 - 数据结构和数据类型
pandas是基于NumPy构建的模块,含有使数据分析更快更简单的操作工具和数据结构,是数据分析必不可少的五个包之一.pandas包含序列Series和数据框DataFrame两种最主要数据结构,索引 ...
- pandas基础,Serires,Dataframe
DataFrame DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值.字符串.布尔型等),DataFrame即有行索引也有列索引,可以被看做是 ...
- Pandas 基础(2) - Dataframe 基础
上一节我们已经对 Dataframe 的概念做了一个简单的介绍, 这一节将具体看下它的一些基本用法: 首先, 准备一个 excel 文件, 大致内容如下, 并保存成 .csv 格式. 然后, 在 ju ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作
一.reindex() 方法:重新索引 针对 Series 重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...
- 02. Pandas 1|数据结构Series、Dataframe
1."一维数组"Series Pandas数据结构Series:基本概念及创建 s.index . s.values # Series 数据结构 # Series 是带有标签的一 ...
- pandas 的数据结构(Series, DataFrame)
Pandas 讲解 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标 ...
- pandas 的数据结构Series与DataFrame
pandas中有两个主要的数据结构:Series和DataFrame. [Series] Series是一个一维的类似的数组对象,它包含一个数组数据(任何numpy数据类型)和一个与数组关联的索引. ...
- Pandas 数据结构Dataframe:基本概念及创建
"二维数组"Dataframe:是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值.字符串.布尔值等. Dataframe中的数据以一个或多个二维块存放,不是列表.字 ...
- pandas中的数据结构-DataFrame
pandas中的数据结构-DataFrame DataFrame是什么? 表格型的数据结构 DataFrame 是一个表格型的数据类型,每列值类型可以不同 DataFrame 既有行索引.也有列索引 ...
随机推荐
- DRF自动生成接口文档
自动接口文档能生成的是继承自APIView及其子类的视图. 1. 安装依赖 # 生成接口文档需要coreapi库的支持 pip install coreapi 2 设置接口文档访问路径 # 在总路由中 ...
- easyx的使用
本操作集根据B站学习,借鉴: 视频链接:[C/C++/EasyX]学编程,做游戏,小白快速入门图形编程,零基础入门到精通,学习就是这么快乐_哔哩哔哩_bilibili 初始化时要进行的操作: 记得调用 ...
- 力扣554(java&python)-砖墙(中等)
题目: 你的面前有一堵矩形的.由 n 行砖块组成的砖墙.这些砖块高度相同(也就是一个单位高)但是宽度不同.每一行砖块的宽度之和相等. 你现在要画一条 自顶向下 的.穿过 最少 砖块的垂线.如果你画的线 ...
- 第 4章 用 CSV 和 Excel 存储数据
第4章 用 CSV 和 Excel 存储数据 4.1 用 CSV 文件存储数据 CSV(Comma-Separated Values)其实就是纯文本,用逗号分隔值,可以分隔成多个单元格.CSV 文件除 ...
- 中仑网络全站 Dubbo 2 迁移 Dubbo 3 总结
简介: 中仑网络在 2022 年完成了服务框架从 Dubbo 2 到 Dubbo 3 的全站升级,深度使用了应用级服务发现.Kubernetes 原生服务部署.服务治理等核心能力.来自中仑网络的技术负 ...
- [FAQ] Windows 终端 `git diff` 出现 LF 空格 ^M 符号, 处理方式
可能是终端内的换行配置和 IDE 当中的不一致. 比如 PHPStorm 的: Git 终端使用 git config core.autocrlf 查看是 true 还是 false. 是 tru ...
- [Contract] Solidity 合约使用 truffle 部署到测试网和主网
使用 truffle 发布到非本地的以太坊主网或者测试网时,需要提供钱包的助记词或私钥. 首先安装 truffle 组件:npm install @truffle/hdwallet-provider ...
- WPF 已知问题 清空 CollectionView 的 SortDescriptions 可能抛出空异常
本文记录一个 WPF 的已知问题,在通过 CollectionViewSource 获取到 CollectionView 之后,如果 CollectionViewSource 对象已被 GC 回收,将 ...
- 11个Python循环技巧
本文分享自华为云社区<Python中的循环技巧指南>,作者:柠檬味拥抱. 当我们处理数据时,有时候需要创建多个列表以存储不同类型或不同条件下的数据.在Python中,我们可以利用循环来快速 ...
- vue的pc端项目+element实现分页效果
效果图: 直接使用element操作很简单,记录一下要点: 根据ele提供的api修改data v-for="(i,s) in dataView.slice((currentPage-1)* ...