从本文开始介绍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的更多相关文章

  1. pandas 学习 第1篇:pandas基础 - 数据结构和数据类型

    pandas是基于NumPy构建的模块,含有使数据分析更快更简单的操作工具和数据结构,是数据分析必不可少的五个包之一.pandas包含序列Series和数据框DataFrame两种最主要数据结构,索引 ...

  2. pandas基础,Serires,Dataframe

    DataFrame DataFrame是Pandas中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值.字符串.布尔型等),DataFrame即有行索引也有列索引,可以被看做是 ...

  3. Pandas 基础(2) - Dataframe 基础

    上一节我们已经对 Dataframe 的概念做了一个简单的介绍, 这一节将具体看下它的一些基本用法: 首先, 准备一个 excel 文件, 大致内容如下, 并保存成 .csv 格式. 然后, 在 ju ...

  4. 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍

    一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...

  5. 利用Python进行数据分析(8) pandas基础: Series和DataFrame的基本操作

    一.reindex() 方法:重新索引 针对 Series   重新索引指的是根据index参数重新进行排序. 如果传入的索引值在数据里不存在,则不会报错,而是添加缺失值的新行. 不想用缺失值,可以用 ...

  6. 02. Pandas 1|数据结构Series、Dataframe

    1."一维数组"Series Pandas数据结构Series:基本概念及创建 s.index  . s.values # Series 数据结构 # Series 是带有标签的一 ...

  7. pandas 的数据结构(Series, DataFrame)

    Pandas 讲解 Python Data Analysis Library 或 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的. Pandas 纳入了大量库和一些标 ...

  8. pandas 的数据结构Series与DataFrame

    pandas中有两个主要的数据结构:Series和DataFrame. [Series] Series是一个一维的类似的数组对象,它包含一个数组数据(任何numpy数据类型)和一个与数组关联的索引. ...

  9. Pandas 数据结构Dataframe:基本概念及创建

    "二维数组"Dataframe:是一个表格型的数据结构,包含一组有序的列,其列的值类型可以是数值.字符串.布尔值等. Dataframe中的数据以一个或多个二维块存放,不是列表.字 ...

  10. pandas中的数据结构-DataFrame

    pandas中的数据结构-DataFrame DataFrame是什么? 表格型的数据结构 DataFrame 是一个表格型的数据类型,每列值类型可以不同 DataFrame 既有行索引.也有列索引 ...

随机推荐

  1. JVM简明笔记1:JVM 概述

    什么是JVM JVM 即 Java Virtual Machine,中文名为 Java虚拟机. 一般情况下 C/C++ 程序,编译成二进制文件后,就可以直接执行了: Java 需要使用 javac 编 ...

  2. App隐私合规“免费”自动化检测

    简介: App隐私合规检测提供了全面的隐私合规检测报告和专家建议,从确保形式合规(隐私政策文本合规性)及实质合规(代码层合规性)的一致性,从个人信息收集.权限使用场景.超范围采集.隐私政策.三方SDK ...

  3. 模拟IDC spark读写MaxCompute实践

    简介: 现有湖仓一体架构是以 MaxCompute 为中心读写 Hadoop 集群数据,有些线下 IDC 场景,客户不愿意对公网暴露集群内部信息,需要从 Hadoop 集群发起访问云上的数据.本文以 ...

  4. DataWorks搬站方案:Airflow作业迁移至DataWorks

    简介: DataWorks提供任务搬站功能,支持将开源调度引擎Oozie.Azkaban.Airflow的任务快速迁移至DataWorks.本文主要介绍如何将开源Airflow工作流调度引擎中的作业迁 ...

  5. 形式化验证工具TLA+:程序员视角的入门之道

    ​简介: 女娲是飞天分布式系统中提供分布式协同的基础服务,支撑着阿里云的计算.网络.存储等几乎所有云产品.在女娲分布式协同服务中,一致性引擎是核心基础模块,支持了Paxos,Raft,EPaxos等多 ...

  6. ICBU可控文本生成技术详解

    ​简介: 文本生成(Text Generation)是自然语言处理(Natural Language Processing,NLP)领域的一项重要且具有挑战的任务.顾名思义,文本生成任务的目的是生成近 ...

  7. [GPT] Vue 的 methods 中使用了 addEventListener,如何在 addEventListener 的匿名函数参数中访问 Vue data 变量

      在 Vue 的 methods 方法中使用 addEventListener时,你可以使用 箭头函数 来访问 Vue 实例的数据. 箭头函数不会创建自己的作用域,而是继承父级作用域的上下文.以下是 ...

  8. kubeadm搭建k8s-1.24.8集群

    一.实验环境准备 k8s集群角色 IP 主机名 安装组件 配置 控制节点 192.168.10.40 master apiserver.controller-manager.scheduler.etc ...

  9. 如何拥有自己的专属GPT-本地部署目前最强大模型llama3

    你是不是苦于没法使用ChatGPT?或者访问了ChatGPT却没法使用GPT4?现在一切问题都可以解决了! 4月18日,Meta发布两款开源Llama 3 8B与Llama 3 70B模型,供外部开发 ...

  10. ssh秘钥对免密码登陆

    准备两台linux服务器 a和b , 在a上使用ssh命令登陆b服务器 , 并且不用 输入密码 1.在a服务器上,比如是root用户 ,进去/root/.ssh目录 ,没有就创建, 就是进入家目录的. ...