Python之Pandas库学习(1)
Pandas库简介
pandas是一个开源的, BSD许可的库, 为Python编程语言提供高性能, 易于使用的数据结构和数据分析工具.
Pandas库的安装
安装Pandas库的最快也是最简单的方法是在shell上使用以下命令:pip install pandas
一般使用时直接import即可import pandas as pd
Pandas库的Series类型
Series类型的创建
Serise类型是由一组数据及其相关的索引组成, 是一维数据类型.
pandas.Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False) [官方文档]
- data : 列表, 迭代对象, 字典, 或标量. 也可以使用ndarry数组.
- index : 数据索引, 若不给出则自动生成索引.
- dtype : 数据类型.
- copy : 是否复制输出数据.
例如:
1 | import pandas as pd |
需要注意的是, 当用户自定义索引之后, 自动索引与自定义索引并存, 均可以使用, 但不能混合使用.
Series类型的基本操作
Series类型的操作和ndarry有相似之处, 均可使用[]方法进行索引和切片.与dict也有相同的方法, 均可以使用in和get().
函数 | 描述 |
---|---|
Series.index | 获取Series的index |
Series.values | 获取Series的values |
Series.get(key, default=None) | 获取key对应的值, 如无返回default |
Series.name | 返回Series类型的name |
例如:
1 | import pandas as pd |
Series类型同样可以简单赋值或者相加减:
1 | 'a', 'b'] = 20 a[ |
其他Series函数可以参考 相关文档 .
Pandas库的DataFrame类型
DataFrame类型的创建
DataFrame类型由共用相同索引的一组列组成, 是多维数据类型.
pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False)) [官方文档]
- data: ndarray数组, 列表, 字典, 元组, Series字典, Series数据或其他DataFrame类型数据.
- index: 数据索引, 若不给出则自动生成索引.
- columns: 列数据索引.
- dtype: 数据类型.
- copy: 是否复制输出数据.
DateFrame是一个表格型的数据类型, 每列值类型可以不同.
DataFrame既有行索引也有列索引.
DataFrame常用于表达二维数据, 但可表达多维数据.
例如:
1 | import pandas as pd |
DataFrame类型的基本操作
Frame类型的操作和Series很相似, 根据行列索引.
函数 | 描述 |
---|---|
DataFrame.index | 获取DataFrame的index |
DataFrame.columns | 获取DataFrame的columns |
DataFrame.values | 获取DataFrame的values |
DataFrame.loc[columns] | 返回选中列的Series类型数据 |
例如:
1 | e.index |
Pandas库的数据类型操作
重新索引
重新索引的方法为:
Series.reindex(index=None) [官方文档]
DataFrame.reindex(labels=None, axis=None, index=None, columns=None, method=None, copy=True, level=None, fill_value=nan, limit=None) [官方文档]
- label: 新的自定义索引, axis=0时为行, axis=1时为列.
- axis: 定义label指定的索引.
- index, columns: 新的行列自定义索引.
- method: {None, ‘backfill’/‘bfill’, ‘pad’/‘ffill’, ‘nearest’}, 用于填充重新索引的空白数据的方法.
- None (default): 不填充.
- pad / ffill: 当前值由前值填充.
- backfill / bfill: 当前值由后值填充.
- nearest: 当前值由最近的值填充.
- copy: 是否返回新的数据.
- level: 匹配更深层次索引.
- fill_value: 用于填充空白数据的值
- limit: 最大填充值
例如:
1 | # 接上一个例子 |
索引的常用方法
索引的常用方法有:
方法 | 描述 |
---|---|
.append(idx) | 连接另一个Index对象, 产生新的Index对象 |
.diff(idx) | 计算差集, 产生新的Index对象 |
.intersection(idx) | 计算交集 |
.union(idx) | 计算并集 |
.delete(loc) | 删除loc位置处的元素 |
.insert(loc, e) | 在loc位置增加一个元素e |
例如:
1 | # 接上一个例子 |
删除指定索引对象
Series.drop(labels=None, axis=0, index=None, columns=None, inplace=False, level=None) [官方文档]
DataFrame.drop(labels=None, axis=0, index=None, columns=None, inplace=False, level=None) [官方文档]
- label: 要删除的索引, 当axis=0时指行索引, axis为1时指列索引.
- axis: 定义label指定的索引.
- index, columns: 要删除行索引, 列索引.
- inplace: 为True时无返回值.
- level 匹配更深层次的索引, 将移除标签级别的数据.
例如:
1 | import pandas as pd |
Pandas库的数据类型运算
算数运算法则
- 算数运算根据行列索引, 补齐后运算, 运算默认产生浮点数.
- 补齐时缺项填充NaN.
- 二维和一维, 一维和零维之间为广播运算.
- 采用+-*/符号进行的二元运算产生新的对象.
例如:
1 | import pandas as pd |
还有方法形式的运算:
方法 | 描述 |
---|---|
.add(d, **argws) | 类型间加法运算, 可选参数 |
.sub(d, **argws) | 类型间减法运算, 可选参数 |
.mul(d, **argws) | 类型间乘法运算, 可选参数 |
.div(d, **argws) | 类型间除法运算, 可选参数 |
**argws(可选参数)包含的参数有:
- axis: {0/‘index’, 1/‘columns’} 指定运算的轴.
- level: 匹配更深层次索引.
- fill_value: 指定缺省值.
例如:
1 | 'angles': [0, 3, 4], 'degrees': [360, 180, 360]}, index=['circle', 'triangle', 'rectangle']) df = pd.DataFrame({ |
比较运算法则
- 比较运算只能比较相同索引的元素, 不进行补齐.
- 二维和一维, 一维和零维之间维广播运算.
- 采用 > < >= <= == != 等符号进行的二元运算产生布尔对象.
例如:
1 | import pandas as pd |