Pandas 是 Python 的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。
Pandas 的出现主要是为了解决其他编程语言、科研环境的痛点。它是处理数据的理想工具,处理数据的速度极快,使数据预处理、清洗、分析工作变得更快、更简单,被广泛应用于金融领域。处理数据一般分为3个阶段:数据整理与清洗、数据分析与建模、数据可视化与制表。
Pandas 是基于 Numpy 数组构建的,科研与其他第三方科学计算支持完美集成,专门为处理表格和混杂数据而设计,而Numpy更适合处理统一的数值和数组数据。
Pandas 适用于处理以下类型的数据:
推荐使用Anaconda安装,可以参考 Anaconda 安装配置,轻轻松松上手Python安装Anaconda,然后使用以下命名安装和导入Pandas:
# 安装Pandas
'''Windows 按住win+R 输入 cmd,Mac 打开Terminal
conda install Pandas
pip install Pandas
'''
import pandas as pd # 导入pandas并取别名
print(pd.__version__) # 1.5.1
Pandas 定义了两种主要数据结构:Series 和 DataFrame。
1) Series
Series 是一种类似于一维数组的对象,它由一组数据(各种Numpy数据类型)以及一组与之相映射的数据标签(索引)组成,即index和values两部分,可以通过索引的方式选取Series中单个或一组值。创建Series数据的语法格式如下:
pd.Series(list,index=[])
第一个参数可以是list、ndarray,也可以是DataFrame中的某一行或某一列。第二个参数是Series中数据的索引,可以省略,如果第一个参数是字典,则字典的键将作为Series的索引。
import numpy as np,pandas as pd
arr1 = np.arange(3)
s1 = pd.Series(arr1)
print(s1)
''' 输出
0 0
1 1
2 2
dtype: int64
'''
由于没有数据指定索引,于是自动创建一个从0~N-1(N为数据长度)的整型索引。
Series 类型索引、切片、运算的操作类似于ndarray,也类似于Python字典类型的操作,包括保留字in操作、使用get()方法。Series 和 ndarray之间主要区别在于,Series 之间的操作根据索引自动对齐数据。
2) DataFrame
DataFrame 是一个表格型的数据类型,每列值类型可以不同,是最常用的Pandas对象。有行索引和列索引,可以被看作由Series组成的字典(共用同一个索引)。其中的数据是以一个或多个二维块存放的(而不是列表、字典或别的一维数据结构)。
创建DataFrame的语法格式和示例如下:
# 参数columns和index为指定的列、行索引
pd.DataFrame(data,columns=[],index=[])
# 示例
import pandas as pd
data = {'state':['Ohio','Ohio','Ohio','Nevada','Nevada','Nevada'],
'year':[2000,2001,2002,2001,2002,2003],
'pop':[1.5,1.7,3.6,2.4,2.9,3.2]
}
# 默认行列索引
df = pd.DataFrame(data)
print(df)
''' 输出
state year pop
0 Ohio 2000 1.5
1 Ohio 2001 1.7
2 Ohio 2002 3.6
3 Nevada 2001 2.4
4 Nevada 2002 2.9
5 Nevada 2003 3.2
'''
# 指定行列索引
df = pd.DataFrame(data,columns=['year','state','pop','debt'],
index=['one','two','three','four','five','six'])
print(df)
''' 输出
year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 NaN
five 2002 Nevada 2.9 NaN
six 2003 Nevada 3.2 NaN
'''
# 嵌套字典,外层字典的键作为列,内层字典键作为行索引
import pandas as pd
data = {'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
df = pd.DataFrame(data)
print(df)
''' 输出
Nevada Ohio
2001 2.4 1.7
2002 2.9 3.6
2000 NaN 1.5
'''
1) 数据索引
Series 和 DataFrame 的索引是index类型,index对象不可修改,可通过索引值标签获取目标数据,也可通过索引使序列或数据库的计算、操作实现自动化对齐。索引类型index的常用方法如下:
import pandas as pd
data = {'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
df = pd.DataFrame(data)
print(df.index) # Int64Index([2001, 2002, 2000], dtype='int64')
print(df.columns) # Index(['Nevada', 'Ohio'], dtype='object')
2) 索引、选取和过滤
可以通过df.loc[]和df.iloc[]操作。
# 语法
df.loc[行标签,列标签] # 第二个参数为空时,查询单个或多行的所有列。查询多列多行,则两个参数用列表表示
df.iloc[行位置,列位置]
# 示例
import pandas as pd
data = {'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
df = pd.DataFrame(data)
print(df)
''' 输出
Nevada Ohio
2001 2.4 1.7
2002 2.9 3.6
2000 NaN 1.5
'''
print(df.loc[2001,['Nevada','Ohio']])
print(df.iloc[0,:])
''' 输出
Nevada 2.4
Ohio 1.7
Name: 2001, dtype: float64
'''
3) 运算
4) 排序
在排序时,任何缺失值默认都被放到末尾。
.sort_index(axis=0,ascending=True)
根据指定轴索引的值进行排序。默认轴axis=0,ascending=True,即默认根据0轴的索引值做升序。轴axis=1为根据1轴的索引值排序,ascending=False为降序。
1) 统计分析和相关分析
适用于Series和DataFrame的基本统计分析函数如下,如果传入axis='columns’或axis=1将按行进行运算。
2) 分组
3) Pandas 读写文本格式的数据
这些函数的选项可以划分为以下几大类:
4) 数据清洗和准备:数据分析和建模,大部分时间都用在数据准备上,如加载、清洗、转换以及重塑。
5) 处理缺失数据
在数据分析中缺失数据经常发生,对于数值数据,NaN(np.nan)表示缺失数据,也可将缺失值表示NA。常用函数如下:
6) 数据转换
import pandas as pd
data = pd.DataFrame({'food':['bacon','pulled pork','bacon','ppastrami','corned beef','bacon','pastrami','honey ham','noba lox'],
'ounces':[4,3,12,6,7.5,8,3,5,6]})
meat_to_animal = {'bacon':'pig','pulled pork':'pig','pastrami':'cow','corned beef':'cow',
'honey ham':'pig','nova lox':'salmon'}
data['animal'] = data['food'].map(meat_to_animal) # 增加一列 animal
print(data)
''' 输出
food ounces animal
0 bacon 4.0 pig
1 pulled pork 3.0 pig
2 bacon 12.0 pig
3 ppastrami 6.0 NaN
4 corned beef 7.5 cow
5 bacon 8.0 pig
6 pastrami 3.0 cow
7 honey ham 5.0 pig
8 noba lox 6.0 NaN
'''
DataFrame 常用函数如下: