【数据科学】pandas数据库中的dataframe

前言

和series的关系

我们上一篇文章讲到了pandas数据库里面的series,我们了解到那是一种一维的数据结构,我们今天聊聊它的plus版--dataframe,下面有一张图十分清晰地展示了series和dataframe之间的关系。

编译

导入数据

我们打开jupyter noyebook,把pandas和numpy数据库进行导入

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

我们解释一下这几行代码,我们第一行导入了numpy这一个数据库,并为了后面的编译简洁,我们把numpy在这个文件里面命名为np,同理可知,我们在这里把pandas这个数据库命名为pd,第三行则是我们在pandas这个数据库里面取出Series和DataFrame。这便是我们这个文件的导入数据库环节。

有的同学会对import...as这个语法和from....import产生疑惑,那在这里我给大家区分一下,import...as的意思是导入某个数据库,并为了方便,在我们当前编写的文件中给它一个外号,而form...import呢,则是在我们所选中的数据库中选择几项进行导入,这里要注意的是当我们想用的时候就得去写全称,而不是外号。我举个例子方便大家理解,我们想在pandas里面调用Series的时候,第一种情况,我们要写的是pd.Series,而第二种情况,我们要写的是pandas.Series.

从网站上拿dataframe

今天,我们去别的网站上拿一个dataframe的数据,因此我们在这里引入一个数据库webbrower,从名字上我们就可以知道这个数据库是去干什么的了,这个数据库可以帮我们打卡一个网站。我们展示一下我们的代码。

import webbrowser
link='https://www.tiobe.com/tiobe-index/'
webbrowser.open(link)

我们告诉jupyter notebook,我们要打开的链接是TIOBE Index - TIOBEicon-default.png?t=N7T8https://www.tiobe.com/tiobe-index/

这个网站是干什么的呢,这个网站统计了各种编译语言的使用率,顺便提一句,我们这里使用的是python,它的编译环境是jupyter notebook,jupyter notebook这个编译环境非常适合我们去做数据科学相关的研究。我们通常熟知的pycharm在做数据科学上的便利性不及在jupyter notebook,因此在这个专栏,我们使用jupyter notebook。好了,言归正传,我们最后使用这个数据库来打卡这个网站。我们运行一下刚刚的代码,就会跳出一个网站

我们可以看到这里就有dataframe了,第一页的数据对应的编译语言会直接把我们带到相关网站,因此在这里,我们取第二页的数据,如下图

read_clipboard

我们复制一下dataframe到我们的粘贴板。

并输入下面的一行代码

df=pd.read_clipboard()

在这里,我们定义了一个变量为df,我们用read的模式,将粘贴板上复制的内容打开,我们运行一下这行代码,就会发现我们刚刚复制的东西就出现在了我们面前。 这里要注意一下的是和series一样,这里会提前给我们做好一个index(索引)以方便我们去定位相关的数据。

和之前讲的数据一样,我们这里用type来查看一下我们刚刚在网站上复制到东西是什么数据类型

type(df)

在这里,我们可以看到这是一个dataframe的数据

columns

我们如果想去找到df的数据列表中每一行是一些什么东西,我们可以用.columns来查找,在df中,我们就以以下的形式来表示

df.columns

通过这样一种简单而又快捷的方式,我们就可以顺利地拿到了我们每一列的名称了

为了方便大家阅读,我在这里把我们复制的信息展示一下

我们可以对比一下,看看他们能否对得上。

截取数据

 我们如果不想拿dataframe里面的所有数据,那我们有哪些操作呢,在这里,我们可以去取特定的几列或一列来看看

在这里我们取了rating这里列来看,此外我们还可以拿Position来看看

这些都是一列一列地看,那我们如果想几列几列地看呢?那我们可以去再建一个dataframe

df_new=DataFrame(df,columns=['Programming Language','Ratings'])

在这里,我们创建了一个df_new的新变量,我们在里面填充了一个从df得来的dataframe,我们取了其中Programming language和ratings这两列来组建我们新的一个dataframe。

这里要注意,像我们此前讲的series一样,我们在调用的时候要将dataframe是要将第一个d和f大写才能够正常编译。

我们可以看到我们成功地拿到了这两列的数据了。

可能有的同学想单独取拿到Programming Language这一列时,发现编译出现了点问题

df.Programming Language

这时候,我们来讲讲另一种方式,这种方式可以应对像Programming Language这种列名称中带空格的

df['Programming Language']

通过这种方式,我们就可以轻松地拿到了Programming Laguage里面的数据了

我们来看看这个df['Programming Language']的数据类型是什么

type(df['Programming Language'])

我们可以看到这一列数据是series,实际上,我们看到的dataframe就是由几个series组成的,我们在下一篇文章里面会专门地去对比一下dataframe和series两种类型。

修改数据

假如我们在我们所创建的dataframe中加上一列为change的列,那又会怎么样呢

df_new=DataFrame(df,columns=['Programming Language','Ratings','change'])

我们可以看到我们加的那一列change的每一项数据都是NaN,对于NaN不理解的同学可以去看看数据科学这一个专栏的series的那一篇文章,里面就有讲到NaN的内容。

那我们现在就来给我们所创建的change来赋一下值

我们采用range这一函数来赋值

df_new['change']=range(0,30)

此外,我们还可以用np.arange来赋值

df_new['change']=np.arange(0,30)

我们还可以使用从矩阵再转series的方式来赋值

df_new['change']=pd.Series(np.arange(0,30))

最后,我们还可以去专门赋值某些索引

df_new['change']=pd.Series([100,666,8,24],index=[0,8,24,28])

总结

以上就是关于pandas中dataframe的基本知识了,下一篇文章,我们将对series和datafraem做一些总结和对比,希望你能跟随一下这个专栏。最后,别忘了,点一波关注哈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值