https://pandas.pydata.org/pandas-docs/stable/getting_started/overview.html
pandas是一个Python包,提供快速、灵活和富有表现力的数据结构,旨在使处理“关系”或“标记”数据既简单又直观。它的目标是成为用Python进行实际的、真实的数据分析的基本高层构建块。此外,它还有一个更广泛的目标,即成为任何语言中可用的最强大、最灵活的开源数据分析/操作工具。它已经在朝着这个目标迈进。
pandas非常适合许多不同类型的数据:
具有不同类型列的表格数据,如在SQL表或Excel电子表格中
有序和无序(不一定是固定频率)时间序列数据。
具有行和列标签的任意矩阵数据(均匀类型或异构类型)
任何其他形式的观察/统计数据集。这些数据实际上根本不需要标记就可以放入panda数据结构中
pandas的两个主要数据结构Series(一维)和DataFrame(二维),能处理金融、统计、社会科学和许多工程领域的绝大多数典型用例。对于R用户,DataFrame提供了R的data.frame提供的所有内容,甚至更多。panda构建在NumPy之上,旨在与许多其他第三方库很好地集成在科学计算环境中。
以下是pandas擅长的几件事:
-易于处理浮点数据和非浮点数据中丢失的数据(用NaN表示)
-大小可变性:可以从DataFrame和高维对象中插入和删除列
-自动和显式数据对齐:对象可以显式对齐到一组标签上,或者用户可以简单地忽略标签,让Series、DataFrame等在计算中为您自动对齐数据
-功能强大、灵活的group by功能,可以对数据集执行拆分-应用-组合操作,用于聚合和转换数据
-简化将其他Python和NumPy数据结构中不规则的、不同索引的数据转换为数据aframe对象的过程
-基于智能标签的切片、花式索引和大型数据集的子集
-直观的合并和连接数据集
-数据集的灵活重设和旋转
-轴的分层标记(每块可能有多个标记)
-健壮的IO工具,用于从平面文件(CSV和分隔符)、Excel文件、数据库中加载数据,以及从超快HDF5格式中保存/加载数据
-时间序列特有的功能:日期范围生成和频率转换、移动窗口统计、移动窗口线性回归、日期移位和滞后等。
这里的许多原则都是为了解决使用其他语言/科学研究环境时经常遇到的缺点。对于数据科学家来说,处理数据通常分为多个阶段: 数据转换和清理,数据分析/建模,然后将分析结果组织成适合绘图或表格显示的形式。pandas是所有这些任务的理想工具。
其他一些笔记:
-pandas很快。Cython代码中对许多底层算法位进行了广泛的调整。然而,与其他任何泛化方法一样,泛化通常会牺牲性能。因此,如果您专注于应用程序的一个特性,您可能能够创建一个更快的专用工具。
-pandas是statsmodels库的依赖项,这使得它成为Python统计计算生态系统的重要组成部分。
-pandas已被广泛用于生产和金融应用。
维数 |
名称 |
描述 |
1 |
Series |
一维相同类型的标签数组 |
2 |
DataFrame |
一般是二维标签,有大小可变的表格结构与潜在的不同类型列 |
为什么要有超过1种数据结构?
理解pandas数据结构的最佳方法是将其作为低维度数据的灵活容器。例如,DataFrame是Series的容器,Series是标量的容器。我们希望能够以类似词典的方式从这些容器中插入和删除对象。
此外,我们希望考虑时间序列和横断面数据集的典型方向的公共API函数的合理默认行为。当使用ndarrays存储2维和3维数据时,用户在编写函数时需要考虑数据集的方向;轴被认为或多或少是等价的(除非C或fortran关系到性能)。在pandas中,坐标轴的作用是赋予数据更多的语义;即,对于特定的数据集,可能有一种“正确”的方法来确定数据的方向。因此,目标是减少在下游函数中编码数据转换所需的脑力劳动。
例如,对于表格数据(DataFrame),考虑索引(行)和列比考虑轴0和轴1在语义上更有帮助。因此,遍历DataFrame的列会得到可读性更好的代码:
for col in df.columns:
series = df[col]
# do something with series
——意思是如果只有多维数组这种结构,我们遍历时得考虑数据维度的方向,而这种一维数组和维度平铺的二维数组的结构,在遍历维度(列)时就很好理解了。
数据的可变性和复制性
所有pandas数据结构都是值可变的(它们包含的值可以更改),但并不总是大小可变的。序列的长度不能更改,但是,例如,可以将列插入到DataFrame中。然而,绝大多数方法都会生成新的对象,并且不改变输入数据。一般来说,我们喜欢在合理的地方保持不变。
——意思是值都是可以更改的,但序列长度不能更改(?暂时不太清楚什么意思)。而且调用更改方法绝大多数不会改变原来的对象,而是得赋值给新的对象或赋值给原对象才能看到更新后的数据。
pandas问题和想法的第一站是ithub Issue Tracker。如果你有一个一般性的问题,熊猫社区的专家可以通过Stack Overflow来回答。
这是对pandas的简短介绍,主要面向新用户。你可以在Cookbook中看到更复杂的案例。
按照惯例,我们这么引入:
In [1]: import numpy as np
In [2]: import pandas as pd
可以看数据结构介绍这一节
https://pandas.pydata.org/pandas-docs/stable/getting_started/dsintro.html#dsintro
通过传入一个列表创建一个series,让pandas创建一个默认的整型索引:
通过传入一个带有日期索引和标签列的NumPy数组创建一个DataFrame:
原文:https://www.cnblogs.com/everda/p/11594522.html