引言
上一篇关于数据科学入门的文章,我们聊到了关于numpy数据库的使用(主要是array和mat两种的创建和使用),那么今天我们就来讲讲pandas这个数据库吧(从serise的角度出发)。
怎么下载pandas数据库
我们想要用到series的时候,我们就要先去调用pandas这个数据库,和numpy这个数据库一样,我们想要使用pandas就得先去把这个数据库下载下来,我们在cmd里面去编译下面这一行代码
pip install pandas
就可以顺利地把pandas这个数据库download下来了。
出现上面这个画面的时候也就意味着你已经成功地把pandas这个数据库安装下来了。
我们开始使用jupyter notebook进行编译。
正文
导入
万里长征的第一步:导入数据库!!!
创建series
通过下面这个格式,我们就能够创建出我们第一个series的数据啦
创建series一共有四种方式
- 基本形式:pd.Series([data])
- 使用切片的形式:pd.Series(np.arange(X,Y,Z))
- 使用字典的形式:pd.Series({'index':data})
- 使用index和data分离的形式:pd.Series([1,2,3,4],index=['a','b','c','d'])
1.基本形式
pd.Series([data])
data为数字,数字,数字的形式出现
PS:这里要格外注意,Series里面第一个S一定要大写,否则系统就要像下面一样报错
series和一般的数据不同的地方就在于它会有一个index,看到上面的编译结果,你应该也能发现了,上面的编译结果中第一列代码为index(就是python里面的索引),这里的index是从0开始的,第二列就是我们所input的值了,不信的话,我们可以使用下面两行代码试试
s1.index
si.values
结果也和我们所想的是一样的。
2.切片
接下来,和之前讲的numpy数据库一样,我们讲讲切片,这里我们先上代码
这里可能有同学会有疑惑了,怎么这里的参数变成一个啦,这还怎么做啊
来,我们看看arange的用法:
- 一个参数时,参数值为终点值,起点取默认值0,步长取默认值1。
- 两个参数时,第一个参数为起点值,第二个参数为终点,步长取默认值1。
- 三个参数时,第一个参数为起点,第二个参数为终点,第三个参数为步长,其中步长支持小数。
那我们上面的就是从0开始数到10为止(10不计入我们的计算范围)
3.使用字典的形式创建Series
如下面的创建形式
pd.Series({'index':data})
编译结果如下:
4.index和data分开
pd.Series([1,2,3,4],index=['a','b','c','d'])
编译结果如下:
以上便是在pandas数据库中创建series的几种方法了,如有什么问题,可以随时联系博主的喔。
关于索引
透过索引查找values
我们用下面的代码可以用我们所命名的索引来查看我们的数据
sX['Y']
我们用s3和s4来验证一下我们的想法
但是这里要格外注意的是如果是系统帮我们去创建的index,我们是无法透过索引去查找我们的data的,譬如我们的s1和s2这两个数据
通过我们的编译结果,我们就可以清楚地看到了以系统自动创建index(索引)的方式是不可以用索引去查找数据的。
截取series
同时如果我们不想要全部数据,就只想要一部分的数据,我们可以通过限制values的大小来实现,譬如在我们刚刚创建的s4里面,我们就可以通过让values的值大于2来实现series中特定数据的截取,使用下面的这个格式即可
s4[s4>2]
编译结果如下,我们可以看到它已经按照我们的要求去对series进行部分的截取了
和字典的转换
series和字典有一个非常明显的相同点,那便是他们都有着index(索引),在第三种series的创建方式中,我们就是利用字典向series的转换来实现的,那么我们可不可以把我们创建出来的series去转成字典呢,答案是可以的,我们透过下面这一行代码就可以实现了
s3.to_dict()
我们分别用s1,s2,s3,s4跑一下看看他们各自的编译结果
结果也和我们所设想的是一样的
既然我们创建出来了一个透过这种方式创建出来了字典,那我们能不能再把创建出来的字典转回去series
答案是当然可以啦,那我们不妨试试看
我们通过下面这行代码转换回去
s5=pd.Series(s4.to_dict())
它的运行结果是
可以看到s5和s4是一样的,因为s5是让s4转到字典后再转来series的,就相当于围着操场跑了一圈,最后还是回到了原点的位置。
基本知识
关于NaN
有的同学再实际操作的时候反馈说,为什么values里面出现了NaN这一个东西,那我们今天来展示一下他的代码
index_1={'a','b','c','d','e'}
s6=pd.Series(s5,index=index_1)
这里透过代码,我们可以看到这位同学是把里面的索引再加了一个,我们再回看一下s5的数据
我们再把刚刚同学的代码跑一下
我们可以看到e这里因为没有填充数据,所以它这里为NaN,此外我们还试了一下其他的错误
判断是否为空和非空
我们在这里把s5里面的index变成了我们的index,最后就让每一个数都变成了NaN,因此我们在编译的时候要格外注意原先数据的index的一致性,其实这个NaN和我们之前认识的null是一个东西,所以我们可以用pd.isnull()来判断每个values是否为空
演示如下
同理,notnull这一个格式就是刚好相反啦
当然,这里的数据类型都是布尔类型啦
关于series的命名和index的命名
在这里,我们把s6命名为kobe,我们使用下面的语法
s6.name='kobe'
如果我们是想去对其index进行命名,我们只需要在s6和name之间在加一个index就可以啦
s6.index.name='forever8&24'
series的知识我们就讲到这里,而pandas里面会有一个非常重要的dataframe,接下来博主也会跟大家聊聊,那不妨关注一下博主和【数据科学】这一个专栏吧。
标签:index,serise,series,数据库,pandas,pd,Series,我们 From: https://blog.csdn.net/2301_79740539/article/details/140526684