首页 > 数据库 >【数据科学】Pandas数据库中的Series&DataFrame

【数据科学】Pandas数据库中的Series&DataFrame

时间:2024-08-01 22:27:06浏览次数:17  
标签:数据 df Series DataFrame 我们 series data Pandas row

前言

前文再续,书接上一回,前两回讲到了Pandas的Series和DataFrame,今天我们使用jupyter notebook来进一步聊聊series和dataframe之间的关系。之前的文章中,我们了解到series和dataframe之间可以相互转换,看完这篇文章,相信你对它们之间的关系会有进一步的了解。

正文

import data

首先,和之前一样,我们先导入数据库

import numpy as py
import pandas as pd
from pandas import Series ,DataFrame

在这里,我们来创建一个数据data,这个data是可以随自己喜欢去定义,那我这里是定义了三个列表,分别是国家,城市还有人口(人口数据是乱输入的,请勿当真),在每个列表里头又填充了三个元素,就组成了我们的data了。

data={'country':['China','United States','Canada'],'City':['HK','LA','VAN'],'Population':['546658889','8566554895','9541755556']}

我们打印一下data里面的数据,后面我们会将会把这些数据变成我们所熟知的series和dataframe类型,但是我们知道我们这个数据是无法全部转换成series的,因此我们在这里,一个数据组一个数据组去用pandas数据库转换成series类型。

series

