[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 7 회차 미션 Programming/Python2020. 11. 8. 14:25
[파이썬을 활용한 데이터 전처리 Level UP- 7 회차 미션 시작]
* 복습
- groupby 함수를 사용하여 pandas 의 데이터 group 한다.
. 순서가 중요하다. 함수를 사용하는 순서.. 어떤 것을 기준으로 해야 하는지 명확하게 정의해야 한다.
- 데이터 정렬하는 방법.. sort_values 등 방법과 index를 활용한 정렬과 인덱싱에 대해서 다시 한번 강조했다.
[01. Part 1) 데이터 핸들링 Chapter 05. 보고 싶은 데이터 찾아보기 - 데이터 정렬과 인덱싱 - 03. 마스킹 검색]
* 비교 연산
- Series와 DataFrame의 data가 모두 ndarray 이므로, 비교 연산 및 브로드 캐스팅이 적용될 수 있다.
// 둘다 ndarray 를 기반으로 하기 때문에 적용될 수 있는 것이다.
// isin 은 속하느냐 안 속하느냐 따라서 나타내는 것이다.
// 변형될 위험이 없기 때문에 loc 나 iloc 는 쓸 필요가 없다. 하지만 값을 변경할 때는 반드시 인덱서를 써야 한다.
* 부울 리스트 연산
- ndarray 타입의 부울 리스트에 대해, AND 연산(&)과 OR 연산( | ) 이 가능함
// | 는 enter 위에 있는 키보드 자판
// .values series를 ndarray 로 변환 한 다음에 사용해야 한다.
* 마스킹 검색
- df.loc[부울 리스트] : True 인 요소의 위치에 대응되는 행만 가져옴
// loc 는 어느 상황에서나 사용할 수 있기 때문에 loc를 사용한다.
* 실습
// 인덱서로 사용해서 bool 인덱서로 사용해서 찾을 수가 있다.
// & | 로 연산할 때는 반드시 소괄호로 묶어줘야 한다. 안그러면 논리 연산을 어디서 행해야 할지 몰라서 에러가 날때가 많다.
[01. Part 1) 데이터 핸들링 Chapter 05. 보고 싶은 데이터 찾아보기 - 데이터 정렬과 인덱싱 - 04. 문자열 검색]
* Series.str
- 문자열로 구성된 Series에 대해서는 str accesoor를 사용할 수 있으며, 이를 사용하면 string 관련 내장 함수를 자유 자재로 사용할 수 있다.
// split 등 각종 string 과련 method 를 사용할 수 있다는 것이다.
- 예시
. Series.str.strip( ) : 앞 뒤 공백 제거
. Series.str.contains(s) : 문자열 s 를 포함하고 있는지 여부를 반환
. Series.str.split(sep, expand) : sep 을 기준으로 Series를 분할
.. expand = True : 새로운 열 생성
.. expand = False: 새로운 열을 생성하지 않고 리스트를 반환
// pandas.Series.str 의 documentation
pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.html
Series.str()
Vectorized string functions for Series and Index.
NAs stay NA unless handled otherwise by a particular method. Patterned after Python’s string methods, with some inspiration from R’s stringr package.
예시)
s = pd.Series(["A_Str_Series"])
s
0 A_Str_Series
dtype: object
s.str.split("_")
0 [A, Str, Series]
dtype: object
s.str.replace("_", "")
0 AStrSeries
dtype: object
* Series.astype
- Series의 자료형을 변환하는데 사용하는 함수
- (예시) Seires.astype(str) : 숫자 자료형에 str accesor를 사용하기 위해 적용함
// 숫자는 int 나 float 으로 인식되는데.. string으로 인식시켜주기 위해서 대비하기 위해서 쓰는 것이다.
* 실습
// 시리얼 번호 = 공정, 제품, 식별자
// value_counts( ) 를 통해서 양품과 불량을 개략적으로 알아 본다.
// 'S' 공정인것을 찾을수가 있다. str.
// expand = True 는 새로운 컬럼이 만들어지게 되고, 각 column 으로 들어가게 된다. 그 구분은 split - 으로 대체되게 된다.
// concat 을 통해서.. 각각의 결과를 합치다. 열단위로 붙일때는 axis = 1 로 설정한 다음에 붙이는 것이다.
// 모든 컬럼을 바꿀때는 .columns = 로 통해서 바꾸면 되지만, 특정 컬럼만 이름을 바꿀때는 .rename 으로 바꾸는 것이 좋다.
// pandas.Series.astype 의 documentation
pandas.pydata.org/docs/reference/api/pandas.Series.astype.html
Series.astype(dtype, copy=True, errors='raise')
Parameters
dtypedata type, or dict of column name -> data type
Use a numpy.dtype or Python type to cast entire pandas object to the same type. Alternatively, use {col: dtype, …}, where col is a column label and dtype is a numpy.dtype or Python type to cast one or more of the DataFrame’s columns to column-specific types.
copybool, default True
Return a copy when copy=True (be very careful setting copy=False as changes to values then may propagate to other pandas objects).
errors{‘raise’, ‘ignore’}, default ‘raise’
Control raising of exceptions on invalid data for provided dtype.
-
raise : allow exceptions to be raised
-
ignore : suppress exceptions. On error return original object.
[01. Part 1) 데이터 핸들링 Chapter 06. 데이터 이쁘게 보기 - 데이터 시각화 - 01. matplotlib 기초]
// python 에서 대중적으로 쓰는 시각화 모듈이다.
* matplotlib 이란
- 파이썬에서 차트나 플롯으로 데이터를 시각화하기 위한 모듈로 사용이 간편하고 다양한 그래프를 제공해서 많이 사용된다.
// seaborn, boat ??? 그런 프로그램이 있다.
- matplotlib을 이용해서 그릴 수 있는 대표적인 그래프는 다음과 같다.
. 꺽은선 그래프 -> line plot
. 산점도 -> scatter plot
. 막대 그래프 -> bar chart
. 히스토그램 -> histogram
. 박스 플롯 -> box plot
- pandas 의 객체에서도 메서드로 matplotlib의 함수를 사용할 수 있다.
// pandas 에서도 사용할 수 있다. 그 의미는 굳이 matplotlib 을 import 하지 않고, pandas에서 불러와서 쓸수 있다는 것이다.
* 기초 환경 설정
- pyplot.rcParams 를 이용한 폰트 설정 및 그래프 크기 설정
// 기본적인 환경을 셋팅하는 함수라고 보면된다.
. rcParams['font.family'] : 폰트 설정 (특히, 한글을 쓰는 경우에 반드시 설정 필요)
// matplotlib 에서는 한글을 지원하지 않기 때문에 네모박스처럼 알아 볼 수 없는 것으로 나온다.
. rcParams['font.size'] : 글씨 크기 설정
. rcParams['figure.figsize'] : (x, y) 꼴의 튜플로 그래프의 크기를 설정
// 10, 5 정도로 하면 적당한 그림의 크기기 나온다고 보면 된다.
* 쥬피터에서 그래프 그리기
- 쥬피터의 매직 키워드인 %matplotlib inline을 이용하면 셀에 그래프를 직접 출력할 수 있다.
- 쥬피터를 사용하지 않는 경우에는 plt.figure( ) 를 사용해서 그래프 객체를 일일이 생성하고 저장해야 하지만, 쥬피터에서는 한 셀에서 그래패를 그릴 떄마다 하나의 객체가 생성된다.
// 이 강의에서는 jupyter notebook을 기초로 하기 때문에 failed show 등에 대해서는 다루지 않는다.
. 한 셀에서 plt의 함수를 사용하여 그래프를 그리면 하나의 객체에 누적해서 그래프가 생성된다.
// 중첩을 하지 않기 위해서는 각 셀을 나눠서 plt 를 작업을 해야 한다.
. 그래프를 다 그린 후에는 plt.savefig(file, dpi) 를 사용하여 그래프를 저장할 수 있다.
// dpi 는 보통 300 으로 설정한다.
* 자주 사용되는 색상 설정
- 다양한 그래프에서 색상을 설정해야 하며, 자주 사용되는 색상 및 입력은 다음과 같다.
// 직관적으로 결과를 보기 때문에 색상에는 크게 신경쓰지는 않는다.
* 자주 사용되는 마커 및 선 스타일 설정
- 마커란 하나의 데이터 포인트 (샘플)을 나타내는 기호를 나타낸다.
- 선 스타일은 꺽은선 그래프의 선 스타일을 의미한다.
// 별, 더하기, 다이아몬드 등을 주로 쓴다.
* label 및 title 설정
- label 이란 축의 이름을 의미하며, plt.xlabel과 plt.ylael을 사용하여 정의할 수 있다.
. plt.xlabel(label, **kwargs) : label (str) 로 xlabel을 설정
. plt.ylabel(label, **kwargs) : label (str) 로 ylabel을 설정
. **kwargs : 텍스트의 특성을 설정하는 키워드 (예: fontproperties, fontsize, fontstyle 등)
// 앞서봤던 기초 환경에서 쓰는 rcParams와 달리 keyword로 의한 텍스트 특성은 라벨을 적용할 때 쓰이는 것이다.
- title 이란 그래프의 이름으로, plt.title 을 사용하여 정의 할 수 있다.
. plt.title(label, loc) : label (str) 로 title 을 설정 (loc : 위치 {'center', 'left', 'right'})
// loc 은 잘 설정하지 않는다. 주로 center
* tick 설정
- tick이란 그래프에서 나타내는 눈금을 의미하며, plt.xticks와 plt.yticks을 이용하여 설정할 수 있다.
. plt.xticks(ticks, lables) : ticks (위치)에 labels를 입력 (x축)
. plt.yticks(ticks, lables) : ticks (위치)에 labels를 입력 (y축)
- 사용 예시 : plt.xticks([1,2,3,4,5], ['a', 'b', 'c', 'd', 'e'])
* legend 설정
- legend (범례)를 표시하려면 plt.legend(loc)을 사용하여 범례를 표시할 수 있다.
. loc : 범례 위치 {'upper right' (1), 'upper left' (2), ....}
- 단, 범례를 표시하려면 그래프를 그릴 때 label 키워드를 사용하여 범례를 정의해야 한다.
* 축 범위 설정
- plt.xlim(left, right) : x축의 범위를 (left, right) 로 설정
- plt.ylim(bottom, top) : y 축의 범위를 (bottom, top) 로 설정
[파이썬을 활용한 데이터 전처리 Level UP-Comment]
마스킹 검색과, 문자열 검색 기본적인 문법에 대해서 배워 볼 수 있었다. matplotlib 에 대해서는 기초적인 이론을 배웠고 추후 강의시간에 실습을 통해서 적용해 볼 수 있을 것이다.
'Programming > Python' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 9 회차 미션 (0) | 2020.11.10 |
---|---|
[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 8 회차 미션 (0) | 2020.11.09 |
[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 6 회차 미션 (0) | 2020.11.07 |
[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 5 회차 미션 (0) | 2020.11.06 |
[패스트캠퍼스 수강 후기] 데이터전처리 100% 환급 챌린지 4 회차 미션 (0) | 2020.11.05 |