본문 바로가기
카테고리 없음

20-10-07, Pandas_2일차(컬럼추가/삭제, 행추가/삭제)

by NickNuma 2020. 10. 12.

2일차에서는 1일차에서 했던 행열 검색 및 입력을 잠깐알아보고
index, 행, 열 추가 삭제, 정렬, NaN처리, 유용한 함수들에 대해서 살펴봤습니다.


"""
    컬럼추가 방법

    1. df[컬럼] = 값
    2. df.insert(df컬럼인덱스, 컬럼명, 값)
    3, pd.concat(df, df2, axis = 1)
    4. df.reset_index
    5. series 추가
"""
df = pd.DataFrame({'이름' : ['홍길동', '이순신', '유관순', '강감찬'],
                   '국어' : [25, 41, 32, 12],
                   '수학' : [35, 21, 52, 32]},
                    index=range(1, 5))
print("1. 원본: \n", df)
#      이름  국어  수학
# 1  홍길동    25    35
# 2  이순신    41    21
# 3  유관순    32    52
# 4  강감찬    12    32

컬럼 추가
1. DataFrame[' 추가 컬럼 '] = [values]

df['과학'] = [33, 22, 44, 12]
print("2. []컬럼추가: \n", df)
#   이름  국어  수학  과학
# 1  홍길동  25  35  33
# 2  이순신  41  21  22
# 3  유관순  32  52  44
# 4  강감찬  12  32  12
df['평균'] = (df['국어'] + df['수학'] + df['과학']) /3
print("2. []컬럼추가: \n", df)
#   이름  국어  수학  과학   평균
# 1  홍길동  25  35  33  31.000000
# 2  이순신  41  21  22  28.000000
# 3  유관순  32  52  44  42.666667
# 4  강감찬  12  32  12  18.666667
df['합격여부'] = df['평균']   > 30
print("2. []컬럼추가: \n", df)
#    이름  국어  수학  과학    평균   합격여부
# 1  홍길동  25  35  33  31.000000   True
# 2  이순신  41  21  22  28.000000  False
# 3  유관순  32  52  44  42.666667   True
# 4  강감찬  12  32  12  18.666667  False
df['합격여부'] = ["합격" if avg > 30 else "불합격" for avg in df['평균']]
print("2. []컬럼추가: \n", df)
#    이름  국어  수학  과학   평균    합격여부
# 1  홍길동  25  35  33  31.000000   합격
# 2  이순신  41  21  22  28.000000  불합격
# 3  유관순  32  52  44  42.666667   합격
# 4  강감찬  12  32  12  18.666667  불합격

2.DataFrame.insert(컬럼인덱스, "컬럼명", 값)

df.insert(1, "영어", [23, 34, 11, 35])
print("3. insert 값 삽입\n", df)
#    이름  영어  국어  수학  과학  평균   합격여부
# 1  홍길동  23  25  35  33  31.000000   합격
# 2  이순신  34  41  21  22  28.000000  불합격
# 3  유관순  11  32  52  44  42.666667   합격
# 4  강감찬  35  12  32  12  18.666667  불합격

3.DataFrame.concat(df1, df2, axis = 1)
행렬 병합

df = pd.DataFrame({'이름' : ['홍길동', '이순신', '유관순', '강감찬'],
                   '국어' : [25, 41, 32, 12],
                   '수학' : [35, 21, 52, 32]},
                    index=range(1, 5)
                  )
df2 = pd.DataFrame({
                   '영어' : [25, 41, 32, 12],
                   '과학' : [35, 21, 52, 32]},
                    index=range(1, 5)
                  )
new_df = pd.concat([df, df2], axis=1)
print("1. concat 컬럼추가: \n", new_df)
#      이름  국어  수학  영어  과학
# 1  홍길동  25  35  25  35
# 2  이순신  41  21  41  21
# 3  유관순  32  52  32  52
# 4  강감찬  12  32  12  32

 4. 기존 index를 column으로 추가하고 새로운 index를 자동으로 생성

df = pd.DataFrame({
                   '국어' : [25, 41, 32, 12],
                   '수학' : [35, 21, 52, 32]},
                    index=['홍길동', '이순신', '유관순', '강감찬'])
print("1. 원본: \n", df)
#       국어  수학
# 홍길동  25  35
# 이순신  41  21
# 유관순  32  52
# 강감찬  12  32

df.reset_index(inplace=True)
print("2. reset_index:\n", df)
#    index  국어  수학
# 0   홍길동  25  35
# 1   이순신  41  21
# 2   유관순  32  52
# 3   강감찬  12  32

5. Series 생성

df = pd.DataFrame({'이름':['홍길동','이순신','유관순','강감찬'],
                   '국어':[25,41,32,12],
                   '수학':[35,12,52,32]},
                  index=range(1,5))
print("1. 원본:, \n", df)
#      이름  국어  수학
# 1  홍길동  25  35
# 2  이순신  41  12
# 3  유관순  32  52
# 4  강감찬  12  32
s1 = pd.Series(data=[33,22,44,11], index=range(1,5))
df['과학']=s1
print("2. Series 이용: \n", df)
#    이름  국어  수학  과학
# 1  홍길동  25  35  33
# 2  이순신  41  12  22
# 3  유관순  32  52  44
# 4  강감찬  12  32  11

 


행 추가(병합)

"""
    행 추가 방법
    1. df.append(df2)   ==> df x df
    2. pd.concat([df, df2, ...])
"""
df = pd.DataFrame([[9,8,7], [66, 43, 23], [3,6,7]],
                  columns=['a', 'b', 'c'],
                  index=[10,20,30])
df1 = pd.DataFrame([[90,81,27], [611,244, 252], [35,76,79]],
                  columns=['a', 'b', 'c'],
                  index=[10,20,30])

df.append(df2)

#1. 행 추가
appended_df = df.append(df2, ignore_index=True) #기존 인덱스 지우고 0번부터 새로 인덱스 정렬
print("2. df.append 이용한 행추가(딕셔너리):\n", appended_df)
#    이름  국어  수학
# 0  홍길동  25  35
# 1  이순신  41  21
# 2  유관순  32  52
# 3  강감찬  12  32

df = pd.DataFrame({'이름' : ['홍길동', '이순신'],
                   '국어' : [25, 41],
                   '수학' : [35, 21]},
                    index=range(1, 3)
                  )
df2 = pd.DataFrame({'이름' : ['유관순', '강감찬'],
                   '국어' : [32, 12],
                   '수학' : [52, 32]},
                    index=range(1, 3)
                  )

pandas.concat([df, df2])

#3. concat 행추가
appended_df = pd.concat([df,df2, df], ignore_index=True)
print("3. pd.concat  이용한 행추가\n", appended_df)
#    이름  국어  수학
# 0  홍길동  25  35
# 1  이순신  41  21
# 2  유관순  32  52
# 3  강감찬  12  32
# 4  홍길동  25  35
# 5  이순신  41  21

 


행 삭제

"""
    행 삭제 방법
    1. df.drop(index = [인덱스명, 인덱스명, ...])
"""
df = pd.DataFrame({'이름' : ['홍길동', '이순신', '유관순', '강감찬'],
                   '국어' : [25, 41, 32, 12],
                   '수학' : [35, 21, 52, 32]},
                    index=range(1, 5))
print("기본:\n", df)
#    이름  국어  수학
# 1  홍길동  25  35
# 2  이순신  41  21
# 3  유관순  32  52
# 4  강감찬  12  32

df.drop(index = [ ])

#1. 행삭제
df.drop(index=[1,2], inplace=True)
print("1. 행삭제:\n",df)
#    이름  국어  수학
# 3  유관순  32  52
# 4  강감찬  12  32

df.drop( [ ] )

#2.행삭제
df.drop([4], axis=0, inplace=True)
print("2. 행삭제:\n",df)
#     이름  국어  수학
# 3  유관순  32  52
반응형

댓글