这篇翻译文章目的只是对Pandas有一个大概了解,建议不要深究某一句话或一个词,了解内容大概就可以了(而且最好还是看官方英文文档,有些词翻译成中文还是很变扭),随着对Pandas的编程实践,对她的理解会加深,深究本文某句话没多大意义。
Pandas是一个开源,BSD-licensed库,她为Python语言提供高性能、易于使用的数据结构和数据分析工具。
Pandas由以下元素组成:
- 一组带标签的数组,主要数据结构为Series和DataFrame。
- 索引对象,支持简单的轴索引(simple axis indexing)和多级/层次化轴索引(multi-level / hierarchical axis indexing)。
- 由引擎组成的集成组,用于聚合和转换数据集。
- date_range 和支持自定义频率的自定义日期偏移。
- 加载表格数据文件(CSV,分隔符,Excel 2003),通过快速高效的PyTables/HDF5格式,保存和加载Pandas对象。
- 使用标准数据结构的高效内存“sparse” versions,存储缺失数据或常量(某些固定值)的数据。
- Moving Window Statistics
这里说明一下axis,Pandas保持了Numpy对关键字axis的用法,用法在Numpy库的词汇表当中有过解释:
轴用来为超过一维的数组定义的属性,二维数据拥有两个轴:第0轴沿着行的垂直往下,第1轴沿着列的方向水平延伸。
数据结构 Data Structures
Dimensions | Name | Description |
---|---|---|
1 | Series | 1D labeled homogeneously-typed array 是1D标签的同一类数组的数据结构 |
2 | DataFrame | General 2D labeled, size-mutable tabular structure with potentially heterogeneously-typed column 一般为2D标签的大小可变的表格结构,可能有异种类型的列 |
为什么会有多个数据结构
考虑Pandas数据结构的最佳方法是将其视为低维数据的灵活容器。DataFrame是Series的容器,Series是标量的容器。我们希望能够以类似字典的方式从这些容器中插入和删除对象。
这些默认行为涉及到时间序列(time series)和横断面数据集(cross-sectional data sets)的典型方向。当使用ndarrays存储2维和3维数据,编写函数时,用户需要考虑数据集的方向;轴(axis)被认为或多或少是等价的(除非C或Fortran - contiguiness关系到性能)。在Pandas中,轴(axis)的目的是为数据提供更多的语义意义;例如,对于特定的数据集,去设置一种可能“正确”的方法来确定数据的方向。因此,目的是减少编写下游函数中的数据转换所需的脑力劳动。
例如,对于DataFrame,语义上最好理解为索引(行)和列,而不是轴0和轴1。遍历DataFrame的所有列,以获取可读性的代码:
for col in df.columns:
series = df[col]
# do something with series
可变性与数据拷贝
所有Pandas数据结构都是值可变的(value-mutable),但大小不总是可变的。序列的长度不能更改,例如,可以将列插入DataFrame中。但是,绝大多数方法都生成新对象,并且不改变输入数据。一般来说,我们喜欢视其为值不可变(value-immutable)。
网友评论