当前位置: 首页>编程语言>正文

python find行号 python df行数

第五课内容:Pandas 入门

pandas DataFrame(数据框) pandas Series 数据的选择 案例:Iris 鸢尾花数据
数据的导入和观察
数据选择复习
数据可视化初探

Pandas DataFrame

我们存储数据最常用的形式是表格
表格就是由行与列所构成的一种有序的组织形式
表格的第一行一般是变量名称,也称为表头(header)
不同的变量可以是不同的数据类型。

比如下面这个表格罗列了 2016 年 GDP 最高的 5 个国家以及对应的首都,人口(百万),GDP(万亿美元),和所在大洲




python find行号 python df行数,python find行号 python df行数_python find行号,第1张


问题:如何在 python 中表示以上这个表格?

思考思路:

在第四节课中,我们介绍了二维 numpy array。但是 numpy array 只能存储一种数据类型,但是上面的表格同时有数值变量和字符串,

——>所以我们需要使用 pandas 包来处理,

——>pandas 是数据科学中最常用的包之一,可以高效的处理各种数据格式。也因为 pandas是基于 numpy 构建的。

我们将重点介绍 pandas 中的 series 和 DataFrame

从字典创建一个 DataFrame

回忆第三节课程,我们需要键(key)和值(value)来定义一个字典

# 首先产生一个叫 gdp 的字典


python find行号 python df行数,python find行号 python df行数_赋值_02,第2张

产生一个叫 gdp 的字典


python find行号 python df行数,python find行号 python df行数_数据_03,第3张


这就是在 Python 中显示的表格啦!简洁美观!

记得每一次运行都要记得重新赋值 import pandas as pd ,不然后面是没有办法运行没有被定义的代码的。

这里的套路是:首先要定义一个叫 gdp 的字典名称,DataFrame 是一个有魔法的固定词汇,数据表格的意思,也就是用它来赋值代码,输出的结果是一个表格,这可是在 python 中的表格~

gdp_df=pd.DataFrame(gdp),在 pandas 里面,强制转换 gdp 这个字典为 DataFrame 的格式,等同于 被赋值的 gdp 的 DataFrame 数据表格。我的理解啊~

首行加黑加粗的是表头,主体部分就是我们定义的数据内容了。

细心的人会发现,这里的表格的表头内容排列顺序和代码复制的内容顺序是不一样的,赋值的时候前面是 country,capital,population,在形成的表格前面的是 capital,continent,country。所以我们要是需要顺序一致的时候,应该怎么办呢?

如图:


python find行号 python df行数,python find行号 python df行数_python find行号_04,第4张

表格行首内容顺序与代码一致

需要加 columns 这个名词,把顺序强调一遍,输出的结果就是和代码顺序一样的表格行首啦!也就是,使用 column 选项可以选择列的顺序

接下来,我们也可以通过 index 选项添加自定义的行标签(label)


python find行号 python df行数,python find行号 python df行数_python find行号_05,第5张

把第一列的数字改成国家缩写小写

修改行和列的标签


python find行号 python df行数,python find行号 python df行数_python find行号_06,第6张

修改内容

这里通过 index 和 columns 的索引修改相应的内容,把黑体的内容首字母全部换成大写了。

其实就是,要是需要修改表格内的内容,要在代码行重新输入新的值,然后运行就能修改 Python 表格中的内容了。

增加一列数据


python find行号 python df行数,python find行号 python df行数_数据_07,第7张

增加数据

这个表格中增加的内容是表示这是 GDP 前 5 的数据,然后还有相对相应的国土面积。也就是在 Python 表格中增加数据的话,要在代码行重新赋值一个表头内容,然后一般是用字典的格式来定义主体内容,然后重新输出表格,就能得出增加数据的 Python 表格来。

Pandas series

pandas 中的 series 对象是另一个重要的数据结构
你可以将其视为一个一维的 DataFrame 或者一个一维数组(array)加上一个索引(index)
在这节课后半部分,我们将展示 series 在数据过滤和分组运算中起到作用

来吧!又是一个新词汇!记下来哦!


python find行号 python df行数,python find行号 python df行数_数据_08,第8张

Pandas series

DataFrame 是二维的数据,Series 是一维数据,是一个数列类型。Series 可以看作是DataFrame 表格中的某一列。

