利用Python数据分析:pandas入门(五)

来源:互联网 发布:淘宝新店怎么增加流量 编辑:程序博客网 时间:2024/05/20 18:51
from pandas import Series,DataFrameimport pandas as pdimport numpy as npfrom numpy import nan as NAdf = DataFrame(np.random.randn(7,3))df.ix[:4,1] = NAdf.ix[:2,2] = NAdfdf.fillna(0) # 将缺失值填充为0df.fillna({1:0.5,3:-1}) # 通过字典来调用fillna 实现对不同的列填充不同的值# fillna会默认返回新的对象,但是也可以对现有的对象就地进行修改_ = df.fillna(0,inplace=True)dfdf = DataFrame(np.random.randn(6,3))df.ix[2:,1] = NA;df.ix[4:,2] = NAdfdf.fillna(method='ffill') # 对reindex有效的插值方法也可以用于fillnadf.fillna(method='ffill', limit=2) # 只填充第三列data = Series([1,NA,3.5,NA,7])data.fillna(data.mean())# 层次化索引data = Series(np.random.randn(10),              index=[['a','a','a','b','b','b','c','c','d','d'],                     [1,2,3,1,2,3,1,2,2,3]])data'''a  1   -1.455854   2   -0.847865   3    2.115079b  1   -1.227672   2    0.355481   3    0.301750c  1   -0.214539   2   -0.653013d  2   -0.145661   3   -0.374012'''# 这就是带有 MultiIndex索引的Series的格式化输出data.index'''MultiIndex(levels=[[u'a', u'b', u'c', u'd'], [1, 2, 3]],           labels=[[0, 0, 0, 1, 1, 1, 2, 2, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 1, 2]])'''data['b'] # 子集选取data['b':'c']data.ix[['b','d']]data[:,2] # 在内层进行选取data.unstack() # 通过unstakck方法重新安排到一个dataframe中data.unstack().stack() # unstack的逆运算是stackframe = DataFrame(np.arange(12).reshape((4,3)),                  index=[['a','a','b','b'],[1,2,1,2]],                  columns=[['Ohio','Ohio','Colorado'],['Green','red','Green']])frame # 每条轴也可以有层次索引'''     Ohio     Colorado    Green red    Greena 1     0   1        2  2     3   4        5b 1     6   7        8  2     9  10       11'''frame.index.names = ['key1','key2'] # 每一层的名字frame.columns.names = ['state','color']frame'''color      Green  redkey1 key2a    1         0    1     2         3    4b    1         6    7     2         9   10'''frame['Ohio']# 重排分级顺序frame.swaplevel('key1','key2') # 对这两层的索引进行交换'''state      Ohio     Coloradocolor     Green red    Greenkey2 key11    a        0   1        22    a        3   4        51    b        6   7        82    b        9  10       11'''frame.sortlevel(1) # 根据单个级别中的值对数据进行排序frame.swaplevel(0,1).sortlevel(0)# 根据级别的总计frame.sum(level ='key2')  # 根据不同的级别进行合计计算frame.sum(level ='color',axis = 1)

0 0
原创粉丝点击