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.2:缺失数据的处理
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.3:notnull函数可以判断空值 下面的代码可以过滤空值
- s1=pd.Series(['one','two','thress',NA,None])
- print(s1[s1.notnull()])
3.4:填充缺失数据 如果不想删除有缺失值的行和列 可以用fillna方法填充数据
- s1=pd.Series(['one','two','thress',NA,None])
- print(s1[s1.notnull()])
- print(s1.fillna('ljl'))