也是一样的套路,先定义一个函数,赋值 series ,在等号右边的 pd.Series 的 Series 一定要大写,和上面的 DataFrame 一样,D 和 F 要大写,可能是因为程序智能识别大写首字母这些词汇的含义,小写可能就不能识别那一层特殊功能了。 呃,有魔法和没魔法的区别 吧~

其中 14 语句中,第一列和上面的例子一样,一旦没有重新赋值,默认的索引就是 0,1,2,3这样排列下来的。在 15 语句中,用 index 重新赋值后,列的表头内容就出现变化了。

# 当我们使用点操作符来查看一个变量时,返回的是一个 pandas series
# 在后续的布尔筛选中使用点方法可以简化代码
# US,...,UK 是索引


python find行号 python df行数,python find行号 python df行数_数据类型_09,第9张

series 取表格中一列的值

其实到这一步也是出了很多错。在前面定义有歧义,导致这一步查找 GDP 的数据时,出现的全是 NaN 这个代号:


python find行号 python df行数,python find行号 python df行数_数据类型_10,第10张

查找无数据,错误示范

往上查看,从某一步开始数值都已经是这样了,但是我竟然也没发现。就是从这里开始的:


python find行号 python df行数,python find行号 python df行数_赋值_11,第11张

出错的输出

全部重新打一遍,也是没发现出问题,但是输出全部都是错误提醒啊,来,感受一下满屏的错误提示:


python find行号 python df行数,python find行号 python df行数_数据_12,第12张

出错提醒

发去群里求助,老师让我把从头开始的代码都给他看,然后发现问题在最初的定义赋值,或者 GDP 大小写开始。因为前面字典定义的 GDP 是小写的,后面为了和行首内容字母大写相一致,就直接修改行首内容,导致的结果就是程序识别不了 GDP=gdp 的数值。所以只能显示 “NaN”。

老师说这种情况,要不在创建的时候就和字典一致,要不在字典创建之后,使用 gdp_df.columns=[ ] 的形式对列名进行修改。

这是需要取 gdp 这一列数据的语法,在 Series 中直接就是后缀加“ .索引” 的形式得出数据。


python find行号 python df行数,python find行号 python df行数_数据_13,第13张

得出数据类型

和之前的课一样的套路,需要分辨数据类型的时候,还是用 type 这个词汇实现魔法啊~~


python find行号 python df行数,python find行号 python df行数_数据_14,第14张

直接得出索引

也可以用后缀加 index 直接得出 gdp 这一列对应的索引,也就是列的行首内容。在这里 gdp 对应的就是国家。


python find行号 python df行数,python find行号 python df行数_df python 增加数据_15,第15张

返回一个布尔型的 series

在 gdp 这一列,有哪些数值是大于 4 的,大于 4 的用 True 表示,不大于 4 的用 False 表示。

老师说这样的应用在后面会经常用到哟~


python find行号 python df行数,python find行号 python df行数_数据_16,第16张

用字典来创建 Series

# 我们也可以将 series 视为一个长度固定且有顺序的字典,一些用于字典的函数也可以用于series

先创建一个字典,通过字典创建一个 Series 数据。

# 判断 ’US' 标签是否在 gdp_series 中


python find行号 python df行数,python find行号 python df行数_数据_17,第17张

判断 ’US' 标签是否在 gdp_series 中

数据的选择

DataFrame 格式数据(如果只是用 [ ] 则产生一个series);
df [ 'column_name' ] —— 选取列,生成 Series 格式数据;
df.column_name —— 选取列,生成 Series 格式数据
使用 loc 和 iloc 方法,选择行和列:
df.loc[ ] —— 使用行和列的 标签索引选取数据
df.iloc[ ] ——使用行和列的 数值索引选取数据
使用布尔索引筛选数据

这太多括号啦!看得有点晕,首先看选取列的三种方法,2 个中括号,1 个中括号和没有中括号的区别。


python find行号 python df行数,python find行号 python df行数_python find行号_18,第18张

df [ ['column_name'] ]

这个我的理解是,在 gdp 这个 DataFrame 的表格中,找出 Country 这个列的数据内容。这个用法不限于一列,要是想要显示更多列,也是一样的用法:


python find行号 python df行数,python find行号 python df行数_数据类型_19,第19张

选取 Country 和 gdp 这两列

下面显示一个中括号的运算。


python find行号 python df行数,python find行号 python df行数_赋值_20,第20张

df [ 'column_name' ]

同样的内容, 23 条是 DataFrame 类型, 24 条是 Series 类型,我们可以用 type 这个词汇来判断数据类型:


