Ch6 ~7 데이터 로딩, 정제 및 준비
Ch6. 데이터 로딩과 저장, 파일 형식
데이터 읽기 read 함수 사용. 아래와 같은 옵션을 취할 수 있다. -색인 : DataFrame에서 하나 이상의 컬럼을 색인으로 지정 가능. -자료형
추론과 데이터 변환 -날짜 분석 -반복 -정제되지 않은 데이터 처리
계층적 색인을 지정하고 싶담녀 컬럼 번호나 이름의 리스트를 넘기면 된다
csv를 불러올 때 sep=',' 를 사용하여 , 를 구분자로 구분할 수 있다
read_pickle : 피클 포맷으로 저장된 객체를 읽어온다
pickle은 하나의 모듈로, 텍스트가 아닌 자료형(리스트, 클래스)은 일반적인 파일 입출력 방법으로 데이터를 저장하거나 불러올 수 없다.
이 문제를 해결할 때 사용하는 형식으로, 파이썬의 모든 자료들을 저장/읽을 수 있다.
오래 보관할 필요가 없는 데이터일 경우에만 추천. 장기간 보관된다는 보장이 없음
pickle 로 데이터를 저장하거나 불러올 때 파일을 바이트 형식으로 읽거나 써야한다(wb/rb)
pickle.load(파일)을 통해서 파일 내용을 읽어오려면 pickle.dump 를 사용해서 데이터를 입력한 파일어야한다.
Ch7. 데이터 정제 및 준비
누락된 데이터 골라내기 null 인 데이터는 추출하지 않는 함수 : dropna() , notnull () (두 함수 결과 똑같다) 만일 null이 하나라도 포함하고 있는 로우가 있으면 제외 how= 'all' 옵션을 넘기면 모두 NA값인 로우만 제외. NaN이 몇개 이상 값이 들어 있는 로우만 제하려면 tresh 인자에 기준 입력 (ex) tresh =2) (실습했을때는 오류가 나서 책에 있는것을 가져왔다)
from numpy import nan as NA
data=pd.Series ([1, 6, 3] , [1, NA, NA], [NA, NA, NA] , [NA, 6, 3] )
cleaned = data.dropna()
data
>> 0 1 2
0 1 6 3
1 1 NaN NaN
2 NaN NaN NaN
3 NaN 6 3
cleaned
>> 0 1 2
0 1 6 3
data.dropna(how='all')
>> 0 1 2
0 1 6 3
1 1 NaN NaN
3 NaN 6 3
결측치 채우기 fillna () : 넣고 싶은 값을 넘겨주면 된다. 사전값을 넘겨서 각 컬럼마다 다른 값을 채울 수 있다 data.fillna({1:0.5, 2:0} ) (1 칼럼에는 null 값에 0.5, 2칼람에는 0이 채워진다) 재색인에서 빈 공간에 null을 넣을수도 있다.
data = pd.DataFrame ({'k1' :['one', 'two'] * 3 +['two'],
'k2' : [1,1,2,3,3,4,4] })
data
>> k1 k2
0 one 1
1 two 1
2 one 2
3 two 3
4 one 3
5 two 4
6 two 4
data.duplicated()
>> 0 False
1 False
2 False
3 False
4 False
5 False
6 True
#one, two 를 * 3으로 중복한것이기 때문에 각 로우가 중복이다.
#마지막에 two만 중복없이 따로 입력한것이기 때문에 중복이 아니다
매핑 map () 사용해서 DataFrame의 컬럼이나 Series, 배열 내의 값을 기반으로 데이터 매핑할 수 있다 map 매서드는 딕셔너리 자료형태 사용 ! mapping 할 때 DataFrame에는 map 매서드가 적용되지 않으므로, Series로 바꿔주는 작업을 꼭! 해야한다
data=pd.DataFrame ({'food': ['bacon', 'pulled pork', 'bacon', 'ham','chicken','corned beef'],
'ounces' : [1, 4, 2, 3, 8,6] })
meat_to_animal={'bacon' : 'pig' , 'pulled pork' : 'pig', 'bacon' : 'pig' , 'ham' : 'pig', 'chicken' : 'chicken' , 'corned beef' : 'beef'}
lowercased= data ['food'].str.lower()
data['animal']=lowercased.map(meat_to_animal)
data
>> food ounces animal
0 bacon 1 pig
1 pulled pork 4 pig
2 bacon 2 pig
3 ham 3 pig
4 chicken 8 chicken
5 corned beef 6 beef
개별화와 양자화 분석을 위해 그룹별로 나누기. 라벨링 할수도 있다
ages = [20,22,25,27,34,47,72,45,32]
bins=[18,25,35,60,100]
cats = pd.cut(ages,bins)
cats
>>
[(18, 25], (18, 25], (18, 25], (25, 35], (25, 35], (35, 60], (60, 100], (35, 60], (25, 35]]
Categories (4, interval[int64]): [(18, 25] < (25, 35] < (35, 60] < (60, 100]]
# ages의 인자들이 bins의 기준으로 재표현 되었다
group_names=['youth','youthadult',',middleaged','senior']
pd.cut(ages,bins,labels=group_names)
>>
[youth, youth, youth, youthadult, youthadult, ,middleaged, senior, ,middleaged, youthadult]
Categories (4, object): [youth < youthadult < ,middleaged < senior]
#group_names 딕셔너리로 라벨링했
repalce ( [치환될 값], [치한할 값]) : 치환될 값이 여러개면 치한될 값을 여러개 적어도 된다. 리스트 대신 사전 이용해도 된다
문자열 객체 메서드 : split, strip , join, in, count 등 파이썬 기본 문법을 응용할 수 있다
정규표현식 : 텍스트에서 문자열 패턴을 찾는 유연한 방법을 제공 regex (단일 표현식) - 정규 표현 언어로 구성된 문자열 re 모듈 함수는 패턴 매칭, 치환, 분리 세가지로 나눌 수 있다
Last updated
Was this helpful?