【pandas基础】–核心数据结构

pandas中用来承载数据的两个最重要的结构分别是:

  1. Series:相当于增强版的一维数组
  2. DataFrame:相当于增强版的二维数组

pandas最大的优势在于处理表格类数据,如果数据维度超过二维,一般我们会使用另一个 python的库 numpy

本篇主要介绍这两种核心数据结构的创建方式。

1. Series

pandasSeries是一种带有标签索引的一维数据结构。
它可以表示任何一维带标签的数据,例如时间序列数据、运动员数据、股票价格等等。

pandasSeries由两个数组构成:一个是数据数组,它可以是numpy数组、列表、字典等;另一个是索引数组,它指定数据数组中每个元素的标签。

Series可以进行各种数学运算、逻辑运算和复制操作,可以轻松创建、操作和使用。
pandasSeries特别强大之处就是可以使用各种方法进行数据的操作、处理和分析,因此在数据分析、数据处理和科学计算方面非常有用。

常用的创建 Series有两种方式:

1.1 从列表创建

l = [78, 89, 95]
s = pd.Series(l)
s.head()

image.png
从列表可以直接创建出 Series,可以看出,与一般的一维数组相比,Series多了一列索引信息。
其实,除此之外,Series还有很多用于分析和统计的方法,后续我们再介绍。

索引默认是从0开始的数字,也可以在创建时设置有意义的索引名称。

l = [78, 89, 95]
s = pd.Series(l, index=["语文", "数学", "英语"])
s.head()

image.png

1.2 从字典创建

d = {"a": 78, "b": 89, "c": 95}
s = pd.Series(d)
s.head()

image.png
从字典创建Series时,会将字典的 key作为了索引。
修改索引不用 index参数,而是直接修改字典的 key

d = {"语文": 78, "数学": 89, "英语": 95}
s = pd.Series(d)
s.head()

image.png

2. Dataframe

pandasDataFrame是一个二维的数据结构,可以存储各种类型的数据,类似于Excel中的表格。
它由行和列组成,每一行和每一列都有一个索引值,可以通过索引值进行读写操作。

DataFrame支持许多操作,包括对数据的过滤、切片、排序、连接和聚合等。
它还可以从各种数据源(如CSV、SQL数据库和Excel)中读取数据,并将数据写入这些数据源。

pandas中,DataFrame可以使用字典、列表、Numpy数组、其他pandas数据框等构建。
DataFrame还有一些重要的属性和方法,例如headtaildescribe等,用于查看数据、统
计数据、随机抽样等。

除此之外,DataFrame还支持pandas中的许多高级操作,例如多重索引、透视表、重塑等。
这些功能使DataFrame成为数据分析中必不可少的工具。

2.1 从列表创建

l = [[78, 89, 95], [65, 84, 100]]
df = pd.DataFrame(l)
df.head()

image.png
从列表创建DataFrame之后,默认的索引列名称都是从0开始的数字。
也可以自定义DataFrame的索引名称和列名称,通过 indexcolumns参数。

l = [[78, 89, 95], [65, 84, 100]]
df = pd.DataFrame(l, index=["小明", "小红"], columns=["语文", "数学", "英语"])
df.head()

image.png

2.2 从字典创建

d = [{"语文": 78, "数学": 89, "英语": 95}, {"语文": 65, "数学": 84, "英语": 100}]
df = pd.DataFrame(d)
df.head()

image.png
字典的key作为列名称,索引不设置的话,默认还是从0开始的数字。

2.3 从 numpy 数组创建

import numpy as np

data = np.array([[78, 89, 95], [65, 84, 100]])
df = pd.DataFrame(data)
df.head()

image.png
numpy二维数组创建 DataFrame和直接从列表创建类似。
注意,这里只能从 numpy的二维数组创建,如果是维度更高的数组,创建时会出错。

data = np.array([[[78, 89, 95], [65, 84, 100]]])
df = pd.DataFrame(data)
df.head()

上面的 data是三维数组,执行上面的代码会有如下的错误信息:
image.png

3. 两种结构互相转换

pandas的两种核心结构之间是可以互相转换的,可以将 Series理解为 DataFrame的一列。

3.1 Series 到 DataFrame

对于一个 Series来说,可以理解成一列是索引,一列是数据。
Series转换为 DataFrame有多种方式,通过字典来中转是比较直观的一种方式。

d = {"语文": 78, "数学": 89, "英语": 95}
s = pd.Series(d)
s.head()

image.png
由前面的介绍可知,红色框内的是 Series的索引(即 s.index),
右边一列数字部分是Series的值(即s.values)。

df = pd.DataFrame({"学科": s.index, "分数": s.values})
df.head()

image.png
这样就转换成了一个 DataFrame,列名就是字典的key学科分数

3.2 DataFrame 到 Series

DataFrameSeries更加简单,DataFrame的每一列都可以转成 Series

l = [[78, 89, 95], [65, 84, 100]]
df = pd.DataFrame(l, index=["小明", "小红"], columns=["语文", "数学", "英语"])
df.head()

