Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 가상환경
- queue
- 노마드코딩
- 정보처리기사 c언어
- aws jupyter notebook
- Selenium
- Algorithm
- 자료구조
- String Method
- 코딩테스트
- MySQL
- 백준
- pandas
- programmers
- python
- Join
- 파이썬
- Stack
- 프로그래머스
- dataframe
- Matplotlib
- 선그래프
- 알고리즘 스터디
- 알고리즘스터디
- openCV
- 데이터시각화
- javascript
- 알고리즘
- type hint
- NumPy
Archives
- Today
- Total
조금씩 꾸준히 완성을 향해
[Pandas] 행과 열 다루기(삭제, 선택, 추가, 변경) 본문
행/열 삭제
- drop()
- 축 옵션으로 axis=0을 입력하면 행 삭제 (default 설정이라 생략가능)
- 축옵션 axis=1을 입력하면 열을 삭제
동시에 여러 개의 행 또는 열을 삭제하려면, 리스트 형태로 입력 - 원본을 변경하지 않고 새로운 객체를 반환하기 때문에 원본 객체를 변경하려면 inplace=True 옵션 사용
- 행 삭제
# 인덱스가 '우현'인 행 삭제
df2 = df.copy() # df2에 원본 데이터 복사
df2.drop('우현', inplace=True) # df2 직접변경
df2
# 인덱스가 '우현', '인아'인 행 삭제
df3 = df.drop(['우현', '인아'], axis = 0) #원본에서 수정된 데이터를 바로 df3으로 받기
df3
- 열 삭제
# '수학' 열 삭제
df4 = df.drop('수학', axis=1)
df4
# '영어', '음악' 열 삭제
df5 = df.drop(['영어', '음악'], axis=1)
df5
행/열/원소 선택
- 열 선택
# 대괄호 안에 값 하나만 넣으면 시리즈로 반환
df['수학']
# 열 하나만 선택할 경우 괄호 생략도 가능
df.수학
# 대괄호 두개를 써주면 이차원 데이터프레임으로 반환
df[['수학']]
# 두 개 열 이상 선택 : 무조건 대괄호 두 개
df[['수학', '영어']]
- 행 선택
- loc과 iloc 인덱서 사용
- 인덱스 이름을 기준으로 행을 선택할 때는 loc, 정수형 위치 인덱스를 사용할 때는 iloc
- 1개 행 선택
# 인덱스 이름으로 행 선택
df.loc['서준'] #시리즈
df.loc[['서준']] #데이터프레임
# 정수 인덱스로 행 선택
df.iloc[0]
- 여러 개의 원소 선택 (인덱스 범위 지정)
# '서준'행에서 '우현'행까지 선택
df.loc['서준':'우현']
# 행 인덱스 0부터 1까지 선택
df.iloc[0:2]
# 원소 하나 선택 (서준이의 음악 점수)
df.loc['서준', '음악'] # 85
# 행 인덱스 0, 열 인덱스 2의 값
df.iloc[0, 2] # 85
# 서준이의 음악, 체육 점수
df.loc['서준',['음악','체육']]
# 서준이의 음악~체육 점수
df.loc['서준', '음악':'체육']
# 행 인덱스 0, 열 인덱스 -2 & -1
df.iloc[0,[-2, -1]]
# 행 인덱스 0, 열 인덱스 -2 ~ 0
df.iloc[0, -2:]
# 서준, 우현 행 + 음악, 체육 열
df.loc[['서준', '우현'], ['음악','체육']]
# 행 인덱스 0, 1 + 열 인덱스 2, 3
df.iloc[[0,1], [2,3]]
# 행 인덱스 0~1, 열 인덱스 2~끝
df.iloc[:2, 2:]
행/열 추가
- 열추가
- 추가하려는 열 이름과 데이터 값을 입력. 마지막 열에 덧붙이듯 새로운 열 추가.
- 이때 모든 행에 동일한 값이 입력되는 점에 유의.
df6 = df.copy()
df6['국어'] = 90 #BroadCasting
df6['과학'] = [80, 40, 60]
df6
- 행추가
- 행 인덱스와 데이터 값을 loc인덱서를 사용하여 입력
df7 = df.copy()
df7.loc[3] = 0
df7.loc['동규'] = [100, 90, 80, 70, 60]
df7.loc['민아'] = df7.loc['동규']
df7
원소 값 변경
원소를 선택하고 새로운 데이터 값을 지정
- 1개의 원소 변경
# 서준의 체육 점수를 100으로 변경
df6.loc['서준']['체육'] = 100 # Warning! ->error가 나지는 않지만 지양해야 할 방법
# 서준의 체육 점수를 100으로 변경
df6.loc['서준', '체육'] = 100
# 서준의 음악, 체육 점수를 모두 50점으로 변경
df6.loc['서준', ['음악', '체육']] = 50
# 서준의 음악, 체육을 각각 90, 60으로 변경
df6.loc['서준', ['음악', '체육']] = 90, 60
행/열의 위치 바꾸기
- 데이터 프레임의 행과 열을 서로 맞바꾸는 방법
- transpose() or 객체.T
df.transpose()
df.transpose().T
'Python > Numpy & Pandas' 카테고리의 다른 글
[Pandas] 데이터 전처리 / 누락 데이터 처리 (isnull, notnull, dropna, fillna) (0) | 2022.10.02 |
---|---|
[Pandas] Index 활용 함수(set_idex, reindex, reset_index, sort_index) (0) | 2022.09.29 |
[Pandas] DataFrame 객체 생성과 변경 (0) | 2022.09.25 |
[Pandas] Pandas의 개념 & Series 객체 생성하고 다루기 (0) | 2022.09.25 |
[Numpy] 비교 연산(Comparison Operators) (0) | 2022.09.25 |