如上述代码所示,我们在data里面去找到country这个列表,我们用s1来接住我们变换的数据,接着通过打印我们所创建的s1来查看里面到底装了什么东西。
根据打印出来的内容,我们不难发现我们用pd.Series(data['XXXX]'后,因为这是一个一维的数据,而且每一个元素前面还有索引。既然我们假设其是series,那我们不妨去验证一下。

和专栏里前几篇文章一样,在这里,我们用type()这个函数来查看一下s1的数据类型,果不其然,和我们的假设是一样。那我们就来查看一下它的基本特征

我们通过这两个函数来查看其内容和索引

XX.values
XX.index

通过结果我们发现,内容就是我们此前定义好的东西,而索引呢,我们没有对其进行明确规定,因此系统给我们自动生成了index,它是从0开始,步长为1,到我们的定义元素的数量最大值。那这时候,会有同学提出疑问了,能不能不要系统自己生成,我自己的index要我自己做主。当然啦,这是可以的,下面我们就展示一下如何操作。

dataframe

我们在data部分创建了三个列表,可以看作是一个多维的数据,因此我们把我们的数据用下面的语句转化成我们所熟知的dataframe类型

pd.DataFrame(data)

得到的数据用df这个变量来接住,我们再打印一下df这个变量,我们查看一下结果,这里把我们所定义到的每一个列表的名称都变为了每一 列的名称,而行就是系统自动填补的索引,我们每个列表里头有三个元素,因此index从0到2。

在上面的代码里面,我们取出data这个datafraem类型中名为City的这一列,取出的数据用core这个变量来接住。我们查看一下core的类型,运行结果为serise,这也验证了我们此前的想法,series数据组成了dataframe,换句话说,在我们所创建的这个名为data的dataframe里面,可以转换成三个分别名为country,City,Population的列。

iterrows

df.iterrows()

 在Python中,df.iterrows() 是Pandas库中的一个函数,用于迭代DataFrame的行。当你调用 df.iterrows() 时,它会返回一个迭代器,每次迭代返回一个索引和行的Series对象。这允许你遍历DataFrame中的所有行,并访问每一行的索引和数据。(对迭代器不熟悉或者对迭代器感兴趣的小伙伴们可以去看看博主的另一篇有关于迭代器的文章)

for row in df.iterrows():
    print(row),print(type(row),print(len(row)))

在这段代码中,正在迭代一个Pandas DataFrame df 中的每一行,使用 df.iterrows()。在for循环中,每次迭代都会将一个索引和行的数据赋值给变量 row。然后,我们打印 row,它的类型,以及 row 的长度。

运行的结果如下所示

在运行的结果中,这里显示为元组类型,元组里面包含了index和数据。我们看到每一行row的长度为2,这个2是由index和我们所定义的数据所组成的。

  • row[0]:当前行的索引(一个整数)。
  • row[1]:当前行的数据,这是一个Series对象,包含了该行的所有列数据。
     

我们打印一下row[0]和row[1]的类型。

可以看到,row[0] 是int(整数数据类型),而row[1] 是series的数据类型,也和我们刚刚给出的结果是一致的。

relationship

在这里,我们把data里面的每一列都单独拎出来,分别用a1,a2,a3这三个变量来承接住。

我们创建一个df_new的变量,用我们刚刚创建的三个变量和pandas数据库来创建dataframe,并用index加以命名,分别命名为country,city,population,但在运行结果里面,我们发现和我们此前所创建的data相比,这里填充数据的方式是一行一行填充的,而我们创建的data里面,数据是以列的形式进行填充的。为了还原成和我们所创建data一样,我们转置一下矩阵就可以了。

 这样就和我们所创建的data一致了,这也揭示了dataframe和series之间的相互转化关系。

后续

在这个专栏里面,我将会带大家深入地去探索一下pandas这个数据库的其他特性,希望大伙能专注一下这个专栏,谢谢同学们啦。

标签:数据,df,Series,DataFrame,我们,series,data,Pandas,row
From: https://blog.csdn.net/2301_79740539/article/details/140716012

相关文章

  • pandas 数据帧索引:to_list() 与 tolist()
    我最近为某人编写了一个python脚本,其中我使用to_list()将pandas数据帧的索引转换为列表。然而,这对他们不起作用,因为他们得到:AttributeError:'Index'objecthasnoattribute'to_list'使用他们的Python解释器。我做了一些搜索,发现还有tolist()......
  • 搜索查询后显示完整的 pandas
    我想实现以下非常小的项目,即用户应该输入产品名称,Python应该在数据库中搜索并在pyqt6桌面应用程序中显示查询结果,为此我已经实现了以下基本GUI形式:这里用户输入产品,然后单击按钮,结果将显示在空白处,即:QTextEdit(),最有趣的部分是这个功能:defreturn_product_......
  • Pandas 合并重复行
    我有一个特定的用例,其中我有2个数据帧,它们有2个相同的行(除了1列)。相同的行,我需要与相同的行匹配,任何不匹配的行都需要垂直堆叠。这是场景df1=pd.Dataframe({'id':[0,1,2],'account':['a','b','c'],'details':[[{'a':......
  • 有没有办法将 geopandas 函数应用于除了引发错误的行之外的所有行?
    我正在尝试将缓冲区应用于600,000行的地理数据帧(作为更大过程的一部分),gdf包含几何线串和多线串。当我运行缓冲区代码行时:gdf['buffer_geometry']=gdf.buffer(305)我收到以下错误:GEOSException:TopologyException:分配的深度在-122500003700000处不匹配我......
  • 获取元组索引 DataFrame 中的单行
    我有一个熊猫DataFrame:>>>f=pd.DataFrame.from_dict({"r0":{"c0":1,"c1":2},("r",1):{"c0":3,"c1":4}},orient="index")c0c1r012(r,1)3......
  • Numpy&Pandas:Pandas库(50%-100%)
    目录前言一、排序1.使用索引排序2.使用变量值排序二、计算新变量1.新变量为常量2.根据原变量新增列3.基于一个原变量做函数运算4.在指定位置插入新列三、修改替换变量值1.对应数值替换2.指定范围替换四、虚拟变量变换五、数值变量分组六、数据分组七、分组汇......
  • Pandas:样式列标题
    我正在使用pandasstyler根据列标题的名称为某些列提供背景颜色。虽然这按预期工作,但列标题的背景颜色不会改变。这是我的脚本中应用样式的部分:defhighlight_col(x):ifx.nameinadded_columns:return['background-color:#67c5a4']*x.shape[0]......
  • 有没有办法根据 Pandas GroupBy 的计数在 2 个数据帧之间重复分配值?
    我有两个结构相同但形状和值不同的Pandas数据框:importpandasaspddataframe_1=pd.DataFrame({'customer_id':['id1','id2','id3','id4','id5','id6'],'gender':[......
  • 如何在 pandas 中设置列​​标题的样式?
    假设我有一个带有列标题“A”和“B”的2x2DataFrame:importpandasaspddata_style=[['background-color:#fdfd96',''],['','background-color:#fdfd96']]df=pd.DataFrame([[1,2],[3,4]],columns=["A",&qu......