pandas是基于numpy的一种工具 同样用于数据分析
pandas主要处理以下三种数据结构
1:series 一维数组 接近python中的list
2:DataFrame 二维数据结构 其可以理解为series的容器 其内部的每项元素可以看成一个series 在机器学习中经常用到
3:panel 三维数组 可以理解为DataFrame的容器
1:创建一个series对象
import pandas as pd s=pd.Series([1,3,5,6,8,9]) print(s)
可以通过赋值操作直接修改Series对象成员的值
s[1]=5
根据条件表达式筛选数据
s=pd.Series([1,3,5,6]) b=pd.Series([4,5,6,6]) print(s[s>2])
通过drop函数可以删除对象成员
2:DateFrame是一个表格型的数据结构 包括行索引和列索引
import pandas as pd dict1={'col1':[2,4,5,3],'col2':['a','b','c','d']} df=pd.DataFrame(dict1) print(df)
访问DataFrame有多种方法 可以通过下标和索引等等
import pandas as pd ser=pd.Series(np.arange(4),index=['a','b','c','d']) data=pd.DataFrame(np.arange(16).reshape(4,4),index=['AJ','BJ','CJ','DJ'],columns=['q','r','s','t']) print("ser['c]:",ser['c']) print("ser 2:",ser[2]) print("date q:",data['q']) print("data q t:",data[['q','t']])
loc方法则是通过索引名抽取数据 iloc则是通过下标值抽取数据
3:数据对齐
pandas有个很好的功能是对齐不同索引的数据 如两个数据对象相加 如果索引不同则结果的索引是这两个索引的并集
3.1:缺失数据的处理
NA值会带入后续的操作导致出错 所以dropna方法可以预先过滤缺失数据
会默认丢失所以含有缺失值的行 如果想对列进行过滤则把axis=1即可
参数how可以根据行或者列中的NA数量来决定是否删除行或列 常用的有all或者any
from numpy import nan as NA data=pd.Series([1,NA,3.5,NA,7]) data.dropna()
3.2:notnull函数
可以判断空值 下面的代码可以过滤空值
s1=pd.Series(['one','two','thress',NA,None]) print(s1[s1.notnull()])
3.3:填充缺失数据
如果不想删除有缺失值的行和列 可以用fillna方法填充数据
s1=pd.Series(['one','two','thress',NA,None]) print(s1[s1.notnull()]) print(s1.fillna('ljl'))