본문 바로가기

파이썬17

[Python] Apriori algorithm:; 연관규칙분석 (2) 안녕하세요. 우주신 입니다. 저번 포스팅에 이어서 연관규칙 알고리즘의 Apriori 알고리즘에 대해 글을 쓰겠습니다. 저번 포스팅에서 연관규칙분석 개념 및 Apriori 알고리즘에 대해 알아봤으니,이번에는 파이썬 코드를 보며 한번 더 복습해보자.(지난 포스트의 지식을 다 안다는 전제하에 코드만 설명) 내가 테스트한 트랜잭션 데이터베이스(Transaction Database)는 아래와 같은 양식이다.각 줄이 itemset을 구분하며, 1번 itemset은 7번 item과 14번 item으로 구성되어 있다고 보면 된다. Apriori 알고리즘은 아래와 같은 순서로 진행된다.1. 트랜잭션 데이터베이스를 스캔하면서 1-빈번항목집합을 구한다.2. k-빈번항목집합을 대상으로 (k+1)-빈번항목집합을 구한다.- Se.. 2018. 7. 23.
[Python] Merge Sort: 병합 정렬 안녕하세요. 우주신 입니다. 오늘은 병합 정렬(Merge Sort)에 대해 포스팅하겠습니다. 병합 정렬은 정렬되지 않은 전체 데이터를 하나의 단위로 분할한 후에 분할한 데이터들을 다시 병합하며 정렬하는 방식 입니다. 즉, Divide: n개의 데이터를 n/2개 데이터로 나누고 2개의 리스트에 넣습니다.Conquer: 2개의 리스트들의 데이터가 하나가 될 때까지 재귀적으로 나눕니다.Combine: 각각의 2개의 리스트를 병합 합니다. 시간 복잡도는 최악의 경우 O(nlogn)로 이전 포스팅에서 소개했던 insertion sort보다 효율적인 알고리즘 입니다. 코드를 통해 자세히 보겠습니다. 우선, 데이터를 리스트로 입력 받겠습니다.입력 받은 데이터를 띄어쓰기 기준으로 구분하여 이를 정수형으로 리스트에 저장.. 2018. 3. 30.
[Python] Insertion Sort: 삽입정렬 안녕하세요. 우주신 입니다. 오늘은 삽입 정렬(Insertion Sort)에 대해 포스팅하겠습니다. 알고리즘을 배울 때, 가장 먼저 접하게 되는 친숙한 삽입 정렬입니다.삽입 정렬은 말 그대로 데이터의 삽입을 통해 정렬을 완성하는 알고리즘 입니다.현재 위치에서, 이미 정렬된 이전 배열들의 데이터를 차례대로 비교하여 자신의 위치를 찾아 그 위치에 삽입하는 방식 입니다. 시간 복잡도는 최악의 경우 O(n^2)이고, 최선의 경우(이미 정렬되어 있는 경우)에는 O(n) 이므로 Big-O (n^2) 입니다. 5 3 4 6 1 2 5 3 4 6 1 2 3 5 4 6 1 2 3 4 5 6 1 2 3 4 5 6 1 2 1 3 4 5 6 2 1 2 3 4 5 6 파이썬 코드를 통해 자세히 알아보겠습니다. 우선, 데이터를 .. 2018. 3. 29.
[Python] matplotlib 이용하여 누적영역형차트, 원형차트 그리기 안녕하세요. 우주신 입니다. 저번 시간에 이어 matplotlib 이용하여 누적영역형차트, 원형차트 그리는 방법에 대해 포스팅 하겠습니다. 우선, 그래프를 만들 임의의 데이터를 생성하겠습니다. (정말 아무 의미 없는 값을 입력해 데이터 생성했어요;) 1. 누적영역형차트 (Stacked Area Graph) 누적영역형차트는 두 개 이상의 데이터 계열을 서로 누적하는 영역형 차트 입니다. 특히, 제품별로 매출에 기여하는 정도를 시계열로 나열하여 한 눈에 쉽게 볼 수 있어 성과 분석을 위한 기본적인 그래프 중 하나 입니다. plt.stackplot(beernum, price, amount, country)-plt.stackplot() 함수 안에 4개의 리스트인 데이터를 입력했습니다. 첫번째 데이터인 beern.. 2018. 1. 2.
[Python] matplotlib 이용하여 히스토그램, 산점도 그리기 안녕하세요. 우주신 입니다. 이번 시간에는 히스토그램과 산점도 그리는 방법에 대해 배워보겠습니다. 먼저, pandas를 이용하여 웹에서 csv 파일을 불러왔습니다. 상점 번호, 연도, 기간, p1매출액.. 등을 기준으로 데이터프레임을 만들었습니다. 이 중 p1sales의 데이터를 히스토그램과 산점도로 시각화 해보겠습니다. 1. 히스토그램 (Histogram) plt.hist(df['p1sales'])-plt.hist() 함수 안에 df의 열 'p1sales' 데이터를 넣었습니다. Y축에는 빈도수가, X축에는 매출액을 기준으로 히스토그램이 출력됐습니다. X축 매출액의 범위를 조정해보겠습니다. plt.hist(df['p1sales'], list)-list 자리에 X축 범위를 지정할 수 있습니다. list에 .. 2017. 12. 29.
[Python] matplotlib 이용하여 그래프 그리기 안녕하세요. 우주신 입니다. 이번 포스팅에서는 matplotlib 모듈과 그래프를 그리는 가장 기초적인 방법에 대해 알아보겠습니다. 데이터의 단순한 나열보다는 한 눈에 파악할 수 있는 표나 그래프가 더 가치 있다고 생각하기에,데이터의 분석만큼 중요한 부분이 시각화 입니다. 앞으로 대중적으로 쓰이는 모듈 중 하나인 matplotlib을 활용하여 다양한 그래프를 그리는 방법에 대해 끄적거려보겠습니다. 한줄 한줄 차근히 설명해보겠습니다.import matplotlib.pyplot as plt-우선 matplotlib을 import 해야하는데 pyplot을 함께 묶어준 이유는 거의 모든 시각화하는데 있어 pyplot을 이용하기 때문입니다. 흔히 plt를 약자로 사용합니다. import pandas as pd는 .. 2017. 12. 29.
[Python] 이동평균 계산 (pandas.Series.rolling) 안녕하세요. 우주신 입니다. 오늘은 알아두면 매우 유용한 함수 pandas.Series.rolling에 대해 포스팅 하겠습니다.데이터분석을 하다보면 일정 범위에서 규칙적으로 연산(예: 이동평균)을 해야할 일이 많습니다.예를 들어, 날마다 일주일 간의 주가 평균을 알고 싶을 때, 매일 일일이 다 계산하는 것은 매우 비효율적 입니다. 이 때, 유용하게 쓸 수 있는 함수가 .rolling 이라고 보시면 됩니다.예전에 이 함수를 모를 때는 for문을 이용하여 rolling 함수의 기능을 구현 하다보니 코드도 길고 실행하는 데도 시간이 꽤 걸렸던 기억이 있네요;; 우선, 이번 시간에 사용할 금융 데이터를 웹에서 불러오겠습니다.(금융 데이터 불러오기: http://ordo.tistory.com/57) 현대차 종가 .. 2017. 12. 28.
[Python] Missing Data(NA, NaN) 처리 안녕하세요. 우주신 입니다. 데이터 분석에 있어 가장 중요한 과정은 결측값 및 특이값을 얼마나 잘 처리하는지의 유무에 달려 있다고 생각하는데요,오늘은 pandas를 이용하여 NA, NaN 데이터를 처리하는 몇가지 방법을 포스팅 하겠습니다. df.dropna(), df.fillna() 우선, 결측값이나 특이값을 처리하는 3가지 방법이 있습니다. 1. 무시한다2. 제거한다3. 다른 값으로 대체한다 먼저, pandas와 numpy를 이용해 NaN 값이 포함된 데이터프레임을 만들었습니다. 1. 첫번째 방법은 아주 쉬워요. 그냥 무시하시면 됩니다.물론, 추후에 데이터 분석을 하는 데 있어 걸리적거리겠죠.. 2. df.dropna() NaN이 들어간 행 전체를 제거하는 방법에 대해 보겠습니다. 첫번째 줄 df.dr.. 2017. 12. 6.
[Python] 금융(주가) 데이터 불러오기 안녕하세요 우주신 입니다. 오늘은 pandas를 이용하여 웹에서 주가 데이터를 가져오는 방법에 대해 포스팅 하겠습니다. datetime.datetime(), pandas_datareader.DataReader(), pd.date_range(), quandl.get() 우선, 필요한 패키지를 다 다운 받습니다.그 후, pandas_datareader의 DataReader를 이용해 웹에서 주가 데이터를 다운 받겠습니다. 1. pandas_datareader.DataReader(ticker, online_source, start, end) 삼성전자 티커를 넣고 yahoo 웹에서 2010년 1월 1일부터 2016년 12월 31일까지 데이터를 데이터프레임 df에 입력했습니다.여기서 online_source는 ya.. 2017. 12. 5.
[Python] 데이터프레임 병합 (.merge) 안녕하세요. 우주신 입니다. 이번에는 pandas의 merge()를 이용해 데이터프레임끼리 병합하는 방법에 대해 알아보겠습니다. 우선, import pandas as pd를 통해 pandas를 가져왔습니다.지난 포스팅의 데이터프레임 결합에서 이용했던 데이터프레임을 그대로 쓰겠습니다. df1과 df2는 인덱스만 다를 뿐 값이 다 같고, df3는 df1과 달리 3번째 열이 'Color_Num'입니다. 1. pd.merge(데이터프레임, 데이터프레임) 인덱스만 다르고 값이 같은 df1과 df2를 병합 시켜보겠습니다. 위의 출력 결과를 보면, 인덱스와 상관 없이 병합이 되고, 같은 값들은 중복 표기가 되지 않습니다. 2. pd.merge(데이터프레임, 데이터프레임, on = ' ') 이번에는 특정 열을 지정하여.. 2017. 11. 28.
[Python] 데이터프레임 결합 (.concat, .append) 안녕하세요. 우주신 입니다. 오늘은 파이썬에서 pandas 라이브러리의 concat 함수와 append 함수를 이용하여 데이터프레임끼리 합치는 방법을 포스팅하겠습니다. 우선, import pandas as pd 를 통해 pandas를 가져왔습니다.데이터프레임 결합에 이용할 3개의 데이터프레임을 만들었습니다. df1과 df2는 인덱스만 다를 뿐 값이 다 같습니다.df3는 df1과 달리 3번째 열이 'Color_Num' 입니다. 1. pd.concat() concat는 연결의 뜻을 가진 concatenation의 줄임말 입니다.pandas의 concat을 이용해 df1, df2를 결합 했습니다. pd.concat( [데이터프레임, 데이터프레임] ) 밑의 출력된 결과를 보면 같은 열의 이름에 맞춰 세로로 결합.. 2017. 11. 27.
[Python] 데이터프레임 관련 기본 함수(shape, dtypes, axes, T, index, ix[], columns) 안녕하세요. 우주신 입니다. 오늘을 데이터프레임과 관련하여 기본 함수들에 대해 포스팅 해보겠습니다. shape, dtypes, axes, T, index, ix[], columns 우선, pandas를 활용하여 df1 데이터프레임을 만들었습니다. 1. shape: 행과 열의 개수를 튜플로 반환 형식: dataframe명.shape 3행 3열을 튜플로 반환한 것을 확인할 수 있습니다. 2. dtypes: 열을 기준으로 데이터 형태 반환 형식: dataframe명.dtypes저는 모든 데이터를 문자로 만들었기에 object가 반환 됐습니다. 3. axes: 행과 열의 이름을 리스트로 반환 형식: dataframe명.axes행의 이름이 먼저 반환되고 열의 이름이 반환된 것을 확인할 수 있습니다. 4. T: 전.. 2017. 9. 10.