멋사 AISCOOL 7기 Python/INPUT
[Pandas, DataFrame] 컬럼 추가/삭제, 데이터프레임 인덱싱/정렬/요약, 시리즈 접근자,
dundunee
2022. 9. 22. 17:49
# Pandas
- pandas 는 데이터 조작 및 분석을 위한 Python 프로그래밍 언어 용으로 작성된 소프트웨어 라이브러리
- 다차원배열의 연산을 제공하며, 파이썬의 공학용 계산길고 볼 수 있음.
- 판다스의 대표적인 데이터타입은 series와 DataFrame이다.
DataFrame | Series | |
수학적 표현 | 행렬 | 백터 |
리스트 구조 | 2차원 | 1차원 |
예시 | [[1, 2, 3], [4, 5, 6]] | [1, 2, 3] |
df라는 데이터프레임이 있다고 가정하면, type(df)와 type(df["column1"])의 출력값은 다르다.
- type(df) --> pandas.core.frame.DataFrame
- typr(df["column1"]) --> pandas.core.series.Series
1. 라이브러리 로드하기
import pandas as pd
import numpy as np
2. 비어있는 데이터프레임 만들기
df = pd.DataFrame()
3. 컬럼추가하기
1) 모두 추가
df["약품명"] = ["소화제", "감기약", "비타민", "digestive", "Omega3", "오메가3", "vitamin", "Vitamin"]
2) 브로드캐스팅
df["가격"] = 3500
- 값을 일괄적으로 추가하는 것을 numpy에서 브로드캐스팅이라 부름
4. Series를 list로 변환
df["가격"].tolist() # = list(df["가격"])
5. 컬럼값 삭제하기: drop()
df["종류2"] = "전문의약품"
df = df.drop("종류2", axis=1)
- 삭제한 실행문은 다시 데이터프레임에 할당해야함.
- inplace 사용보다 drop() 사용이 더 권장됨
- axis = 1은 열, axis = 0은 행을 의미함
6. 데이터프레임 인덱싱
- 컬럼 하나만 가져오기: df["column"]
- 2개 이상의 컬럼 가져오기: df[ ["column1", "column2"] ]
- 파이썬에서 2개 이상의 데이터를 다룰 때는 보통 리스트 자료형을 사용합니다.
- 리스트는 대괄호[ ]로 묶여져 있는 데이터를 의미합니다.
- 행 1개 가져오기: df.loc[index]
- 2개 이상의 행 가져오기
df.loc[ : ], df.loc[ [index1, index2] ], df.iloc[ : ], df.iloc[ [index1, index2] ]
- 행과 열 함께 가져오기
- df.loc[ : , : ]
- 문자열, 숫자 모두 가능함
- 연속된 경우가 아닌 행과 열을 추출할 경우 리스트 형식( [ ] )으로 표현해야함
- df.iloc[ : , : ]
- 인덱스 번호로만 가능함
- df.loc[ : , : ]
- df.set_index(): 특정 컬럼이 인덱스로 설정
df.set_index("약품명") --> 약품명 컬럼이 인덱스로 설정됨
df.set_index("약품명").loc["소화제"] --> 약품명 == 소화제 인 행만 추출함
- df.reset_index(): 인덱스 되돌리기
*bool indexing: 조건에 따라 원하는 자료만 찾기
예시): 약품의 가격이 특정 값 이상 혹은 이하인 데이터만 불러오기

7. string accessor
- .str.contains()
- .str.upper()
- .str.lower()
예시1) 특정 컬럼값 모두 대문자로 만들기
df["약품명"].str.upper()
예시2) 특정 값이 들어있는 데이터 불러오기 --> bool indexing 개념 사용
df[df["약품명"].str.contains("vita")]
8. 정렬하기
- df.sort_values(by = "정렬할 기준 컬럼", ascending = T/F)
- ascending의 기본값은 True로 순차 정렬임
- 여러개 칼럼 동시 정렬도 가능함
df.sort_values(by = ["가격", "약품명"], ascending = [False, True])
9. 저장하기
df.to_확장자('저장할 파일명')
df.to_csv('drug.csv', index=False, encoding = 'cp949')
10. 불러오기
pd.read_확장자('파일명', encoding = )
pd.read_csv('drug.csv', encoding = 'cp949')
11. 데이터 요약하기
- df.info(): 데이터프레임 정보 불러오기
- df.shape: (행, 열) 개수 출력하기
- df.dtypes: 컬럼별 데이터타입
- df.describe(): 수치형데이터의 기술통계량
- 데이터개수, 평균, 표준편차, 최솟값, 1,2,3사분위수, 최댓값
- df.describe(include="object"): 범주형데이터의 기술통계량
- 개수, 고유값 개수, 최빈값, 최빈값에대한 빈도수