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


 
 
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.nan
a
b
np.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  three
state
Ohio        0    1      2
Colorado    3    4      5
"""
result = data.stack()
result
result.unstack()
"""number    one  two  three
state
Ohio        0    1      2
Colorado    3    4      5
"""
result.unstack(0) # unstack是最内层(stack)传入分层级别的编号名称
result.unstack('state') # 传入的是名称
"""
state   Ohio  Colorado
number
one        0         3
two        1         4
three      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    3
two  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'))
df
df.unstack('state') # 在对DataFrame进行操作的时候作为旋转轴的级别将会成为结果中最低的
df.unstack('state').stack('side')



注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: