2021. 04. 11 일요일 Cleaning Data in Python Similarity score fuzzywuzzy는 파이썬의 패키지 중 하나로, 문자열을 다양하게 활용할 수 있도록 해준다. fuzzywuzzy의 process.extract() 를 사용하면 문자열의 유사도를 측정할 수 있다. 이를 통해 오타로 의심되는 문자열을 추려낼 수 있다. 이렇게 측정한 유사도는 각 문자열마다 100 이하의 정수로 나타내어진다. [('apple', 100), ('applee', 91), ('applle', 83).....] Remapping 위에서 측정한 유사도를 바탕으로, 일정 유사도 이상 or 이하의 문자열을 특정 문자열로 대체하는 전처리 과정을 거칠 수 있다. 측정 결과 유사도 70점까지가 오타이고 그 미만은 전혀 다른 단어라고 가정했을 때, for문을 활용하여 오타를 대체하는 코드를 작성하여보자.
2021. 04. 05 월요일 Cleaning Data in Python Text and categorical data problems Cleaning text data 텍스트 데이터를 전처리할 때는 특정 문자열을 바꾸는 .replace() 를 사용할 수 있다. assert 는 전처리를 마친 후 마지막으로 검토하는 단계에서 자주 쓰이게 된다. 또한 .len() 을 통해 문자열의 길이를 확인하고 비정상으로 보이는 값을 np.nan 등을 통해 잘못된 값임을 나타내는 방법도 사용할 수 있다. 숫자로만 이루어져 있어야 할 데이터에 다른 기호 등이 포함되어 있을 경우, 아래의 방법으로 숫자를 제외한 다른 문자를 모두 제거할 수 있다. 여기서 .head() 는 첫 ~줄만 출력하는 메소드로 기본값은 5줄이다. 빠르게 데이터를 확인하는데 용이하다. Advanced data problems 이 챕터에서는 무게, 통화 등 단위
2021. 03. 22 월요일 Cleaning Data in Python Common data problems 판다스의 데이터 프레임을 통해 데이터의 전처리에 대해 알아보았다. 데이터 파악, 타입 변환, 문자열 처리 .info() 를 통해 데이터 프레임 등 객체의 정보를 불러올 수 있다. 데이터프레임.info() .describe() 를 통해 열의 요약 통계(집계, 평균, 중앙값, 표준편차, 최소값, 최대값, 백분율(25%, 50%, 75%), 최대값) 를 불러올 수 있다. 데이터프레임['열 이름'].describe() .astype() 를 통해 열의 데이터 유형을 변환할 수 있다. 데이터프레임['열 이름'] = 데이터프레임['열 이름'].astype('데이터타입') assert 는 뒤의 조건이 True가 아닐 경우 에러를 반환한다. 이를 통해 확인하고자 하는 내용을 체크할 수 있다.
2021. 03. 13 토요일 Intermediate Python Case Study: Hacker Statistics Random float 넘파이의 random 패키지를 사용해 무작위의 값을 불러올 수 있다. seed() 로 시드를 지정하면 무작위지만 시드를 통해 같은 값을 다시 불러올 수 있다. rand() 를 통해 무작위 값을 불러온다. (인수를 지정하지 않으면 0과 1 사이의 부동 소수점을 랜덤으로 출력한다.) 위에서 np.random.seed(13579) 를 통해 시드를 지정해주었기 때문에 몇번을 반복하여도 같은 결과가 나오게 된다. 시드를 지정하지 않는다면 매번 다른 결과가 출력된다. Random Integer randint() 는 지정한 범위 내의 정수를 랜덤으로 출력한다. Random for loop for 루프에서 random 을 응용할 수 있다. range()
2021. 03. 09 화요일 Intermediate Python Loops Loop over dictionary 사전에서 for 루프를 통해 키와 값을 불러오기 위해서는 items() 메소드를 사용해야한다. Loop over numpy array 어레이에서 for 루프를 통해 모든 값을 각각 나열하기 위해서는 nditer() 함수를 사용해야 한다. ` Loop over DataFrame 데이터 프레임에서 for 일반적인 루프를 사용하면 Column명만 나열된다. 따라서 데이터 프레임에 포함된 데이터를 모두 불러오기 위해서는 iterrows() 메소드를 사용해야한다. 특정 Column만 불러오기 column 추가하기 (loop 사용) column 추가하기 (loop 미사용)
2021. 03. 06 토요일 Intermediate Python Loops while while 은 언뜻 보면 if 와 비슷해 보인다. 하지만 while 은 조건이 충족되는 한 반복해서 지정된 행동을 수행한다는 것에서 차이가 있다. Add conditionals while 문에도 if 와 else 를 추가하여 부가 조건을 부여할 수 있다. Loop over a list 반복문의 종류로는 while 뿐만 아니라 for 도 존재한다. 리스트에 포함된 데이터를 각각 나열하고 싶을 때 for 를 사용할 수 있다. 반복문을 사용하지 않는다면 print(food[0]); print(food[1]) ... 같이 일일히 적어야한다. 또한 enumerate() 를 활용하여 항목의 index도 함께 불러올 수 있다. 리스트 안의 리스트 또한 for 로 반복이 가능하다.
2021. 03. 05 금요일 Intermediate Python Logic, Control Flow and Filtering Equality 등호와 부등호를 이용하여 값의 크기가 같은지, 혹은 같지 않은지 확인할 수 있다. == : 같다. != : 같지 않다. Greater and less than 또한 다른 부등호들을 이용하여 값의 크기를 비교할 수 있다. a>b : b보다 a가 크다. a=b : b보다 a가 크거나 같다. `a
2021. 03. 02 화요일 Intermediate Python Dictionaries & Pandas Dictionary dictionary(사전)는 연관 배열로 Key와 Value가 쌍으로 이루어진 자료형이다. 음식 list와 가격 list가 존재한다고 했을 때, 피자의 가격을 불러오기 위해서는 다음과 같이 해야한다. 미리 만들어둔 사전을 사용한다면 다음과 같이 피자의 가격을 불러올 수 있다. 사전의 key는 중복될 수 있지만, 나중에 입력된 값이 기존의 값을 덮어쓰게 된다. 또한 사전의 key는 불변객체여야만 한다. Create dictionary {중괄호} 와 콜론: 을 통해 사전을 만들 수 있다. Access dictionary key를 통해 사전의 value를 불러올 수 있다. 사용할 수 있는 key는 다음 아래 메소드를 통해 확인할 수 있다. key를 통해 사전의 value를 불러오는
2021. 03. 01 월요일 Intermediate Python Matplotlib Matplotlib는 파이썬 라이브러리의 한 종류로, 라이브러리에 내장된 모듈과 함수를 통해 데이터를 그래프로 나타낼 수 있다. pyplot Matplotlib의 가장 기본이 되는 모듈은 pyplot이다. import matplotlib.pyplot 으로 pyplot을 불러올 수 있다. plt.show() 를 통해 작성한 차트를 확인할 수 있다. plt.clf() 를 통해 기존의 차트와 별개의 새로운 차트를 작성할 수 있다. Line Plot Matplotlib의 pyplot 모듈로 라인차트를 작성할 수 있다. plt.plot(x축, y축) 으로 데이터를 각 축에 할당한다. plt.show() 로 작성된 차트를 확인할 수 있다. Scatter Plot 또한 pyplot 모듈로 산점도를 작성할 수 있다. `p
2021. 02. 08 월요일 Numpy array 필터링 array에 속한 데이터 중 특정 범위 내의 값만 필터링하는 방법은 두가지가 있다. 부울값으로 나타내기 범위 내의 데이터만 추출하기 부울값으로 나타내기 범위 내 데이터 추출 2D NumPy Array Numpy를 통해 x축과 y축으로 구성된 2차원의 배열을 만들 수 있다. 2차원 배열 만들기 1차원으로 이루어진 어레이를 이어 붙여서 2차원으로 만든다고 생각하면 쉽다. 위와 같이 단순히 어레이를 나열하여 하나의 큰 어레이로 만들면 된다. [1, 2, 3, 4, 5] 가 첫번째 열, 그 중에서 3은 세번째 행이 된다. 12는 3열 2행이다. 다만 파이썬 명령어에서는 첫번째 행이나 열이 0으로 지정되는 부분을 유의해야한다. 따라서 3열 2행에 있는 12를 찾기 위해서는
2021. 02. 06 토요일 Numpy Numpy는 array를 생성하고 이 array를 통해 색인, 처리, 연산을 하는데 사용한다. import numpy [as ~] array numpy.array(리스트) list를 array로 변환하여 사용한다. 사용 예시 array와 list의 차이 list는 연산 시에 목록 내 요소들을 개별로 구분하는 것이 아닌, 하나의 큰 요소로 인식하여 연산처리 한다. array는 연산 시에 목록 내 요소들을 개별로 구분하여 각각 연산처리 한다. list 연산 예시 array 연산 예시
2021. 02. 06 토요일 Functions and Packages Method Method(메소드)란 object(객체)와 연관되어 사용하는 함수 정도로 정의할 수 있다. 기본 구조 : object.메소드명() upper() object.upper() 객체의 문자열을 대문자로 변경한다. 사용 예시 count() object.count() 객체의 특정 문자열 개수를 출력한다. 객체가 list일 경우 요소가 목록에 나타나는 횟수를 출력한다. 사용 예시 index() object.index() 리스트에서 찾고자하는 요소의 첫번째 색인을 출력한다. 사용 예시 append() object.append() 리스트에 요소를 추가한다. 사용 예시 reverse() `objec
2021. 02. 05 금요일 Functions and Packages Functions len() () 안에 있는 항목의 길이를 출력한다. 항목이 목록일 경우, 목록에 포함된 데이터의 수를 출력한다. test = [1, 3, 5, 7, 9]; print(len(test)) ➜ 5 max() 목록에서 가장 큰 값의 데이터를 출력한다. test = [1, 3, 5, 7, 9]; print(max(test)) ➜ 9 round() () 안의 소수를 반올림한다. round(1.78, 1) ➜ 1.8 () 안의 첫번째 항목은 반올림할 수를, 두번째 항목은 반올림 후 소수점 몇번째 까지 출력할 것인지를 의미한다. 따라서 위의 명령어는 1.78을 소수점 첫번째까지만 출력하도록 반올림하는 것이다. type() () 안에 있는 항목의 데이터 형식을 출력한다. `t
2021. 02. 03 수요일 Introduction to Python - Python Lists LIST 파이썬에서는 [대괄호] 를 활용하여 목록을 생성할 수 있다. 이 목록에는 데이터 유형에 상관없이 모두 들어갈 수 있으며, 목록 안에 목록을 생성하는 것, 그리고 변수 또한 포함할 수 있다. > ['짬뽕', '탕수육', ['군만두', '물만두'], 12345] Subset > list = ['a', 'b', 'c', 'd', 'e'] 위와 같은 목록에서, 특정 데이터만 추출을 원한다면 아래의 방법들을 사용하면 된다. [] 안에 있는 숫자는 목록에서 데이터의 순서를 의미한다. 순서는 0부터 시작하며 위의 목록에서 0은 'a'를 의미하고 3은 'd'를 의미하게 된다. 또한 음수를 활용하여 목록의 내림차순으로 선택이 가능한데, 이 경우 -1은 'e'를 의미한다. : 를 활용하여 범위를 지정할 수 있
2021. 01. 21 목요일 Python 학습을 진행하였다. 데이터 유형별 작업 print(21.5) 의 경우는 3.0 이라는 결과를 출력한다. (int float) print(31) 의 경우는 3 이라는 결과를 출력한다. (int int) print('Hello' + 'world') 의 경우는 Helloworld 이라는 결과를 출력한다. (str + str) print('Hello ' + 'world') 혹은 print('Hello' + ' ' + 'world') 의 경우는 Hello world` 라는 결과를 출력한다. (공백에 주목) 문자열끼리 +를 제외한 나머지 연산기호를 사용할 경우에는 작동하지 않는다. 문자열을 따옴표로 감싸는 것은 선택이 아닌 필수이다. print(Hello + world) 의 경우는 작동하지 않는다. 단, `Hel
2021. 01. 20 수요일 데이터캠프에서 Python 학습을 진행하였다. sql을 배우고 나니(물론 sql을 완벽히 다 알지는 못하지만) 다른 프로그래밍 언어에 대한 관심이 생겼다. 따라서 우선 가장 접근이 쉽고 데이터캠프에 관련 과정이 존재하는 파이썬을 먼저 학습하고, 그 다음에는 C언어도 학습을 해볼 예정이다. Python 학습 내용 print() 괄호 안의 내용을 출력한다. 출력하는 내용은 단순 문자열일 수도 있지만, 괄호 안의 연산을 계산하여 출력하기도 한다. (ex : print(4+5) -> 9) 지원하는 연산 기능은 기본 사칙연산 외에 고급연산도 있다. ` : 거듭제곱, ` 기준 좌측 숫자를 우측의 숫자만큼 거듭제곱한다. (ex : 2**3 ➔ 2 × 2 × 2 ➔ 8) % : 나머지 반환, % 기준 좌측 숫자를 우측 숫자로 나눈 뒤의 나머지를 반환한다.
2020. 12. 20 일요일 연습으로 제작한 대쉬보드를 바탕으로 페어분과 피드백을 진행하였다. 사실 이번주에 롤플레잉이 예정되어 있는지 몰랐었다. 이번주는 영상을 보고 그대로 따라 만드는 과정이어서 어떤 피드백을 하는 것일지 고민을 했었다. 제작한 대쉬보드의 지표가 똑같을 수 밖에 없기에 대쉬보드를 제작하는데 있어서 어려웠던 부분, 그리고 그 외에 DA 과정을 진행하면서 어려웠던 부분 등에 대해 이야기를 나누는 시간을 가졌다. Datacamp 복습을 진행하였다. Summarizing and aggregating numeric data 파트의 stddev(), corr() 등 잘 와닿지 않는 Syntax 위주로 복습하였다.
2020. 12. 18 금요일 Datacamp 복습을 진행하였다. 데이터를 Join, 결합하는 Syntax 중에 Join처럼 테이블의 Column을 확장하는 것이 아니라 Row를 확장하는 Syntax가 있었던 것 같은데 기억이 나지 않았다. 따라서 Datacamp의 예전 과정으로 돌아가서 찾아보았다. UNION : Query를 통해 불러온 데이터들을 결합한다(중복 데이터는 제거). 이 때 Join처럼 Column을 확장하는 것이 아닌 Row를 확장한다. 데이터를 세로로 이어붙인다고 볼 수 있다. 이어서 소개될 Syntax들 또한 UNION을 기초로 한다. UNION ALL : 중복 데이터를 포함한다. INTERSECT : 두 데이터의 교집합에 해당하는 데이터를 불러온다. EXCEPT : 첫번째 데이터 중에서 두번째 데이터에 해당하지 않는 데이터를 불러온다. (데이터1 - 데이터2 = EXCEPT)
2020. 12. 16 수요일 DataCamp 학습을 진행하였다. Summarizing and aggregating numeric data라는 파트이다. 표준편차를 구하는 stddev(~), 단위로 끊어주는 trunc(valuetotruncate, placestotruncate), 데이터 값을 범위에 따라 분류하는 generate_series(from, to, step), 상관관계를 계산하는 corr(~, ~), 중앙값 등 특정 백분위를 구하는 `percentile_disc(0.5) WITHIN GROUP (ORDER BY ~)`, 임시 테이블을 생성하는 CREATE TEMP TABLE table_name AS ~, 만약 해당 테이블이 이미 존재할 때 해당 테이블을 지울 때 사용하는 DROP TABLE IF EXISTS table_name, 데이터를 원하는 소수점 자리에서 반올림하여 나타내는`round(column_nam
2020. 12. 14 월요일 Datacamp 학습을 진행하였다. 탐색적 데이터 분석에 대한 파트를 학습하였다. 데이터 테이블을 뜯어보고 활용하는 법을 학습하는 파트인 것 같다. JOIN의 활용과 NULL 값인 데이터를 확인하는 법, COALESCE 를 이용하여 NULL 값을 대체하고 표기하는 법, CAST 를 이용하여 데이터 타입별 차이를 알아보았다. COALESCE 에 대해 간단히 설명하자면, 위의 Query는 COALESCE 를 이용해 TABLE에 존재하는 1이라는 Column을 불러오지만, 1의 데이터가 NULL일 경우 2라는 Column을 불러오는 것이다. 둘 다 NULL일 경우에는 마지막에 지정한 값, 위 Query의 경우에는 missing으로 출력된다. (이 부분은 선택사항으로, 지정하지 않는다면 null로 출력된다.) |1|2| |:---:|:---:| |A|가 |B|나 ||다| | | | |