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'])
对于DataFrame数据,可以删除任意轴上的索引值:
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直接修改
 
 
posted @ 2015-10-12 11:23  走那条小路  阅读(663)  评论(0编辑  收藏  举报