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 既有行索引.也有列索引 ...
随机推荐
- pyaudio音频录制python
python3.7不支持pyaudio pip在线安装 whl下载地址:https://github.com/intxcc/pyaudio_portaudio/releases 下载后使用pip离线安 ...
- LORS:腾讯提出低秩残差结构,瘦身模型不掉点 | CVPR 2024
深度学习模型通常堆叠大量结构和功能相同的结构,虽然有效,但会导致参数数量大幅增加,给实际应用带来了挑战.为了缓解这个问题,LORS(低秩残差结构)允许堆叠模块共享大部分参数,每个模块仅需要少量的唯一参 ...
- 登录chatgpt的时候出现429的解决方法,亲测有效
登录chatgpt的时候出现429的解决方法 PS:在2023年3月14日晚还是可以用的,亲测有效 登录chatgpt的时候出现429的解决方法 很多时候在国内用代理进入chatgpt的时候会出现42 ...
- 4.CSS层次选择器
1.后代选择器:在某个元素的后面 1 /*后代选择器*/ 2 body p{ 3 background: crimson; 4 } 2.子选择器:仅一代 1 /*子选择器*/ 2 body>p{ ...
- Java Agent 踩坑之 appendToSystemClassLoaderSearch 问题
简介: 从 Java Agent 报错开始,到 JVM 原理,到 glibc 线程安全,再到 pthread tls,逐步探究 Java Agent 诡异报错. 作者:鲁严波 从 Java Age ...
- EventBridge 集成云服务实践
简介:本篇文章主要向大家分享了通过 EventBridge 如何集成云产品事件源,如何集成云产品事件目标以及通过事件流如何集成消息产品. 作者:李凯(凯易) EvenBridge 集成概述 Even ...
- ARMv9刷屏 —— 号称十年最大变革,Realm机密计算技术有什么亮点?
简介: 让我们看下ARMv9机密计算相关的新特性Realm. ARMv9的新闻刷屏了.ARMv9号称十年以来最重大变革,因此让我们看下ARMv9中机密计算相关的新特性Realm.(注:本文是对I ...
- Windows 官方提供的触屏硬件延迟测量方法
本文记录微软 Windows 官方在 Windows Hardware Lab Kit 提供的触屏硬件延迟测量方法 Overview of measuring Touch Down Hardware ...
- dotnet SemanticKernel 入门 将技能导入框架
在上一篇博客中和大家简单介绍了 SemanticKernel 里的技能概念,接下来咱准备将 技能 导入到 SemanticKernel 框架里面,进行一个管道式调用 本文属于 SemanticKern ...
- dotnet 6 使用 File.Exists 判断管道是否存在将让下次连接失败
我尝试在 dotnet 6 使用 File.Exists 判断管道是否存在,如果管道存在再进行连接.然而这个逻辑将会接下来的 NamedPipeClientStream 调用 Connect 连接失败 ...