利用Python数据分析:数据规整化(三)

来源:互联网 发布:日本dvd播放软件 编辑:程序博客网 时间:2024/06/10 02:19
a = Series([np.nan,2.5,np.nan,3.5,4.5,np.nan],           index=['f','e','d','c','b','a'])b = Series(np.arange(len(a),dtype=np.float64),           index=['f','e','d','c','b','a'])b[-1] = np.nanabnp.where(pd.isnull(a),b,a) # 两个数据集进行合并,(索引或者是部分重叠)b[:-2].combine_first(a[2:]) # 和上面实现同一个功能但是会进行自动的数据对齐df1 = DataFrame({'a':[1,np.nan,5,np.nan],                 'b':[np.nan,2,np.nan,6],                 'c':range(2,18,4)})df2 = DataFrame({'a':[5,4,np.nan,3,7],                 'b':[np.nan,3,4,6,8]})df1.combine_first(df2)#  重塑和轴向旋转data = DataFrame(np.arange(6).reshape((2,3)),                 index=pd.Index(['Ohio','Colorado'],name = 'state'),                 columns=pd.Index(['one','two','three'],name = 'number'))data # stack 将列旋转为行, unstack的行旋转为列"""number    one  two  threestateOhio        0    1      2Colorado    3    4      5"""result = data.stack()resultresult.unstack()"""number    one  two  threestateOhio        0    1      2Colorado    3    4      5"""result.unstack(0) # unstack是最内层(stack)传入分层级别的编号名称result.unstack('state') # 传入的是名称"""state   Ohio  Coloradonumberone        0         3two        1         4three      2         5"""s1 = Series([0,1,2,3],index=['a','b','c','d'])s2 = Series([4,5,6],index=['c','d','e'])data2 = pd.concat([s1,s2],keys=['one','two'])data2"""one  a    0     b    1     c    2     d    3two  c    4     d    5     e    6"""data2.unstack() # 如果不是所有的级别值都能在各个分组中找到的话,UNstack操作可能会引入缺失数据data2.unstack().stack() # stack默认会过滤掉缺失值data2.unstack().stack(dropna=False) # 可以指定缺失值不被过滤df = DataFrame({'left':result,'right':result+5},               columns=pd.Index(['left','right'],name = 'side'))dfdf.unstack('state') # 在对DataFrame进行操作的时候作为旋转轴的级别将会成为结果中最低的df.unstack('state').stack('side')


0 0