python find行号 python df行数,python find行号 python df行数_赋值_21,第21张

数据类型的显示

我们再来看看 df.column_name 这样的格式,出来的结果:


python find行号 python df行数,python find行号 python df行数_赋值_22,第22张

df.column_name

以上三种,就是:

df [ ['column_name'] ]

df [ 'column_name' ]

df.column_name

都是通过以上句型来选取列的数据内容。

觉得这个和以前学英语差不多啊!记单词,记句型,注意括号使用的语法。。。都是一个套路

上面讲的是列的索引,要是我们需要行的数据呢?

中括号里面写的是行所对应的数值索引,这有点像之前学的切片:


python find行号 python df行数,python find行号 python df行数_数据_23,第23张

行的数据选取

loc 方法

是一种基于行标签和列标签选取数据的方法
可以选取特定行或列,也可以同时指定所需要的行与列
和二维 numpy array 的格式非常类似

我们先来一个例子,需要 JP 和 DE 的行数据时,df.loc[ ]


python find行号 python df行数,python find行号 python df行数_赋值_24,第24张

df.loc[ ] —— 使用行和列的标签索引选取数据

要是我们除了想要特定的行数据,还想要特定的列,就在行的索引方括号后面加 逗号和列的索引就可以了:


python find行号 python df行数,python find行号 python df行数_python find行号_25,第25张

df.loc[ ] —— 使用行和列的标签索引选取数据

增加的索引值是标签数据,也就是对应的字符串。loc 方法正是基于标签选取数据的方法。

要是需要整一行的数据,和之前学的切片里面的公式语句差不多,用冒号来表示:


python find行号 python df行数,python find行号 python df行数_赋值_26,第26张

df.loc[ ] —— 使用行和列的标签索引选取数据

iloc 方法

和 loc 方法不同的地方是,iloc 是基于行列索引进行数据选择而不是标签
具体使用方法和 loc 类似,用行/列索引代替标签

在一个表格中,想要得到其中某行的数据,用 df.iloc[ ]


python find行号 python df行数,python find行号 python df行数_赋值_27,第27张

df.iloc[ ] ——使用行和列的数值索引选取数据

要是想要得到特定的列的数据呢? 套路都一样,直接后面加方括号,里面填对应的列的数字:


python find行号 python df行数,python find行号 python df行数_数据类型_28,第28张

df.iloc[ ] ——使用行和列的数值索引选取数据

使用布尔索引(boolean Indexing)筛选数据

我们可以使用 pandas series 来获取一个 boolean series
布尔索引的使用和二维 numpy array 类似
可以结合 [ ] 或者 loc一起使用

老师说前面给我们留下了一个布尔型索引没有后文,如下图的 36 条:


python find行号 python df行数,python find行号 python df行数_赋值_29,第29张

使用布尔索引(boolean Indexing)筛选数据

要在一个表格之内找到洲所在是 Asia 的,用布尔型判断有哪些是符合,哪些是不符合的。

37 条用句型套用,得出数据表格,内容是,符合 Continent 在 Asia 的国家有 CN 和 JP ,所对应的行内容全部显示出来。

这个时候,我们套用 loc 句型,得出的结果是一样的:


python find行号 python df行数,python find行号 python df行数_df python 增加数据_30,第30张

使用布尔索引(boolean Indexing)筛选数据

再来一个例子吧~

我们要在表格里面找到所在大洲是欧洲,并且 GDP 是要大于 3 的那个国家数据,首先用布尔型看数据符合还是不符合:


python find行号 python df行数,python find行号 python df行数_python find行号_31,第31张

使用布尔索引(boolean Indexing)筛选数据

这里可以看到,只有 DE 这个数值才符合要求。我们看句型中,要是需要两个或两个以上的条件要同时满足,需要用到 & 这个符号,代表优先级,也就是同时运算。

然后用 DataFrame 这个句型进行运算,得到符合条件的整行数据:


python find行号 python df行数,python find行号 python df行数_python find行号_32,第32张

使用布尔索引(boolean Indexing)筛选数据

还有鸢尾花数据这个大案例,留在下一篇文章啦!

作业5-1:

选出亚洲或者北美洲的国家记录 (提示:使用 isin 方法)
选出 gdp 大于 4 兆亿美元的国家

文科生学Python系列9: Pandas入门www.jianshu.com

python find行号 python df行数,python find行号 python df行数_赋值_33,第33张


https://www.xamrdz.com/lan/5hv1962547.html

相关文章: