2021. 1. 13. 00:42ㆍ프로그래밍-AI & 빅데이터/머신러닝
판다스 역시 2차원 데이터를 다루며, 넘파이보다 훨씬 편함.
<판다스에서 사용하는 객체>
DataFrame: 2차원 데이터를 담는 구조체, 컬럼이 여러개
Index: pk와 같은 고유 key값
Series: 2차원의 데이터를 담는 구조체, 컬럼이 1개. Series 여러개가 DataFrame을 구성한다.
<연습용 데이터셋>
요기서 구함
<CSV 데이터를 이용한 튜토리얼>
csv파일 불러오기
객체 타입은 dataframe이다.
특별한 처리를 하지 않으면 첫번째 로우를 기준으로 파악한다
Shape메소드를 통해 총 크기를 알 수 있다.
2차원 Dataframe이며, 891개의 로우와 12개의 컬럼을 갖는다
head메소드는 변수를 지정하면 변수만큼의 로우를 리턴한다
info()는 총 데이터 건수와 타입, Null의 건수를 리턴한다
descibe()는 숫자형 데이터값의 분포와 평균,최대, 최소값을 리턴한다
특정 컬럼에 대한 선택은 array와 같이 [ ]를 통한 인덱스를 사용한다
이때 value_counts()는 데이터 분포도를 리턴하며, 자동으로 내림차순 정렬한다
우리가 테스트로 활용하는 전체 데이터셋이 dataframe 형태의 자료라면,
저렇게 특정 컬럼을 선택함과 동시에 Series 자료형이 된다
이때 Series는 각 element마다 Index를 가지고 있고, 배열처럼 0부터 카운팅하면 된다.
당연하게도 같은 로우에 있는 Series의 element는 모두 동일한 Index를 가지게 될 것이고,
그것이 곧 dataframe의 Index가 된다
헷갈리지 말아야 할 부분은 value_counts에 의해 리턴된 분포도이다
위의 예시에서 리턴된 분포도는 두개의 컬럼으로 구성되어 있는데,
value를 뜻하는 왼쪽컬럼은 고유한 값이므로 Index로 취급된다.
즉, value_counts로 리턴한 데이터는 Index와 Column을 갖춘 Series로 리턴되는 것이다.
<Dataframe의 변환>
1) ndArray, List, Dictionary->Dataframe
넘파이의 ndArray나 파이썬 List에서 Dataframe으로 변환하는 경우
판다스의 DataFrame 메소드를 이용한다
이때 주의할 부분은, DataFrame은 다른 자료형과 다르게 컬럼명이 존재한다는 것이다.
설정하지 않더라도 디폴트로 들어가긴 하지만, 지정해준다면 컬럼명이 함께 리턴된다
차원이 늘어나는 경우 늘어난 만큼의 컬럼이 필요하다
딕셔너리의 경우 key가 칼럼명으로 자동 배정 된다
2) DataFrame-> ndArray, List, Dictionary
values메소드를 이용해 value들만 걷어내오면 된다. 차원은 알아서 배정된다.
list로 변환하는 경우는 tolist()메소드를, 딕셔너리로 변환하는 경우는 to_dict('반환형')으로 변환한다
<Dataframe의 칼럼 데이터 생성,수정,삭제>
새로운 컬럼을 생성할때는 인덱스로 접근한다.
여기에는 상수값 뿐만 아니라 연산식을 배정할 수도 있다.
예시의 경우에는 Age컬럼의 데이터를 조작하여 새로운 컬럼을 만들었다.(단 칼럼명의 대소문자는 구분된다)
기존의 값 업데이트 역시, 기존 컬럼에 인덱스로 접근하여 연산해주면 된다.
삭제의 경우 drop() 을 사용하는데, 변수 설정을 잘 해야줘야 한다
drop의 변수는 컬럼명-axis=1, 인덱스-axis=0, inplace=(기본적으로 false)
1) 칼럼삭제를 원하는 경우: axis=1, 컬럼이름-> 컬럼의 이름이 배열로 설정되면 다수의 컬럼 삭제
2) 로우삭제를 원하는 경우: axis=0, 로우 인덱스-> 인덱스가 배열로 설정되면 다수의 로우 삭제
3) 원본 데이터를 수정하고 싶다면 inplace를 true로 설정한다
<Index 객체>
Index객체는 index메소드로 가져오는데, 이는 ndarray처럼 모든 슬라이싱을 적용할 수 있다. 그러나 값에 대한 update는 불가능하다. 오직 식별용으로만 사용된다.
Series객체는 index 및 칼럼명으로 접근하여 가져온다
Dataframe이나 Series에 특정 작업을 진행한 후 다시 순서대로 Index를 매기고 싶다면 rese_index(inplace옵션) 메소드를 이용한다. value_counts 같은 메소드로 조작한 후 연속적인 Index를 다시 붙이고싶을 때 사용한다.
이때 반환되는 데이터 형태는 무조건 DataFrame이다. 원래의 Index는 Index라는 컬럼으로 다시 리턴된다.(그래서 무조건 DataFrame!)
'프로그래밍-AI & 빅데이터 > 머신러닝' 카테고리의 다른 글
[파이썬 머신러닝] 3. 싸이킷런(3) - 데이터 전처리 (0) | 2021.03.08 |
---|---|
[파이썬 머신러닝] 3. 싸이킷런 (2) - Model Selection (1) | 2021.03.04 |
[파이썬 머신러닝] 3. 사이킷런 (1) (0) | 2021.02.03 |
[파이썬 머신러닝] 2. 판다스(2)- 데이터 셀렉션 및 필터링 (0) | 2021.01.25 |
[파이썬 머신러닝] 1. 머신러닝 이해 - 넘파이 (0) | 2021.01.12 |