目录:
一 pandas及其重要性
- pandas是数据分析工作的首选库。它含有使数据分析工作变得更快更简单的高级数据结构和操作工具。
- pandas是基于Numpy构建的让以Numpy为中心的应用变得更加简单。
- 它能满足工作中的许多需求:
① 具备按轴自动或显式数据对齐功能的数据结构。防止由于数据未对齐导致的常见错误。
② 集成时间序列功能。
③ 技既能处理时间序列也能处理非时间序列数据的数据结构。
④ 数学运算和简约(agg),可以根据不同的元数据(轴编号)处理。
⑤ 灵活处理缺失数据。
⑥ 合并及其他出现在常见数据库中的关系型运算。 - pandas可以解决的数据问题随着它的库规模的增大而变得更加强大,成为数据分析一个不可或缺的工具。
二 pandas的数据结构介绍
1 Series
- Series是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相关的数据标签(即索引)组成。由一组数据即可产生最简单的Series。
- Series的字符串表现形式为:索引在左边,值在右边。自动创建一个0~N-1的整数型索引,可以通过values和index属性获取其数组表示形式和索引对象。
obj = Series([4,7,-5,3])
obj.index
obj.values
- 可以通过索引的方式选取Series的单个或者一组值。
obj['one'] = 1
- 数组运算(如根据布尔型数组进行过滤、标量乘法、应用数学函数等)会保留索引与值之间的链接。
obj[obj > 0]
obj * 2
np.exp(obj)
- 可以将Series看作一个定长的有序字典,索引到值之间是一个映射。
'a' in obj
- 如果数据被存放在一个python字典中,也可以直接通过这个字典创建Series。
data = {'one':1,'two':2,'three':3}
obj = Series(data)
- 如果只传入一个字典,则结果Series的索引就是原字典的键(有序排列)。
- Series最重要的一个功能是:它在算术运算中会自动对齐不同索引的数据。
- Series对象本身及其索引都有一个name属性,该属性跟pandas其他的关键功能关系非常密切:
obj.name = ' population'
obj.index.name = 'state'
obj.index = ['one','two','three','four'] #通过赋值的方式修改索引
2 DataFrame
- DataFrame是一个表格型的数据结构,含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔值等)。
- DataFrame既有行索引也有列索引,可以被看做是Series组成的字典(共同用一个索引)。DataFrame面向行和列的操作基本上是平衡的。
- DataFrame中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。也可以轻松地将其表示为更高维度的数据(层次化索引的表格型结构,高级数据处理功能的关键要素)。
- 构建DataFrame的方法①:直接传入一个由等长列或Numpy数组组成的字典。
data = ({'':[],
'':[]
'':[]})
frame = DataFrame(data)
- 结果DataFrame会自动加上索引,且全部列会被有序排列。
- 如果指定了列序列,则DataFrame的列会按照指定顺序进行排列。
DataFrame(data,columns = ['one','two','three'])
frame = DataFrame(data,columns = [],index = [])
frame.columns
- 如果传入的数据找不到,就会产生NA值
- 通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series
frame['one']
frame.one
- 返回的Series拥有原DataFrame相同的索引,且其name属性也已经被相应的设置好。
- 行也可以通过位置或名称的方式就行获取,比如用索引字段ix。
frame.ix['1']
- 列可以通过赋值的方式进行修改。
- 为不存在的列赋值会创建一个新列。
frame['new'] = 1 #新增一个空列,并赋一个标量值
frame['new'] = np.arange(5.) #新增一个空列,并赋一个标量值
- 将列表或数组赋值给某个列时,其长度必须跟DataFrame 长度相匹配。如果是Series,会精确匹配DataFrame的索引,空位被缺失值填补。
Series = Series([1,2,3],index = ['one','two','three'])
frame['new'] = Series
- 构建DataFrame的方法②:嵌套字典(字典的字典)
- 如果将嵌套字典传递给DataFrame,它会被解释为:外层字典的键作为列,内层键则作为行索引。
- 内层字典的键会被合并、排序以形成最终 的索引。除非显式指定了索引。
- 可以输入给DataFrame构造函数所能接受的各种数据
- 二维ndarray #数据矩阵,还可以传入行标和列标。
- 由数组、列表或元组组成的字典 #每个序列会变成DataFrame的一列,所有序列的长度必须相同。
- Numpy的结构化/记录数组 #类似于“由数组组成的字典”
- 由Series组成的字典
- 由字典组成的字典<