前言
和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 - TIOBEhttps://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做一些总结和对比,希望你能跟随一下这个专栏。最后,别忘了,点一波关注哈。