728x90

파이썬 23

파이썬 - Pandas 기초 정리(DataFrame - 2)

이전 게시물에 이어서 학습을 진행한다. 데이터를 분석하여 예측을 하기 위해서는 예측하는 데이터와 어떤 컬럼이 관계가 깊은지 알아야 한다. 이런 경우에 알아보는 것 중 하나가 "상관계수" 이다. 상관계수는 -1 ~ 1 사이의 숫자이다. 예를 들어 A 컬럼과 B 컬럼의 상관계수를 알아봤을 때 1에 가깝다면 A가 증가할 때 B 가 증가하는 형태를 이룬다고 볼 수 있고, -1 에 가깝다면 A가 증가할 때 B는 감소하는 추세를 보인다고 볼 수 있다. 만약 0에 가깝다면 A 와 B는 별로 관계가 없다는 것을 깨달을 수 있다. 1. 상관계수 알아보기 import pandas as pd import matplotlib.pyplot as plt import seaborn as sns %matplotlib inline 상..

파이썬 - Pandas 기초 정리(DataFrame - 1)

Pandas 모듈에서 가장 많이 사용되는 것이 DataFrame 이라 해도 과언이 아니다. 저번 게시물에서는 Series(1차원)을 다루었지만 이번에는 DataFrame(2차원)을 다룬다. DataFrame 2차원(row, column) 으로 구성되어 있음 일반적인 데이터(csv 등)가 이런 형식으로 되어 있음 1. DataFrame 만들기 일반적으로 DataFrame 은 key 와 value 로 이루어져 있다. data = {10:['a', 'e', 'f'], 20:['b', 'o', 'q'], 30:['c', 'z', 's']} data_frame = pd.DataFrame(data, index=np.arange(1,4)) data_frame --------------------------------..

파이썬 - Pandas 기초 정리(Series)

파이썬을 사용했을 때 데이터 분석에 빠질 수 없는 부분이 Pandas 모듈이다. 외부 파일을 읽어 분석하는데 주요한 기능들이 많이 저장되어 있다. import pandas as pd 모듈을 불러올 때 "pd" 를 가장 많이 사용하기 때문에 위와 같이 선언한다. 1. Series 기초 1차원 배열을 나타내며, numpy의 ndarray 를 기반으로 함. 0개 이상의 데이터를 가질 수 있다. index 는 0 부터 시작. # 데이터 입력하기 pd.Series([1,2,3,4,5]) --------------------------------- 0 1 1 2 2 3 3 4 4 5 dtype: int64 데이터 [1,2,3,4,5] 라는 1차원 배열을 선언하였더니, 각각의 index 가 같이 출력되는 모습을 볼 ..

파이썬 - Numpy 기초 정리(2)

이전 게시물에서 언급하였듯이 numpy 모듈은 연산하는데에도 장점이 많다. 연산에 대표적으로 더하기(add), 빼기(subtract), 곱하기(multiply), 나누기(divide) 가 있는데, numpy 연산은 ndarray 끼리 가능하기 때문에 일반 list 라면 np.array 를 선언해주어야 한다. 또한, 각각 차원이 같고 모양(shape)이 같은 배열끼리만 연산이 가능하다. # 연산에 필요한 배열 선언 a = np.random.randint(100, size=(3,3)) b = np.random.randint(100, size=(3,3)) print(a) print(b) ----------------------------------------- [[62 77 37] [27 52 30] [ 8 ..

[프로그래머스] level1 - 같은 숫자는 싫어 : 파이썬(Python) 풀이

문제 프로그래머스 level1 같은 숫자는 싫어 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 코드 def solution(arr): n = 0; answer = [] while(n < len(arr)-1): if(arr[n] == arr[n+1]): if(n == len(arr)-2): answer.append(arr[n]) n += 1 else: n += 1 else: answer.append(arr[n]) n += 1 if(n == len(arr)-1): answer.appe..

코딩코딩 2020.12.17

파이썬 - Numpy 기초 정리(1)

데이터 사이언스 분야에서 쉽게 접하는 것이 바로 Numpy 이다. 대체로 다차원 배열(ndarray)을 다룰 때 사용하는 모듈이기도 하다. Numpy 를 깊게 배울 필요는 없지만 이런 기능이 있다고 알아둔다면 나중에 필요한 기능이 생각날 때 떠오를 수 있을 것이다. Numpy 는 list 보다 빠르고 적은 메모리를 사용하여 좀 더 유리하다. 그리고 수학적인 계산(선형대수학, 통계 등)을 위한 함수가 많이 있어 상황에 맞게 유용하게 사용할 수 있다. 1. 다차원 배열 계산 그림과 같은 행렬이 있다고 가정하자. 각 배열의 원소마다 +1 씩 더하고 싶다면 어떤 코드를 작성해야 할까? num = [[1,2,3], [4,5,6], [7,8,9]] for i in range(len(num)): for j in ra..

파이썬 - 정규표현식 알아보기 (기초)

데이터 중에 문자를 분석하는 경우가 있을 것이다. 복잡한 문자열을 처리할 때 빠질 수 없는 것이 "정규 표현식" 이다. 정규 표현식에 대해 알아보자. 정규표현식을 제대로 들어가기 전에 어떤 기능을 사용하는지 예시를 살펴보자. # 주민등록번호 뒷자리를 * 로 변경하기 minsu = '950213-1390192' 한 명의 주민등록번호가 있다고 가정할 때 뒷자리(7개)를 '*' 로 변경하고 싶다고 하자. 정규표현식을 사용하지 않는다면 꽤 긴 코드가 나올 것이다. 하지만 정규표현식을 사용한다면? import re setting = re.compile("(\d{6})[-]\d{7}") print(setting.sub("\g-*******", minsu)) --------------------------------..

데이터 분석 2020.12.02

머신러닝 - MNIST 알아보기 (분류) - Python

머신러닝을 공부하는 사람이라면 한 번쯤 경험해봤거나 들어봤을 데이터셋이다. MNIST! 이 데이터 셋은 미국 고등학생들과 인구조사국 직원분들이 손으로 직접 쓴 숫자 데이터셋이다. 시작해보자. from sklearn.datasets import fetch_openml mnist = fetch_openml('mnist_784', version=1) mnist.keys() --------------------------------------------- dict_keys(['data', 'target', 'frame', 'categories', 'feature_names', 'target_names', 'DESCR', 'details', 'url']) 사이킷런을 통해서 mnist 데이터셋을 받아오는 과정이다...

[프로그래머스] level2 - 기능개발 : 파이썬(Python) 풀이

문제 프로그래머스 level2 기능개발 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 코드 import numpy as np def solution(progresses, speeds): answer = []; count = 0 progresses = np.array(progresses) speeds = np.array(speeds) while(len(progresses) > 0): progresses += speeds if(len(np.where(progresses >= 100)[0]) == 0): ..

코딩코딩 2020.11.15

[프로그래머스] level1 체육복 - 파이썬(Python) 풀이

문제 프로그래머스-체육복 코드 def solution(n, lost, reserve): answer = 0 lost_1 = lost lost = list(set(lost) - set(reserve)) reserve = list(set(reserve) - set(lost_1)) for i in range(len(reserve)): if(reserve[i]-1 in lost): del lost[lost.index(reserve[i]-1)] elif(reserve[i]+1 in lost): del lost[lost.index(reserve[i]+1)] answer = n-len(lost) return answer 코드풀이 n : 총 학생 수lost : 체육복을 잃어버린 사람의 배열reserve : 여벌의 체육..

코딩코딩 2020.09.25