接下来,将介绍Pandas库。它是Python在数据科学领域的一个非常重要的工具,用于数据的分析和处理。
Pandas里预定义了两个重要的数据结构:Series、DataFrame,即序列、数据框。
一、Pandas库中的Series数据结构
跟Numpy中的Array有些类似。
1.1 创建Series:通过Python的一个list
新建一个notebook,重命名为Series;
导入两个包;
由上可以发现:Pandas库中Series的value,本质上是之前学习的Numpy的Array数组。
你看一上来,Pandas库,与之前Numpy库,就产生了交集
1.2 创建Series:通过Numpy库的Array
arange:排列的意思,数列
1.3 创建Series:通过Python的一个字典
1.
由上可见,通过Python的字典来创建Series,Series的index,其实就是字典的key。
由于字典的key是可以随意指定的,所以Series的index也是可以随意指定的。
2.
即:
也可以通过单独指定Series的index,来创建Series:
这种方式,更常用。
1.4 访问Series:以index来找value
对上述Series中的values,即Array数组,进行操作。
访问Series中的Array数组时,可以通过像Python中的字典一样,访问元素。
- index为‘A’的value是什么?
- value大于2的有哪些元素?
1.5 转换:Pandas的Series,转换为Python的字典
上述创建Pandas库的Series时,可以通过Python的一个字典来创建。
反之,也可以将一个Series,转换为一个Python的字典:
下面通过字典又能转换为原来的一样的Series:
Pandas库中的Series,
与Python中的字典,渊源颇深啊~
1.6 更改:Series的index
Pandas库的Series,它的index是可以改变的:
以s5为例:
1.7 更改:Series的名字、其中index名
可以给一个Series起一个名字:
也可以给Series的index,起一个名字:
二、Pandas库中的DataFrame数据结构
2.1 创建DataFrame:通过粘贴板
一个很cool的方法:
1.
导包;
打开一个web界面;
2.
复制web网页中上述红框中内容:
回到Jupyter Notebook:读取解析粘贴板中的内容,转换为一个DataFrame:
出现问题:
分析:因为目前网页内容(上图),与课程演示内容(下图),有所变动:即多了一个小图标:
3.
所以,我就找了一下其他的排行榜的内容作为例题:
链接:https://hellogithub.com/report/tiobe/
复制web网页中下述内容:
回到Jupyter Notebook:读取解析粘贴板中的内容,转换为一个DataFrame:
奇怪:
我明明复制了只是前10行的内容,为什么上述却是所有内容?
发现:确实是一个DataFrame:
2.2 访问查看某一列、某几列
1.
获取查看DataFrame的所有列名:
获取查看某一特定列的value:
也可以通过键值对的形式(字典),来访问某一特定列的value:
上述的某一列,它的本质是什么呢?
对,本质是上节介绍的Series序列。
2.
获取查看某几个特定列的value:通过多个列名来过滤,形成一个新的DataFrame:
如果,过滤的列名不存在原来的表格中时,那么Pandas就会自动的创建这个列名,并填充元素为空:
2.3 如何给新增加的列,全部赋值
1.
使用Python自己的range()函数:
其实,上述有30行内容,我只是截屏了前10条内容。
2.
使用Numpy库中的arange()函数:
看来,上述的两个函数,功能差不多。
3.
如果放进Series方法中,也可以:
比较的名正言顺:
2.4 如何给新增加的列,的指定元素赋值
当然是,index索引来指路:
三、深入理解Series和DataFrame
3.1 Series
1.
导包;
定义一个源数据,即Python中的字典。有三个key,每个key对应的value都是一个Python中的list;
data = {
'Country':['Belgium','India','Brazil'],
'Capital':['Brussels','New Delhi','Brasilia'],
'Population':[11190846,1303171035,207847528]
}
基于上述源数据的字典,来创建一个Series:
由上述s1这个Series可知:
Series有两部分组成:
- values:本质是Numpy库中的Array数组类型
- index:就是默认的索引
2.
当然,上述的默认索引,是可以更改的:
3.2 DataFrame
1.
基于上述源数据的字典,来创建一个DataFrame:
由上可知:
- Python的字典,可以顺滑转换为DataFrame
- DataFrame的某一列,就是一个Series序列。即,DataFrame 由一竖竖Series来组成的。
2.
在Python中,如果是一个generator生成器,那么就可以for循环来取出:即可以是一行一行的打印出来的。
发现:
- 它是Python中的一个tuple元组型,且其内容由两部分组成:
tuple型
是Python中一种数据类型:元组。是list列表的”亲兄弟“,使用方法几乎相同。但是,两者区别是:
- list列表,经常抛头露面,能随意的增删改查。 ------------------------------
- tuple元组,只能查看,不能增删改。即,使数据写保护,更安全。------- 可视为不可变的list
在形式方面:
list列表:
tuple元组:
3.
既然有两部分组成,那就打印出来看看:
- index+Series
由上可知:
DataFrame的一行行,刨除最前面的int编号,也是由Series来构成的。
3.3 由Series来创建DataFrame
1.
既然如此,那么能不能由Series来创建DataFrame呢?
- 创建三个Series
- 确实组成了一个新的DataFrame。
序列Series的values,本质上是数组Array。
2.问题:
这个新的DataFrame,跟原模板有出入:方向不对
解决:
转置一下:
3.
问题:新的DataFrame还缺少一个Column,即没有列名。
解决:
3.4 两者关系
Series:一维的数据结构,分为index、values两部分。
DataFrame:二维的数据结构。由多个Series组成。
从形式上看:
是不是两列的表格,就是Series,三列及以上的表格,就是DataFrame?
Comments | NOTHING