Pandas是基于Numpy的第三方库,提供有效的数据类型和工具,可以看作在扩展的Numpy,具有行列的标签,并且可以处理异构数据类型以及缺少数据。主要数据类型包含Series,DataFrame。
import numpy as np
import pandas as pd
Series:一维标签数据
由一组数据values与之相关的索引index组成;.index:获得索引,.values:获得数据。
data=pd.Series([7,8,9,10],index=['a','b','c','d'])#index为字符串
data=pd.Series([7,8,9,10],index=[2,3,4,5])#index为数字
data=pd.Series([7,8,9,10])#index默认从0-3
data.index
data.values
Series创建
从标量创建
#从标量创建
data=pd.Series(1,index=['a','b','c','d'])
从字典创建
#从字典创建
data_dic={2:'dog',1:'cat',3:'lion'}
data=pd.Series(data_dic)#未指定index默认对其进行从小到大排序
data=pd.Series(data_dic,index=[3,2])#指定index按其进行创建
从ndarray创建
#从ndarray创建
data=pd.Series(np.arange(5),index=np.arange(9,4,-1))#index和values都可以通过ndarray创建
基本操作
类似于ndarray
#类似于ndarray
data=pd.Series([7,8,9,10],index=['a','b','c','d'])
data[3]#自动索引
data[:2]#自动索引切片,包含0,1
类似于字典操作
#类似于字典操作
data['a']
data['a':'c']#包含'a','b','c',注意区别于自动索引方式
'c' in data #返回布尔值,判断'c'是否在data中
推荐索引-loc,iloc
#为了区别自动索引和自定义整数的index,采用loc,iloc
#loc:遵循自身index索引
#iloc:遵循自动索引
data=pd.Series([7,8,9,10,11],index=[2,3,4,5,6])#index为数字
data.loc[2]#7
data.loc[2:4]#[7,8,9]
data.iloc[2]#9
data.iloc[2:4]#[9,10]
对齐操作
#对齐操作,自动对齐不同索引的数据,具有相同索引的进行运算,没有相同的部分为NaN
data1=pd.Series([7,8,11],index=['a','b','f'])
data2=pd.Series([7,8,9,10,11],index=['a','b','c','d','f'])
data=data1+data2
对象修改立即生效
#对象修改立即生效
data['a']=100
data['a':'c']=20
DataFrame:二维标签数据
DataFrame是表格型的数据类型,每列值得类型可以不同,具有行索引和列索引;常用于表达二维数据;.index(行标签),.values(二维数据值),.columns(列标签)
DataFrame创建
从二维ndarray创建
#从二维ndarray创建
data=pd.DataFrame(np.arange(12).reshape(3,4))#自动索引行列
从一维ndarray对象字典创建
#从一维ndarray对象字典创建
data=pd.DataFrame({'one':pd.Series([7,8,11],index=['a','b','f']),
'two':pd.Series([7,8,9,10,11],index=['a','b','c','d','f'])})
从列表类型字典创建
#从列表类型字典创建
dic={'one':[7,8,11,12,13],'two':[7,8,9,10,11]}
data=pd.DataFrame(dic,index=['a','b','c','d','f'])