pandas入门

记录一些常用的pandas基础的使用方法。

1. 数据结构

pandas有两种主要的数据结构:Series和DataFrame

1.1 Series

Series是一个一维的数组对象,它包含了一个数据标签(称为索引)和一个数组数据。事实上,可以将Series理解为一个以数据标签为key,以数值为value的键值对(字典)。

A.创建一个最简单的Series(其标签默认生成):

obj=Series([3,5,7,8])

生成结果:

B.获取其中的值(获取Series的数组表示):

obj.values

C.获取索引对象:

obj.index

注意默认的索引,obj.index返回的对象是一个Int64的list对象

D.创建带有索引的Series:

obj=Series([2,3,4,6],index=['d','f','e','y'])

E.利用索引获取值

obj['d']

F.通过bool数组过滤,使用乘法

obj[obj>3]

G.Series中的空值使用NaN表示,可以通过

pd.isnull(obj)

pd.notnull(obj)

检查数据是否为空值。

1.2 DataFrame

DataFrame类似于关系型数据库中的一张二维表。DataFrame在Series的基础上添加了列索引,因此可以看作是添加了列索引的Series数组。

A.创建一个DataFrame

data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada'],
        'year': [2000, 2001, 2002, 2001, 2002],
        'pop': [1.5, 1.7, 3.6, 2.4, 2.9]}
frame=DataFrame(data)

B.如果传递了一个行,但不包括在data中,创建的DataFrame将表示为NaN。(在这个例子中,debt所在列所有的行都为空值NaN,且我们显式地指定了行索引)

 

C.利用列索引,通过字典或者属性形式,获取DataFrame对象的一列

frame['year']

frame.year

D.利用DataFrame.ix[]获取DataFrame对象的一行。注意向ix中传入的可以是行索引名字(如字符串形式),也可以是位置号

frame.ix[1]

frame.ix['two']

利用ix索引行,利用字典或者属性形式索引列,则可以组合以索引到DataFrame中的任意一个值

E.列可以通过赋值来修改,赋予的值可以是数字,数组或者Series对象

F.对一个不存在的列赋值,将会创建一个新的列

注意,利用字典形式对一个不存在的列赋值,才会新建一个列

2. 一些功能

2.1 重新索引

reindex使数据符合一个新的行索引,以构造一个新的对象。如果重新索引时,部分行不存在值,将置为NaN。columns可以对列重新索引

重新索引时,可以对丢失的值进行填充。可以传入method或者fill_value填充

当method为ffill表示填充值为前一行的值(前向填充),bfill表示填充值为后一行的值(后向填充)

2.2 从坐标轴删除条目

可以使用drop方法删除Series中的一个或多个值,删除DataFrame中的一个或多个行

2.3 切片

可以使用标签切片,注意,这里切片和Python的切片并不一样,他会把结束点也包括在内

2.4 大文件读写

csv大文件读写一般向read_csv()函数中传入chunksize或者iterator参数完成

reader=pd.read_csv('./data1.csv',chunksize=10000)

for chunk in reader:#chunk为DataFrame类型(二维表)
    for i in chunk.index:#chunk.index为元素类型为Int64的list
        value1=chunk.ix[i]['column']#获取chunk表中的一个值,先取行,在得列
        value2=chunk['column'][i]#获取chunk中的一个值,先取列,再得行
原文地址:https://www.cnblogs.com/mengnan/p/7609033.html