59doit

[Pandas] #4 ser 본문

Programming/Python(파이썬)

[Pandas] #4 ser

yul_S2 2022. 11. 8. 08:43
반응형

ser

ser = pd.Series(np.arange(3.))
ser
# <출력>
# 0    0.0
# 1    1.0
# 2    2.0
# dtype: float64

정수 기반의 색인을 사용하지 않는 경우 이런 모호함은 사라진다.

ser2 = pd.Series(np.arange(3.), index=['a', 'b', 'c'])
ser2[-1]
# <출력> 2.0

 

일관성 유지를 위해 정수값을 담고 있는 축 색인이 있다면 우선적으로 라벨을 먼저 찾아보도록 구현되어 있다.

ser[:1]
# <출력>
# 0    0.0
# dtype: float64

 

라벨 컬럼 => loc 을 사용

ser.loc[:1]
# <출력>
# 0    0.0
# 1    1.0
# dtype: float64

 

정수 색인 row =>iloc 을 사용

ser.iloc[:1]
# <출력>
# 0    0.0
# dtype: float64

 

 

다른 색인을 가지고 있는 객체간의 연산이 가능하다

s1 = pd.Series([7.3, -2.5, 3.4, 1.5], index=['a', 'c', 'd', 'e'])
s2 = pd.Series([-2.1, 3.6, -1.5, 4, 3.1], index=['a', 'c', 'e', 'f', 'g'])

s1
# <출력>
# a    7.3
# c   -2.5
# d    3.4
# e    1.5
# dtype: float64

s2
# <출력>
# a   -2.1
# c    3.6
# e   -1.5
# f    4.0
# g    3.1
# dtype: float64

 

 

 

서로 겹치는 색인이 없는 경우 데이터는 NA 값

s1 + s2   
# <출력>
# a    5.2
# c    1.1
# d    NaN
# e    0.0
# f    NaN
# g    NaN
# dtype: float64

 

 

DataFrame 의 경우 정렬은 로우와 컬럼 모두에 적용됨.

df1 = pd.DataFrame(np.arange(9.).reshape((3, 3)),  
                   columns=list('bcd'), index=['Ohio', 'Texas', 'Colorado'])
df2 = pd.DataFrame(np.arange(12.).reshape((4, 3)), 
                   columns=list('bde'), index=['Utah', 'Ohio', 'Texas', 'Oregon'])

df1
# <출력> 
#             b    c    d
# Ohio      0.0  1.0  2.0
# Texas     3.0  4.0  5.0
# Colorado  6.0  7.0  8.0

df2
# <출력>  
#           b     d     e
# Utah    0.0   1.0   2.0
# Ohio    3.0   4.0   5.0
# Texas   6.0   7.0   8.0
# Oregon  9.0  10.0  11.0

df1 + df2
# <출력> 
#             b   c     d   e
# Colorado  NaN NaN   NaN NaN
# Ohio      3.0 NaN   6.0 NaN
# Oregon    NaN NaN   NaN NaN
# Texas     9.0 NaN  12.0 NaN
# Utah      NaN NaN   NaN NaN

 

 

 

공통되는 컬럼 로우 없는 DataFrame 는 결과에 아무것도 안 나타난다.

df1 = pd.DataFrame({'A': [1, 2]})
df2 = pd.DataFrame({'B': [3, 4]})

df1
# <출력>
#    A
# 0  1
# 1  2

df2
# <출력>
#    B
# 0  3
# 1  4

df1 - df2
# <출력> 
#     A   B
# 0 NaN NaN
# 1 NaN NaN

 

서로 다른 색인을 가지는 객체 간의 산술연산에서 존재하지 않는 축의 값을 특수한 값(ex-0)으로지정

df1 = pd.DataFrame(np.arange(12.).reshape((3, 4)),
                   columns=list('abcd'))
df2 = pd.DataFrame(np.arange(20.).reshape((4, 5)),
                   columns=list('abcde'))
df2.loc[1, 'b'] = np.nan

df1
# <출력> 
#      a    b     c     d
# 0  0.0  1.0   2.0   3.0
# 1  4.0  5.0   6.0   7.0
# 2  8.0  9.0  10.0  11.0

df2
# <출력>     
#       a     b     c     d     e
# 0   0.0   1.0   2.0   3.0   4.0
# 1   5.0   NaN   7.0   8.0   9.0
# 2  10.0  11.0  12.0  13.0  14.0
# 3  15.0  16.0  17.0  18.0  19.0

 

 

 

  • 겹치지 않는 부분 NaN & 존재하지 않는 축의 값을 특수한 값(ex-0)으로지정
df1+df2
# <출력>
#       a     b     c     d   e
# 0   0.0   2.0   4.0   6.0 NaN
# 1   9.0   NaN  13.0  15.0 NaN
# 2  18.0  20.0  22.0  24.0 NaN
# 3   NaN   NaN   NaN   NaN NaN

df1.add(df2, fill_value = 0)
# <출력>
#       a     b     c     d     e
# 0   0.0   2.0   4.0   6.0   4.0
# 1   9.0   5.0  13.0  15.0   9.0
# 2  18.0  20.0  22.0  24.0  14.0
# 3  15.0  16.0  17.0  18.0  19.0

 

df1을 1로 나눈다

1/df1
df1.rdiv(1)
# <출력>
#        a         b         c         d
# 0    inf  1.000000  0.500000  0.333333
# 1  0.250  0.200000  0.166667  0.142857
# 2  0.125  0.111111  0.100000  0.090909

 

 

 

재색인

df1.reindex(columns=df2.columns,fill_value=0)
# <출력>
#      a    b     c     d  e
# 0  0.0  1.0   2.0   3.0  0
# 1  4.0  5.0   6.0   7.0  0
# 2  8.0  9.0  10.0  11.0  0

 

 

 

반응형

'Programming > Python(파이썬)' 카테고리의 다른 글

[Python] indexing  (0) 2022.11.08
[Pandas] arr  (0) 2022.11.08
[Python-Pandas] #3 drop  (0) 2022.11.07
[Python-Pandas] #2 index  (0) 2022.11.07
[Python-Pandas] #1  (2) 2022.11.07
Comments