멋사 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.set_index(): 특정 컬럼이 인덱스로 설정
 df.set_index("약품명") --> 약품명 컬럼이 인덱스로 설정됨
df.set_index("약품명").loc["소화제"] --> 약품명 == 소화제 인 행만 추출함
 
 

  • df.reset_index(): 인덱스 되돌리기

*bool indexing: 조건에 따라 원하는 자료만 찾기

예시): 약품의 가격이 특정 값 이상 혹은 이하인 데이터만 불러오기

여기서 중요한 점은 조건을 반드시 df [ ]안에 넣어줘야 해당 데이터를 불러올 수 있음!

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"): 범주형데이터의 기술통계량
    • 개수, 고유값 개수, 최빈값, 최빈값에대한 빈도수