利用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 联系我们: