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
반응형
댓글