python:Pandas的数据结构:Series,DataFrame

简介: 1.Pandas提供的数据结构和函数的设计,将使表格数据的工作快速、简单、更易懂。所以利用Pandas进行数据操作、预处理、清洗是Python数据分析中的重要技能。

1.Pandas提供的数据结构和函数的设计,将使表格数据的工作快速、简单、更易懂。所以利用Pandas进行数据操作、预处理、清洗是Python数据分析中的重要技能。

常见的数据存储形式有Excel和数据库这两种,不管是Excel还是数据库他们存储数据的方式都是以表格样式进行存储,有行、有列,并且每一行和每一列都有自己的索引

例如:name,age等这些就是列索引,可以方便我们获取数据。很不巧的是我们Pandas的DataFrame的结构就和他们相同,Series的结构和表中的行的结构也相同

。上代码演示:

# 导入pandas模块
import pandas as pd
#通过Series存储每个英雄的基本信息
#创建Series
s1 = pd.Series([1,'盖伦','18','150.0','男'])
s2 = pd.Series([2,'乐芙兰','19','160.0','女'])
s3 = pd.Series([3,'亚索','20','170.0','男'])
s4 = pd.Series([4,'鳄鱼','21','180.0','男'])
s5 = pd.Series([5,'克烈','22','190.0','男'])
series_list=[s1,s2,s3,s4,s5]
#创建一个DataFrame对象存储通讯录
df=pd.DataFrame(series_list)
# 打印出构造的DataFrame
print(df)

看着很复杂,但是别慌,慢慢来~~

根据打印的结果我们来进一步分析

整个数据被分为三部分:行索引(index),列索引(columns)及数据内容(data).

但是当行和列索引的值没被定义的时候,会被默认为0~n,索引就是为了更好的查询资料。接下来解析一下series

Series是Pandas中最基本的对象,Series类似一种一维数组, 能为数据自定义标签,也就是行索引(index)我们来创建一个series看看效果:

# 导入Series
from pandas import Series,DataFrame
# 创建Series,使用默认索引
sel =  Series(data=['cahngzhang','uzi','xiaotian','xiye','pdd'])
print(sel)
0    cahngzhang
1           uzi
2      xiaotian
3          xiye
4           pdd
dtype: object

一个Series其实就是一条数据,Series方法的第一个参数是data,第二个参数是index(索引),但是上述代码没有,所以会传默认值0~n.

那么接下来自定义一下我们的行索引.

# 导入Series
from pandas import Series,DataFrame
# 创建Series,使用自定义索引
sel =  Series(data=['cahngzhang','uzi','xiaotian','xiye','pdd'],
              index = ['1','3','5','7','8'])
print(sel)
1    cahngzhang
3           uzi
5      xiaotian
7          xiye
8           pdd
dtype: object

index参数就是我们的行索引值,要注意的是:参数值的个数一定要和data数相同。

在创建Series时数据并不一定要是列表,也可以将一个字典传进去。

from pandas import Series,DataFrame
# 将字典转换为Series
dic={"red":100,"black":400,"green":300,"pink":900}
se2=Series(data=dic)
print(se2)
red      100
black    400
green    300
pink     900
dtype: int64

当数据是字典的时候,会将字典的键作为索引,字典的值作为索引对应的数据值。(我个人喜欢这种方式来写代码,方便理解~)

**二.**DataFrame的创建:

**DataFrame(数据表)**是一种 2 维数据结构,数据以表格的形式存储,分成若干行和列。通过 DataFrame,你能很方便地处理数据。

调用DataFrame()可以将多种格式的数据转换为DataFrame对象,它的的三个参数data、index和columns分别为数据、行索引和列索引。

我们现在就用pandas帮忙常见一套lol王者之师吧。

from pandas import Series,DataFrame
# 创建二维列表存储选手信息
lol_list = [['上单','TheShy',20],
            ['打野','小天',19],
            ['中单','Faker',23],
            ['ADC','Uzi',22],
            ['辅助','Ming',21]]
# 创建dataframe
df = DataFrame(data=lol_list)
print(df)

结果如下

     0       1   2
0   上单  TheShy  20
1   打野      小天  19
2   中单   Faker  23
3  ADC     Uzi  22
4   辅助    Ming  21

好了,您已经成功的创建出一个英雄联盟王者之师,我们再来一起阅读下这段代码。

lol_list是使用一个二维列表,将每一个队员的信息存储到一个列表中。

调用DataFrame()将二维列表转换为DataFrame对象,行列索引使用的是默认0-N数字代表。

有没有办法在创建DataFrame对象的时候为每一列设定一个有意义的名字呢?

我们可以通过给DataFrame构造函数中的参数index,columns传值,来设定DataFrame的中的行列索引的值。

from pandas import Series,DataFrame
# 创建二维列表存储选手信息
lol_list = [['上单','TheShy',20],
            ['打野','小天',19],
            ['中单','Faker',23],
            ['ADC','Uzi',22],
            ['辅助','Ming',21]]
# 创建dataframe
df = DataFrame(data=lol_list,
               index=['a','b','c','d','e'],
               columns=['位置','ID号','年龄'])
print(df)

效果如下

    位置     ID号  年龄
