Pandas 入门知识
在本文后续部分,我将使用下面这样的pandas 引入约定
import pandas as pd import numpy as np from pandas import Series,DataFrame
创建对象
1.可以通过传递一个list对象来创建Series对象
2、可以通过传递一个numpy array、pd date_range、columns来创建DataFrame对象
查看数据
1.查看头部和尾部的行
2、查看索引、列名、各行列的值
3、对数据的快速统计
4、转置
5、按轴排序
6、按某一列的值进行排序
获取
1、选择一个单独的列,返回Series
选择
1、通过标签选择
- 选择一行或者连续几行
- 选择几行几列
2、通过位置选择
- 选择一行或某几行或连续几行
- 选择一行一列、几行几列、某几行某几列
3、通过布尔索引选择
丢弃指定轴上的项
由于某一列属性或者某一行数据可能是描述型数据,在数据挖掘/机器学习中属于无效数据,可以采用drop()删除。
对于Series 数据,
obj = Series(np.arange(5),index = ['a','b','c','d','e']) print obj print obj.drop('c') print obj.drop(['c','e'])
data = DataFrame(np.arange(16).reshape((4,4)),index=['Ohio','Colorado','Utah','New York'], columns=['one','two','three','four']) print data print data.drop('Ohio') print data.drop(['Ohio','Utah']) print data.drop('one',axis=1) print data.drop(['one','three'],axis=1)
处理缺失数据
missing data 在大部分数据分析中都很常见。pandas 设计目的之一就是让missing data 的处理尽量轻松。 Pandas 使用浮点值NaN表示浮点和非浮点数组中的缺失数据。它只是一个便于被检测的标记而已。常见NA处理方法:
- dropna 根据各标签的值是否存在缺失数据,对轴标签进行过滤;
- fillna 用指定值或插入值填充缺失数据;
- isnull 返回一个含有布尔值的对象;
- notnull isnull 的否定式;
1 dropna
- 对于Series
data = Series([6.5,3.,1.,np.nan,6.5,np.nan]) print data print data.dropna()#返回一个仅含非空数据和索引值的Series print data[data.isnull()] print data[data.notnull()]#通过布尔型索引达到这个效果
- 对于DataFrame
data = DataFrame([[1.,6.5,3.],[1.,np.nan,np.nan],[np.nan,np.nan,np.nan],[np.nan,6.5,3.]]) print data print data.dropna()#丢弃任何含有缺失值的行,默认axis=0,how='any' print data.dropna(how='all')#丢弃全部含有缺失值的行 print data.dropna(axis=1)#丢弃任何含有缺失值的列 print data[data[2].isnull()]#取第二列为空的那些行 print data[data[2].notnull()]#取第二列非空的那些行
2 fillna
数据处理中,很多情况可能并不需要过滤数据,而是对这些缺失数据进行填充;对大多数情况而言,fillna 是一个很不错的方法,通过调用fillna 来将缺失值进行替换。
fillna(self, value=None, method=None, axis=0, inplace=False, limit=None, downcast=None)
data = DataFrame([[1.,6.5,3.],[1.,np.nan,np.nan],[np.nan,np.nan,np.nan],[np.nan,6.5,3.]]) print data print data.fillna(0)#对缺失值填充0 print data.fillna(method='ffill')#插值方法,与前一个数一致 print data.fillna({2:-1,1:0.5},inplace=True)#对第二列填充0.5,第三列填充-1,inplace 默认False,为True对data直接修改