Pandas包含两大数据结构Series , DataFrame
1 Series对象
1.1 定义Series对象
Series对象用来表示一位数据结构,含有两列数据Index(索引)、value(数据)
调用Series()构造函数,要以数组的方式传入,即
>>> pd.Series([12,6,9], index = [‘a’,’b’,’c’])
也可以用numpy 或者现有的Series对象动态定义新Series对象
可以用事先定义好的字典来创建Series对象,索引列默认用字典的键来填充,也可重新指定索引,如果索引列没有数据,则填充为NaN
1.2 数学运算
(+、-、*、/)和其他数学函数也适用于Series,但是Numpy库的数学函数必须指明出处,np.log(s)#s为Series对象
Series1 + Series2,标签相同的元素相加,不同标签的值被填充为0。要是想保留标签不同的数值,用Series1.add(Series2)
1.3 组成元素
Series.unique( ):统计Series中去重后的元素,但是顺序比较随意
Series.value_counts( ):统计Series中唯一元素及其出现的次数
Series.isin( ):判断给定的元素是否在Series中,返回布尔值
Series.isnull( )和Series.notnull( ):识别有无NaN元素(适用于Series ,和DataFrame)
2 DataFrame对象
DataFrame的数据结构与Excel极为相似
2.1 定义DataFrame对象
创建一个dict对象传递给DataFrame
>>> dict = { ‘number’ : [ ‘one’, ‘ two’ ] , ‘color’ :[ ‘blue’, ‘black’ ]}
>>> frame = pd.DataFrame( dict )
用嵌套字典生成 # 对应索引没有元素时,pandas会用NaN填充
>>> nestdict = { ‘blue’:{2012:22 , 2013:26} ,
‘black’ : {2012:26, 2013:29 , 2014:46} ,
‘green’ : {2012:16, 2013:25 } }
>>> frame2 = pd.DataFrame( nestdict )
或者直接构造,即
>>> pd.DataFrame(data, #数字矩阵
Index, #标签
columns #列名)
2.2 元素选取和赋值
DataFrame.columns:显示DataFrame对象所有列的名字
DataFrame.index:获取索引列表
DataFrame.values:获取所有元素
DataFrame.ix [ number ] :获取number+1行的所有元素
DataFrame.ix [ list [ number1 , number2 ] ]:获取number1+1、number2+1行的所有元素
DataFrame.index.name = ‘id’ : 索引组列名为id
DataFrame.columns.name = ‘item’ : 各数组列名的索引为item
DataFrame [ ‘columns_number’ ] = data :新增一列columns_number,数值为data
DataFrame.drop(labels = [col1 , col2] , axis = 1) :删除col1和col2两列数据 #并未改变原DataFrame的数值
Del DataFrame[col1]:删除col1数据 #把原DataFrame的col1列数据删除
数值筛选:关系符号直接与DataFrame做比较,返回布尔值(DataFrame表中元素全为float或int)
DataFrame.T :内容转置
2.3 数学运算
DataFrame1 + DataFrame2,标签相同的元素相加,不同标签的值被填充为0。
Pandas允许DataFrame和Series两种不同数据结构相加,两者运算时,DataFrame对象各元素运算操作Series对象索引与之相同的元素,若索引列只存在其中一个数据结构中,则运算结果会为2该索引项生成一列,只不过该列所有元素为NaN
3 index对象
index对象不可更改,但是可以对元素的索引列进行更换(重新定义)
idmin( )和idmax():返回索引列的最小、最大值
index.is_unique :判断该数据结构的标签列是否存在重复值,返回布尔值
reindex( list , index = [] ):重新编制索引 #在数据量较多的时候,存在操作麻烦
插值索引:redindex( list , method = ‘ffill’ #’ffill’或’pad 前向填充
’bfill’或’backfill 后向填充)
注意:重新编制索引后,如果数据类型原本是int , 因为index发生了变化,启用fill_value参数,此参数为float类型,故数据类型会变成float