a   上单  TheShy  20
b   打野      小天  19
c   中单   Faker  23
d  ADC     Uzi  22
e   辅助    Ming  21

大家可以对比这两个代码,可以发现第二个可以看到每一列或者每一行都有了一个名字。

当然我们也可以使用字典来创建一个DataFrame数据。

from pandas import Series,DataFrame
import pandas as pd
# 使用字典创建
dic={
    '位置': ['上单', '打野', '中单', 'ADC','辅助'],
    'ID号': ['TheShy', '小天', 'Faker', 'Uzi', 'Ming'],
    'year': [20, 19, 23, 22,21]}
df=pd.DataFrame(dic)
print(df)

效果和上一个相同。通过结果可以看出当字典格式的数据被dataframe整理后,字典的键将作为数据的列索引值

相关文章
|
1月前
|
存储 数据挖掘 数据处理
掌握Pandas核心数据结构:Series与DataFrame的四种创建方式
本文介绍了 Pandas 库中核心数据结构 Series 和 DataFrame 的四种创建方法,包括从列表、字典、标量和 NumPy 数组创建 Series,以及从字典、列表的列表、NumPy 数组和 Series 字典创建 DataFrame,通过示例详细说明了每种创建方式的具体应用。
186 67
|
27天前
|
存储 数据挖掘 索引
Pandas数据结构:Series与DataFrame
本文介绍了 Python 的 Pandas 库中两种主要数据结构 `Series` 和 ``DataFrame`,从基础概念入手,详细讲解了它们的创建、常见问题及解决方案,包括数据缺失处理、数据类型转换、重复数据删除、数据筛选、排序、聚合和合并等操作。同时,还提供了常见报错及解决方法,帮助读者更好地理解和使用 Pandas 进行数据分析。
84 10
|
1月前
|
存储 数据挖掘 索引
Pandas Series 和 DataFrame 常用属性详解及实例
Pandas 是 Python 数据分析的重要工具,其核心数据结构 Series 和 DataFrame 广泛应用。本文详细介绍了这两种结构的常用属性,如 `index`、`values`、`dtype` 等,并通过具体示例帮助读者更好地理解和使用这些属性,提升数据分析效率。
55 4
|
2月前
|
SQL 数据采集 数据可视化
Pandas 数据结构 - DataFrame
10月更文挑战第26天
63 2
Pandas 数据结构 - DataFrame
|
2月前
|
索引 Python
Pandas 数据结构 - Series
10月更文挑战第26天
51 2
Pandas 数据结构 - Series
|
2月前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
265 9
|
2月前
|
存储 算法
非递归实现后序遍历时,如何避免栈溢出?
后序遍历的递归实现和非递归实现各有优缺点,在实际应用中需要根据具体的问题需求、二叉树的特点以及性能和空间的限制等因素来选择合适的实现方式。
42 1
|
5天前
|
存储 C语言 C++
【C++数据结构——栈与队列】顺序栈的基本运算(头歌实践教学平台习题)【合集】
本关任务:编写一个程序实现顺序栈的基本运算。开始你的任务吧,祝你成功!​ 相关知识 初始化栈 销毁栈 判断栈是否为空 进栈 出栈 取栈顶元素 1.初始化栈 概念:初始化栈是为栈的使用做准备,包括分配内存空间(如果是动态分配)和设置栈的初始状态。栈有顺序栈和链式栈两种常见形式。对于顺序栈,通常需要定义一个数组来存储栈元素,并设置一个变量来记录栈顶位置;对于链式栈,需要定义节点结构,包含数据域和指针域,同时初始化栈顶指针。 示例(顺序栈): 以下是一个简单的顺序栈初始化示例,假设用C语言实现,栈中存储
116 75
|
5天前
|
存储 C++ 索引
【C++数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】
【数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】初始化队列、销毁队列、判断队列是否为空、进队列、出队列等。本关任务:编写一个程序实现环形队列的基本运算。(6)出队列序列:yzopq2*(5)依次进队列元素:opq2*(6)出队列序列:bcdef。(2)依次进队列元素:abc。(5)依次进队列元素:def。(2)依次进队列元素:xyz。开始你的任务吧,祝你成功!(4)出队一个元素a。(4)出队一个元素x。
27 13
【C++数据结构——栈与队列】环形队列的基本运算(头歌实践教学平台习题)【合集】
|
5天前
|
存储 C语言 C++
【C++数据结构——栈与队列】链栈的基本运算(头歌实践教学平台习题)【合集】
本关任务:编写一个程序实现链栈的基本运算。开始你的任务吧,祝你成功!​ 相关知识 初始化栈 销毁栈 判断栈是否为空 进栈 出栈 取栈顶元素 初始化栈 概念:初始化栈是为栈的使用做准备,包括分配内存空间(如果是动态分配)和设置栈的初始状态。栈有顺序栈和链式栈两种常见形式。对于顺序栈,通常需要定义一个数组来存储栈元素,并设置一个变量来记录栈顶位置;对于链式栈,需要定义节点结构,包含数据域和指针域,同时初始化栈顶指针。 示例(顺序栈): 以下是一个简单的顺序栈初始化示例,假设用C语言实现,栈中存储整数,最大
31 9