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 既有行索引.也有列索引 ...
随机推荐
- 架构设计|基于 raft-listener 实现实时同步的主备集群
背景以及需求 线上业务对数据库可用性可靠性要求较高,要求需要有双 AZ 的主备容灾机制. 主备集群要求数据和 schema 信息实时同步,数据同步平均时延要求在 1s 之内,p99 要求在 2s 之内 ...
- 剑指offer66(Java)-构建乘积数组(中等)
题目: 给定一个数组 A[0,1,-,n-1],请构建一个数组 B[0,1,-,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×-×A[i ...
- 力扣66(java)-加一(简单)
题目: 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. ...
- Hologres如何支持超高基数UV计算(基于roaringbitmap实现)
简介: 本文将会介绍Hologres基于roaringbitmap实现超高基数的UV计算 RoaringBitmap是一种压缩位图索引,RoaringBitmap自身的数据压缩和去重特性十分适合对于大 ...
- KubeDL 0.4.0 - Kubernetes AI 模型版本管理与追踪
简介:欢迎更多的用户试用 KubeDL,并向我们提出宝贵的意见,也期待有更多的开发者关注以及参与 KubeDL 社区的建设! 作者:陈裘凯( 求索) 前言 KubeDL 是阿里开源的基于 Kuber ...
- WPF 已知问题 开启 IsManipulationEnabled 之后触摸长按 RepeatButton 不会触发连续的 Click 事件
本文记录 WPF 的一个已知问题,在 RepeatButton 上开启 IsManipulationEnabled 漫游支持之后,将会导致触摸长按到 RepeatButton 之上时,不会收到源源不断 ...
- 2019-8-31-NuGet-如何设置图标
title author date CreateTime categories NuGet 如何设置图标 lindexi 2019-08-31 16:55:58 +0800 2019-4-27 17: ...
- 国内常用源开发环境换源(flutter换源,python换源,Linux换源,npm换源)
国内开源镜像站点 大学 清华大学开源软件镜像站 (使用较多) 中国科学技术大学开源软件镜像 (使用较多) 浙江大学开源镜像站 (主要是各发行版Linux,pip等常用库) 哈尔滨工业大学开源镜像站 ( ...
- 什么是IPD项目管理模式?聊聊IPD下的产品研发流程
IPD(集成产品开发)涵盖了产品从创意提出到研发.生产.运营等,包含了产品开发到营销运营的整个过程.围绕产品(或项目)生命周期的过程的管理模式,是一套生产流程,更是时下国际先进的管理体系.IPD(集成 ...
- mosquitto的安装与使用
一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机.嵌入式 ...