介绍
2008年WesMcKinney开发出的库;专门用于数据挖掘的开源python库;以Numpy为基础,借力Numpy模块在计算方面性能高的优势;基于matplotlib,能够简便的画图;独特的数据结构。
优势
- 增强图表可读性
- 便捷的数据处理能力
- 读取文件方便
- 封装了Matplotlib、Numpy的画图和计算
数据类型
一维结构:Series
二维结构:Dataframe
多维结构:MultiIndex、panel
Series
pd.Series()
一个类似于一维数组的数据类型,它能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成。
属性 | 说明 |
---|---|
series.index | 返回索引数组 |
series.values | 返回值数组 |
series.items |
DataFrame
pd.DataFrame()
DataFrame是一个类似于二维数组或表格(如excel)的对象,既有行索引,又有列索引
属性 | 说明 |
---|---|
shape | 返回形状 |
index | 返回行索引列表 |
columns | 返回列索引列表 |
values | 返回array的值 |
T | 转置 |
head() | 前N行 |
tail() | 后N行 |
dataframe.index=
:修改索引
dataframe.reset_index(drop=False)
:重设索引
dataframe.set_index(keys,drop=True)
:设置某列为新的索引
MultiIndex
三维的数据类型;多级索引(也称层次化索引)是pandas的重要功能,可以在Series、DataFrame对象上拥有2个以及2个以上的索引。
pd.MultiIndex.from_arrays(arrays)
:创建多索引
Panel
pd.Panel(data=None, items=None, major_axis=None, minor_axis=None)
基本操作
索引
操作支持‘切片’操作
data[colum_name][row_name]
:使用列、行值索引,先列后行
data.loc(colum_name,row_name)
:使用列、行值索引,先列后行(同上)
data.iloc(colum_index,row_index)
:使用列、行下标索引,先列后行
排序
dataframe.sort_values(by=,ascending=)
:指定列名排序
dataframe.sort_index()
:索引排序
运算
函数 | 例子 |
---|---|
add(value) | data[‘open’].add(1) |
sub{value | data[‘open’].sub(1) |
query(expr) | data.query(“open<24 & open>23”) |
isin(values) | data[data[“open”].isin([23.53, 23.85])] |
describe() | 返回count, mean, std, min, max 等 |
apply(func,axis=) | 自定义运算 |
data[['open', 'close']].apply(lambda x: x.max() - x.min(), axis=0)
open 22.74
close 22.85
dtype: float64
累积统计函数
函数 | 作用 |
---|---|
cumsum | 计算前n个数的和 |
cummax | 计算前n个数的最大值 |
cummin | 计算前n个数的最小值 |
cumpod | 计算前n个数的积 |
画图
DataFrame.plot(kind='line')
kind | 说明 |
---|---|
line | 折线 |
bar | 柱状 |
barh | 横线柱状 |
hist | 直方图 |
pie | 饼状图 |
scatter | 散点图 |
文件读取
pandas.read_csv(filepath_or_buffer, sep =',', usecols )
:读取
DataFrame.to_csv(path_or_buf=None, sep=', ’, columns=None, header=True, index=True, mode='w', encoding=None)
:保存
缺失值处理
isnull:判断是否有缺失数据NaN
fillna:实现缺失值的填充
dropna:实现缺失值的删除
replace:实现数据的替换
数据分组
pd.qcut(data,q)
:分成q组,区间自适应
pd.cut(data,bins=)
:自定义组区间
DataFrame.groupby(key, as_index=False)
:分组的列数据,可以多个
one-hot编码
pandas.get_dummies(data, prefix=None)
数据合并
pd.concat([data1, data2], axis=1)
:按照行或列进行合并,axis=0为列索引,axis=1为行索引
pd.merge(left, right, how='inner', on=None)
:可以指定按照两组数据的共同键值对合并或者左右各自
交叉表与透视表
交叉表:交叉表用于计算一列数据对于另外一列数据的分组个数(用于统计分组频率的特殊透视表)
pd.crosstab(value1, value2)
透视表:透视表是将原有的DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数
data.pivot_table()
DataFrame.pivot_table([], index=[])