부스트캠프/day 정리

[week 1 - day 2] Pandas

요다다 2023. 3. 8. 01:11

Pandas란 ?

구조화된 데이터의 처리를 지원하는 라이브러리

import pandas as pd

data_url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data'
df_data = pd.read_csv(data_url, sep="\s+", header=None) #정규식을 통해 여러 띄어쓰기로 구분

 

series

column vector를 표현한 object이다.

1차원 배열같은 자료구조인데, 인덱스가 같이 출력된다는 점과 그 인덱스를 지칭할 수 있다는 점에서 새롭다.

obj = Series([1,2,3,4], index = ['a', 'b', 'c', 'd'])

 

dataframe

series들을 하나로 모은 구조

import pandas as pd
raw_data = {"first_name" : ["kim", "lee", "cho", "choi", "lee"],
           "age":[10,11,12,13,14],
            "grade":['a+','b+','a+','a0','a+']
           }
type(raw_data)

df = pd.DataFrame(raw_data, columns=["first_name","age","grade"])
df

다음과 같이 딕셔너리 형태로 raw_data를 만들어주고, df형태로 바꾸어주었다.

 

df indexing

loc : index 이름

iloc : index number

## code 1
df.loc[:2, ["first_name", "grade"]] #2번까지'first_name','grade' 컬럼만 추출

## code 2
df.iloc[:2, [0,2]] #2번 전까지 0번째 컬럼 2번째 컬럼 추출

위 결과를 보면 차이가 확연히 드러난다.

 


replace funtion

특정 컬럼의 데이터를 변환할 수 있다.

## 방법 1 : dict 타입 적용
df.grade.replace(
	{"a+":"1등급", "a0":"2등급", "b+":"3등급" , "b0":4등급}, inplace=True
  ).head()  
  
## 방법 2
df.grade.replace(
	["a+","a0","b+","b0"], [1,2,3,4], inplace=True
    )
df.head()

다음을 실행하면 a+은 1등급으로 바뀌게 될 것이고, a0은 2등급으로 바뀌게 될 것이다.

 


groupby

sql groupby와 같다. 특정 속성 값을 기준으로 그룹핑해주는 것 !

과정에 대해서 딱히 생각해보지 않았는데, split -> apply -> combine 과정을 거쳐 연산한다.

 

df.groupby("기준컬럼명")