Python一周一模块:pandas-1
2019-06-11 本文已影响9人
爱折腾的大懒猪
前言
Pandas提供快速,灵活并且富有表达能力的数据结构,这些数据结构让我们能够更加容易和直观的处理关系型和代带标签的数据。它致力于成为在Python中对真实世界进行数据分析的基础高层次构建模块。
Pandas适合多种类型的数据:
- 具有异构类型列的表格数据(不同列的数据类型不相同,如有的列为字符型,有的为数字,有的为时间日期),如SQL表或Excel电子表格数据;
- 有序和无序(且不一定是固定频率)的时间序列数据;
- 具有行和列标签的任意矩阵数据(同质或者异构,不同列数据类型相同,则同质,否则异构);
- 任何其他形式的观察/统计数据集,这些数据在被存放到pandas的数据结构当中时,不需要打上标签;
pandas 最重要的两种数据结构是Series(一维)和DataFrame(二维), 基于Numpy, 速度快, 但如果要熟悉pandas使用, 最好事先学习Numpy使用.
- 轻松处理浮点型和非浮点型数据的缺失值;
- 大小可变:数据列能够从DataFrame或者更高维度的数据结构中添加或者删除;
- 自动和明确的数据对齐:对象可以显式对齐一组标签,或者用户可以简单地忽略标签,并让Series和DataFrame在计算时,自动对齐你的数据;
- 功能强大,灵活的group by函数,可用于对数据集执行拆分,应用,组合操作,用于聚合和转换数据;
- 使其他Python和NumPy数据结构中不规整,不同索引的数据转换成DataFrame对象变得容易;
- 基于标签的自动切片,索引和大数据集子集选取;
- 直观的数据融合和连接操作;
- 灵活的对数据表进行结构重构,或者进行数据透视;
- 轴的分层标签(每个刻度可能有多个标签);
- 用于从文本文件(CSV和分隔符),Excel文件,数据库以及从超快HDF5格式文件加载数据的强大的IO工具;
- 时间序列特定功能:日期范围生成和变频,滑动窗口统计,滑动窗口线性回归,日期偏移和滞后等。
Pandas的数据结构
Series 一维数据
- 一维数组, 全都是一类型的数值.
dtype
- 带labels(默认Labels是0开始的索引), 可通过
index
来指定.Labels必须hashable, 可以重复. - Series的操作: 对于数学操作符
+-*/
, 和一个整数作用时, 相当于每个元素都进行相应操作; 当和另一个Series操作时, 将根据索引值进行相应操作, 结果的索引将是两个Series索引的已排序的合集. - 空值是
np.nan
(NaN
), NaN不会被操作, 或者和别的数运算时返回NaN
. - 富含属性和方法 (见以后的使用吧).
import numpy as np
import pandas as pd
s=pd.Series([1,2,3,np.nan,5,6])
print(s) #索引在左边 值在右边
'''
0 1.0
1 2.0
2 3.0
3 NaN
4 5.0
5 6.0
dtype: float64
'''
类定义原型:
class pandas.Series(
data=None, index=None, dtype=None,
name=None, copy=False, fastpath=False
)
DataFrame 二维数据
DataFrame是表格型数据结构,包含一组有序的列,每列可以是不同的值类型。DataFrame有行索引和列索引,可以看成由Series组成的字典。
- 二维数组, 大小可变.
- 具有行和列的索引 (默认都是0开始索引), 可以作为字典类似的容器(值是Series).
- 当使用字典进行赋值时, 字典的key是列名.
- 当使用array或者list-list进行赋值时, 每个元素的列表作为行.
- 数据长度要相等, 否则初始化失败报错.
- 属性和方法众多, 具体参看使用.
# 从字典赋值
d = {'col1': [1, 2], 'col2': [3, 4]}
df = pd.DataFrame(data=d)
df
'''
col1 col2
0 1 3
1 2 4
'''
# 从二维数组赋值
df2 = pd.DataFrame(np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
columns=['a', 'b', 'c'])
'''
a b c
0 1 2 3
1 4 5 6
2 7 8 9
'''
类定义原型:
class pandas.DataFrame(
data=None, index=None, columns=None,
dtype=None, copy=False)
-
data
: 数据, 可以是ndarray, 可迭代对象, 字典或者DataFrame. 如果是字典, 值是Series, arrays, 常数, list类. 注意数据齐整. -
index
: 行索引, Index对象或者array类的对象(list类也可以). -
columns
: 列索引, Index对象或者array类的对象(list类也可以). -
dtype
: numpy的数值类型dtype, 默认None, 猜测. 只能指定一种类型(全部统一类型). -
copy
: 从输入复制数据. 默认False, 影响从DataFrame和2d ndarray赋值时的复制机制.