df["数学"]

image.png

type(df["数学"])

image.png

注意,DataFrame只有选择一列的时候才是一个 Series,如果选择多列的话,则还是一个 DataFrame

print(type(df[["数学", "语文"]]))
df[["数学", "语文"]]

image.png

4. 总结回顾

本篇主要介绍了pandas的两个核心数据结构 SeriesDataFrame
首先介绍了它们各自的创建方式,即从普通的python数据结构创建 SeriesDataFrame的常用方式。
然后也介绍了它们之间常用的互相转换方法。

SeriesDataFrame数据部分就是一维数组和二维数组,pandas不过是在数据部分之上封装了各种各样的管理和分析统计的函数。
然而正因为有了这些函数,才让pandas成为数据分析的一件利器。

本文关联的微信视频号短视频:
pandas02-核心数据结构.png

原文链接:https://www.cnblogs.com/wang_yb/p/17380249.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【pandas基础】–核心数据结构 - Python技术站

(0)
上一篇 2023年5月8日
下一篇 2023年5月9日

相关文章

  • pip报错“ValueError: invalid literal for int() with base 10: ‘2.6’”怎么处理?

    当使用pip安装Python包时,可能会遇到“ValueError: invalid literal for int() with base 10: ‘2.6’”错误。这个错误通常是由以下原因之一引起的: 版本号格式不正确:如果版本号格式不正确,则会出现此错误。在这种情况下,需要检查版本号格式是否正确。 版本号包含非数字字符:如果版本号包含非数字字符,则会出…

    python 2023年5月4日
    00
  • 使用豆瓣提供的国内pypi源 原创

    使用豆瓣提供的国内pypi源,可以使我们在国内下载Python包的速度更快、更稳定。下面是使用豆瓣提供的国内pypi源的详细攻略: 步骤一:安装pip pip是一个python包管理工具,在使用pip之前,需要先安装pip。如果你的电脑已经安装了Python,则可以通过以下命令来安装pip: $ easy_install pip 步骤二:备份pip源 在更换…

    python 2023年5月14日
    00
  • 如何使用 Redis 的哈希槽(Hash Slot)来实现分片?

    以下是详细讲解如何使用 Redis 的哈希槽(HashSlot)来实现分片的完整使用攻略。 Redis 哈槽简介 Redis 哈希槽是 Redis 分布式集群的核心机制之一,用将数据分散到多个节点上,实现数据的分片存储和负载均衡。Redis 哈希槽将整个数据空间划分为 16384 个槽位,每个槽位都有一个唯一的编号可以将数据根据其键值哈希到对应的槽位上。 R…

    python 2023年5月12日
    00
  • Python正则表达式反对Latin-1字符编码?

    【问题标题】:Python regex against Latin-1 character encoding?Python正则表达式反对Latin-1字符编码? 【发布时间】:2023-04-05 02:08:02 【问题描述】: 我有一个包含(我相信)latin-1 编码的文件。 但是,我无法将正则表达式与此文件匹配。 如果我 cat 文件,它看起来很好:…

    Python开发 2023年4月6日
    00
  • 详解python中的 is 操作符

    当我们说一个变量“是”另一个变量时,我们通常想要比较它们在内存中的位置。在Python中,使用is操作符可以比较两个对象的身份标识是否相同。我们来详细探讨以下Python中的is操作符。 目录 is操作符的语法 is操作符与 == 操作符的比较 示例1:比较字符串变量的身份标识 示例2:比较列表变量的身份标识 结论 1. is操作符的语法 在Python中,…

    python 2023年6月5日
    00
  • python 中raise用法

    当Python执行期间发生某些异常错误,可以使用raise语句来引发异常。通过raise语句抛出的异常必须是某个已定义异常类的实例,或是某个继承自Exception类的实例。这里是关于Python中raise用法的详细攻略。 什么是Python中的raise? raise语句通常用于抛出一个异常。当出现某种错误时,可以使用raise语句抛出异常并终止程序,可…

    python 2023年5月13日
    00
  • python多线程编程方式分析示例详解

    关于“python多线程编程方式分析示例详解”的完整攻略,我会从以下几个方面进行讲解: 多线程的概念和优势 多线程的实现方式 常用的多线程编程模型 两条示例详解 1. 多线程的概念和优势 多线程是指在一个进程中包含多个执行流,它们可以并行或并发地执行。相比于单线程,多线程编程有以下优势: 提高程序的响应速度和执行效率,特别是对于IO密集型操作或计算密集型操作…

    python 2023年6月6日
    00
  • python实现一个简单的并查集的示例代码

    下面就为您详细讲解“Python实现一个简单的并查集的示例代码”的完整攻略。 什么是并查集? 并查集(Disjoint Set)是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。 实现思路 实现一个并查集需要考虑以下几个部分: 初始化并查集:将每个元素的父节点指向自己,表示它们都是一个单独的…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部