본문 바로가기

Archived(CSE Programming)/Machine Learning

Chap 5-2. Pandas

- 엑셀, 스프레드 시트로 활용

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

- 고성능 Array 계산 라이브러리인 Numpy와 통합하여 기능제공

- 인덱싱, 연산용 함수, 전처리 함수 등을 제공

- Numpy의 Wrapper 라이브러리


Pandas를 통해 필요한 데이터 추리기 등으로 유용하게 사용가능

import pandas as pd # 라이브러리 호출


1) 기본적인 사용법


1
2
3
data_url = https://주소
df_data = pd.read_csv(data_url, sep='\s+', headr = None)
# 스프레드 시트 형태로 가져올 수 있음
cs


2) 데이터

Series - 하나의 Column에 해당하는 데이터 모음 Object

DataFrame - Data Table 전체를 포함하는 Object


Series는 Index로 값을 접근할 수 있다(dict 객체로 활용 가능(

Dataframe은 Series를 모아서 만든 Table, column 이름으로 묶임


1
2
3
df =DataFrame(raw_data, columns=["age","city"]) # age,city 열 가져오기
df.first_name # series 추출
df["first_name"# series 추출
cs


3) 데이터 접근방법

loc, iloc 사용

del 삭제하기

1
2
3
df.loc[1# index location(인덱스 이름)
df.iloc[1# index position(인덱스 위치)
df.debt = df.age > 40 # 이렇게 가져오는 경우 많음
cs


4) Selection & Drop


1
2
3
4
5
6
7
8
df["account"].head(3# 1개의 column 선택
df[["account","street","state"]].head(3# 1개 이상의 column 선택
df[:3# column 이름 없이 사용하는 index number는 row 기준 표시
df["account"][:3# 특정 컬럼의 row index 가져오기
 
account_series[[0,1,2]] # index 0,1,2 의 값 추출하기
account_series[account_series<3# boolean index
df.index = df["account"# 특정 column을 index로 지정하기
cs


Index number로 접근할 수 있고 index name으로 접근할 수 있다

또한, iloc을 통해서 접근도 가능하다!


1
2
3
4
5
df.index = list(range(0,15)) # 일반적인 index 설정
df.drop(1# index number로 drop
df.drop([0,1,2,3]) # 1개 이상의 데이터 drop
df.drop("city", axis=1# 축을 기준으로 drop, copy한 버전 반환
df.drop("city", axis=1, inplace=True) # 원본으로 삭제
cs


5) Operation

Series operations


1
2
s1.add(s2) # index 이름이 같은 것끼리 값 더해주기
s1.add(s2,fill_value=0# NaN 값에 0으로 채워서 더해주기
cs


6) Lambda, Map

map함수를 활용하면 data 변환이 유용하다

replace 도 활용가능


1
df.sex.replace(["male""female"], [0,1], inplace=True)
cs


7) Apply

apply는 map과 달리 series 전체에 해당 함수를 적용

입력값이 series 데이터로 입력받아 handling 가능


8) Built-in Function

describe(), unique() 등등...


Handling

Pandas로 활용하는 것은 

데이터의 모판을 만드는 것이다.


Data를 가공하여 보다 깔끔한 형태로 Handling


1) Groupby

- SQL 명령어와 같음 (split-apply-combine)

df.groupby("기준컬럼")["적용받는컬럼"].sum()

기준 컬럼을 2개 이상 줄 수 있다


2) Hierarchical index

h_index.index , h_index.unstack() # matrix로 만듬

DB에 보통 쭉 풀어져있는데 이로부터 Feature를 생성함


3) Groupby2

groupby("기준컬럼") # split된 상태로 저장할 수 있음

groupby("기준컬럼").filter(lambda함수) # 필터로 값 출력가능

# aggregation도 활용해서 여러 가지 데이터를 처리할 수 있음


4) Pivot table 

1
2
df_phone = pd.read_csv("csv data")
df_phone.pivot_table(["duration"],index= [df_phone.month, df_phone.item],columns=df_phone.network, aggfunc="sum", fill_value=0)
cs


5) Crosstab 

- 특허 두 칼럼에 교차 빈도, 비율, 덧셈 등을 구할 때 사용

- Pivot tavle의 특수한 형태

- user item Rating Matrix 등을 만들 때 사용가능함


6) Merge , Concat

Merge는 SQL 명령어 Merge와 동일, 두 개의 데이터를 하나로 합침


7) DB - persistence

DB connection, Data loading 시 db connection 기능을 제공함

import sqlite 를 통해 sqlite로 가지고 와서 query 처리가능