引入
numpy已经能够帮助我们处理数据,能够结合matplotlib解决我们数据分析的问题,那么pandas学习的目的在什么地方呢? numpy能够帮我们处理处理数值型数据,但是这还不够 很多时候,我们的数据除了数值之外,还有字符串,还有时间序列等 比如:我们通过爬虫获取到了存储在数据库中的数据 比如:之前youtube的例子中除了数值之外还有国家的信息,视频的分类(tag)信息,标题信息等 所以,numpy能够帮助我们处理数值,但是pandas除了处理数值之外(基于numpy),还能够帮助我们处理其他类型的数据。
什么是pandas?
pandas是一个Python软件包,提供快速,灵活和富于表现力的数据结构,旨在使使用“关系”或“标记”数据既简单又直观。它旨在成为在Python中进行实际,真实世界数据分析的基本高级构建块。此外,其更广泛的目标是成为任何语言中可用的最强大,最灵活的开源数据分析/操作工具。它已经朝着这个目标迈进了。
pandas的常用数据类型
1、Series 一维,带标签数组
2、DataFrame 二维,Series容器
(1)Series创建
pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
data:类数组,可迭代,字典或标量值,包含存储在系列中的数据。在0.23.0版中进行了更改:如果data是dict,则将为Python 3.6及更高版本维护参数顺序。
index:类数组或索引(1d)值必须是可散列的,并且与data的长度相同。允许使用非唯一索引值。如果未提供,则默认为RangeIndex(0,1,2,…,n)。如果同时使用了字典和索引序列,则索引将覆盖在字典中找到的键。
dtype:STR,numpy.dtype,或ExtensionDtype,可选
输出系列的数据类型。如果未指定,则将从data推断出来。
copy:bool,默认为False,copy输入数据。
import pandas as pd import numpy as np t = pd.Series(np.arange(12),index= list("asdfghjklpoi")) print(t) print(type(t))
注意几个问题:pd.Series能干什么,能够传入什么数据类型让其变为series结构。index是什么,在什么位置,对于我们常见的数据库数据或者ndarray来说,index到底是什么如何给一组数据指定index。
c = {"name":"lishuntao","age":18,"gender":"boy"} t1 = pd.Series(c) print(t1) print(type(t1)) print(t1["name"]) print(t1["gender"])
从上面可以看出,通过字典创建一个Series,字典的键就是索引。
重新给其绑定其他的索引之后,如果能够对应的上,就取其值,如果不能,就为Nan。如图所示:
import numpy as np import pandas as pd a = {"a":12,"name":"lishuntao","c":"xiaoc","age":18,"gender":"man"} t1 = pd.Series(a) print(t1) print(type(t1)) t2 = pd.Series(a,index=list("abcdf")) print(t2)
numpy中的nan为float,pandas会自动根据数据类型更改series的dtype类型。
Series切片和索引
import numpy as np import pandas as pd a = {"a":12,"name":"lishuntao","c":"xiaoc","age":18,"gender":"man"} t1 = pd.Series(a) print(t1) print(t1[:2]) print(t1[1]) print(t1[["a","c","gender"]]) print(t1[0:5:2])