前言

大家好,我是潜心。因为最近做实验发现Pandas的数据处理技术忘记了,所以准备系统的概述一下Pandas的使用方法。

本文约1.5k字,预计阅读5分钟。

Pandas概览

【Python基础】Pandas笔记---概述与数据结构_数据分析

Pandas 是 Python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas 的目标是成为 Python 数据分析实践与实战的必备高级工具,其长远目标是成为最强大、最灵活、可以支持任何语言的开源数据分析工具

数据结构

Pandas 的主要数据结构是 Series(一维数据)与 DataFrame(二维数据),这两种数据结构足以处理金融、统计、社会科学、工程等领域里的大多数典型用例。

为什么要有两个数据结构? 因为Pandas 数据结构就像是低维数据的容器。比如,DataFrame 是 Series 的容器,Series 则是标量的容器。使用这种方式,可以在容器中以字典的形式插入或删除对象。

Pandas 里,的概念主要是为了给数据赋予更直观的语义,即用“更恰当”的方式表示数据集的方向。

Series

Series是带标签的一维数组,可存储整数、浮点数、字符串、Python 对象等类型的数据,轴标签统称为索引

创建Series对象:

s = pd.Series(data=None, index=None)

其中,​​data​​​可以为:数组、字典、标量等,​​index​​可选,长度必须与data一致,默认为数值型索引。

导入包:

import pandas as pd
import numpy as np

例:

In[5]: pd.Series([1, 2, 3, 4, 5])
Out[5]:
0 1
1 2
2 3
3 4
4 5
dtype: int64

In[6]: d = {'a':1, 'b':2, 'c':3}
In[7]: pd.Series(d)
Out[7]:
a 1
b 2
c 3
dtype: int64

Dataframe

DataFrame 是由多种类型的列构成的二维标签数据结构, 是最常用的 Pandas 对象。

创建DataFrame对象:

df = pd.DataFrame(data=None, index=None, columns=None, dtype=None)

其中,​​data​​​可以为:一维二维的ndarray、列表、字典等,​​index​​​为行标签(索引),​​columns​​​为列标签(特征),​​dtype​​为对象类型。

例:

In[8]: d = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']), 'two': pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
In[9]: pd.DataFrame(d)
Out[9]:
one two
a 1.0 1.0
b 2.0 2.0
c 3.0 3.0
d NaN 4.0

In[10]: l = [[1, 2, 3], [4, 5, 6]]
In[11]: pd.DataFrame(l, columns=['a', 'b', 'c'])
Out[11]:
a b c
0 1 2 3
1 4 5 6

大小可变与数据复制

Pandas 所有数据结构的值都是可变的,但数据结构的大小并非都是可变的,比如,Series 的长度不可改变,但 DataFrame 里就可以插入列。

Pandas 里,绝大多数方法都不改变原始的输入数据,而是复制数据,生成新的对象。一般来说,原始输入数据不变更稳妥。所以大多数方法都是返回一个对象,若不进行复制,那原对象不会进行改变。

In[12]: df1 = pd.DataFrame(d)
In[13]: df2 = df1.transpose()
In[14]: df1
Out[14]:
one two
a 1.0 1.0
b 2.0 2.0
c 3.0 3.0
d NaN 4.0
In[15]: df2
Out[15]:
a b c d
one 1.0 2.0 3.0 NaN
two 1.0 2.0 3.0 4.0

Pandas优势

Pandas的优势部分包括如下:

  • 处理浮点与非浮点数据里的缺失数据,表示为 ​​NaN​​;
  • 大小可变:插入或删除 DataFrame 等多维对象的列;
  • 自动、显式数据对齐:显式地将对象与一组标签对齐,也可以忽略标签,在 Series、DataFrame 计算时自动与数据对齐;
  • 强大、灵活的分组(group by)功能:拆分-应用-组合数据集,聚合、转换数据;
  • 把 Python 和 NumPy 数据结构里不规则、不同索引的数据轻松地转换为 DataFrame 对象;
  • 基于智能标签,对大型数据集进行切片花式索引子集分解等操作;

总结

Pandas 速度很快,适用于各个数据分析领域,它的数据结构有​​Series​​​和​​DataFrame​​两种结构,实际中主要是对DataFrame对象进行处理分析。接下来会根据各个实例数据集,如:鸢尾花、红酒、乳腺癌数据集进行实际操作,巩固Pandas数据分析技术。

参考文献

[1]. Pandas中文文档: https://www.pypandas.cn/docs/getting_started/overview.html

【Python基础】Pandas笔记---概述与数据结构_机器学习_02