59doit
[Pandas] #4 ser 본문
반응형
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