array 모듈을 이용한 array 사용법입니다. 거의 쓰이진 않지만 numpy의 nd.array를 좀 더 이해할 수 있을것 같아서 정리를 해봅니다. array 만들기 array를 만들어보겠습니다. array를 만들려면 리스트가 필요합니다. 리스트 하나를 만들고 만들어보겠습니다. import array v = [1.0,2.0,3.0,4.0,5.0] a= array.array('f',v) a v라는 리스트를 array로 바꾸었습니다. 'f'는 float을 의미합니다. array는 데이터타입을 결정해주어야 합니다. 데이터 타입은 다음과 같이 나타냅니다. Type code C Type Minimum size in bytes 'b' signed integer 1 'B' unsigned integer 1 'u' ..
conda의 기본 기능들을 정리합니다. conda를 업데이트 하거나 파이썬 인스톨,업데이트 패키지를 업데이트 제거 하는 그런 명령어들입니다. 다음 명령어들은 파워쉘이나 anaconda prompt 에서 작동하니 명심하시기 바랍니다. 진짜 간단한 몇가지만 소개하겠습니다. Python x.x 인스톨 conda install python=x.x Python 업데이트 최신버전으로 파이썬이 업데이트 됩니다. conda update python 패키지 인스톨 numpy나 pandas같은 패키지를 설치할때 사용하는 명령입니다. '패키지이름' 이라 표시된 곳에 설치하려는 패키지 이름을 넣으시면 됩니다. conda install '패키지이름' 패키지 제거 conda remove '패키지이름' 패키지 찾기 해당 패키지를 ..
파이썬의 데이터 타입 중 set을 살펴볼까 합니다. set은 수학 시간에 배운 집합을 모티브로 만든 데이터 타입이라서 수학의 집합과 성질이 비슷합니다. 순서가 없고 한 원소만 set에 들어갈 수 있습니다. 예를 들어, 중복 원소가 있는 리스트를 set으로 바꾸면 중복원소가 없어집니다. s = set(['a','ab','c','cd','d','ab','cd']) s 집합 모양도 수학시간에 본 집합모양으로 나오게 됩니다. 합집합, 교집합, 여집합, 대칭차도 가능합니다. 대칭차는 (A U B) - (A ∩ B) 를 의미합니다. 즉, 집합 A와 B에서 교집합만 빠지는 경우를 말합니다. s = set(['a','ab','c','cd','d','ab','cd']) t = set(['a','b','c']) s.uni..
파이썬으로 만든 데이터프레임을 엑셀 저장하고 불러오는 방법을 소개하겠습니다. 한 시트에 저장하는 방법이 있고 여러 시트에 저장하는 방법이 있습니다. 사실상 여러 시트에 저장하는 방식으로 모든 것을 할 수 있지만 코딩은 최대한 적게 쓰고 많은 일을 하는 것이 좋으므로 너무 간단해서 허무할 수도 있지만 한 시트에 저장하는 방법을 따로 떼서 알려드리겠습니다. 한 시트에 엑셀 저장하기 df = pd.DataFrame({'alpha' : ['a','b','c','d','e'],'beta':['A','B','C','D','E']}) 다음과 같은 데이터 프레임을 엑셀로 저장하는 건 간단합니다. to_excel() 메쏘드를 사용하면 됩니다. df.to_excel('경로'/'파일이름.xlsx') 엑셀로 저장이 되었습니다..
그래프 영역을 채우는 방법을 소개합니다. fill_between() fill_betweenx() fill 세가지 함수로 실행할 수 있는데요. 범위를 정해주면 그 범위에 맞게 그려주게 됩니다. x축을 기준으로 한다면 fill_between()을 y축을 기준으로 한다면 fill_betweenx()을 하고 fill은 임의의 영역을 채울 때 사용합니다. 사용예제를 보겠습니다. fill_between() fill_between()은 x축에서 제가 정한 범위까지 영역이 채워집니다. 리스트로 x,y가 이루어져 있으므로 인덱싱으로 범위를 표시하면 됩니다. import matplotlib.pyplot as plt x = [1,2,3,4,5] y = [2,4,6,8,10] plt.plot(x,y) plt.fill_betw..
데이터프레임에서 특정조건의 데이터를 필터링하는 2가지 방법을 소개하겠습니다. isin()을 이용하는 방법 비교 조건문을 이용하는 방법 다음과 같이 소문자, 대문자로 이루어진 데이터프레임을 만들었습니다. df = pd.DataFrame({'alpha' : ['a','b','c','d','e'],'beta':['A','B','C','D','E']}) df isin()을 이용하는 방법 isin()을 하면 해당 원소가 있는지를 판단해줍니다. 즉, 해당 값이 있으면 True, 없으면 False를 반환합니다. df['alpha'].isin(['a','b']) 이것을 이용하면 필터링이 가능합니다. df[df['alpha'].isin(['a','b'])] and(&),or(|) 도 가능합니다. df[df['alpha'..
데이터프레임을 돌 때를 순회한다고 하는데 데이터프레임을 어떤 방식으로 순회할 수 있는지 살펴보겠습니다. 다양한 방법으로 순회처리를 할 수 있습니다. 이번 포스팅에서는 4가지 방법을 설명하겠습니다. 인덱스를 사용하는 방법 itertuples iterrows iteritems 4가지 모두 간단합니다. 이런게 있는지 몰라서 못 쓰는 것 뿐이지 한번 보면 바로 쓸 수 있습니다. 이번에 준비한 데이터는 sp500의 종목,종목코드,섹터,업종 데이터입니다. 이전 포스팅에서 여러번 썼지만 뭘 보여줄 때 이만큼 유용한 데이터 파일은 없는 것 같습니다. df Symbol을 인덱스로 두었습니다. 인덱스를 사용하는 방법 가장 많이 사용하는 방법이 아닌가 싶습니다. 예로 바로 보는게 빠르겠죠? 인덱스를 활용해서 종목명을 가져오..
numpy array의 곱연산에 대해서 알아보도록 하겠습니다. 곱연산에는 총 세가지 연산이 있는데요. 선형대수에서 배우는 행렬의 곱을 하는 행렬곱(@)과 내적, 스칼라 곱을 하는 별연산(*) 이 있습니다. 세개 모두 다른 부분이 있습니다. 그 부분을 잘 알고 있어야 내가 무슨 계산을 한건지 알고 혹시 나올 오류에 대처할 수 있습니다. 출력되는 모양과 가능한 연산모양을 표로 나타냈습니다. Operator Shape 별연산(*) (n,m)*(n,m) = (n,m) 브로드캐스팅시 (1,m)*(n,m) = (n,m) or (m,1)*(m,n) = (m,n) or (m,n)*(m,1) = (m,n) or (n,m)*(1,m) = (n,m) 내적(dot) (n,m).dot((m,k)) = (n,k) 행렬곱(@) (..
DataFrame을 딕셔너리로 변환하는 방법에 대해 알아보겠습니다. to_dict 을 이용해 할 수 있는데 경우의 수가 좀 있어서 다양하게 딕셔너리를 만들 수 있습니다. 매개변수도 존재하는데 list, records, series, index,split, dict을 괄호에 넣으면 그에 맞게 변환을 해줍니다. column 기준으로 딕셔너리 만들기 {column : {index: value}} column 기준으로 리스트로 반환 {column : list} column 기준으로 series로 반환 {column : series} 각 row를 딕셔너리로 해서 리스트로 반환 [{column1 : value1, column2 : value2}] 각 row를 딕셔너리로 해서 딕셔너리로 반환 {index : {col..
리스트나 딕셔너리를 메모장에 저장하는 방법에 대해 설명하겠습니다. 데이터를 저장은 해야 하는데 엑셀에 하기엔 너무 무겁고 그렇다고 피클로 하면 데이터를 불러올 때마다 파이썬을 실행시켜야 하는데 이럴 때 가볍게 저장할 수 있는 곳이 메모장인 것 같습니다. 메모장에 출력 결과를 넣는 이유는 빠르게 저장할 수 있고 코딩도 간편합니다. 스피드가 필요할 땐 아주 적합합니다. 하지만, 많은 양의 데이터를 저장하기에는 조금 안 좋습니다. 정리가 안되서인데요. 메모장은 최소한의 기능만 있어서 데이터 자체가 복잡해지면 정리가 불가능합니다. 정리정돈이 필요한 데이터인 경우 파이썬으로 미리 정리하셔서 엑셀에 저장하는 걸 추천합니다. 리스트를 메모장에 저장하기 리스트 안에 있는 원소들을 하나씩 저장하는 방법입니다. 먼저 준비..
문자열 포맷 출력 형식입니다. 여러모로 유용하게 쓸 수 있는데 딕셔너리의 값을 가져와서 쓰는 걸로 보여드리겠습니다. 총 3개의 방식을 보여드릴텐데요. 다음과 같습니다. %기호 방식 {}기호 방식 f-strings 방식 1. %기호 방식 % 기호 다음에 특정 문자를 사용해서 출력을 하는 방법입니다. 예를 들어 %s 를 입력하면 문자열로 출력하라는 뜻이 됩니다. cap_float S&P500 종목명과 시가총액이 있는 딕셔너리를 만들었습니다. 여기서 %기호 방식으로 값을 출력해보겠습니다. for x in cap_float: print('%s : %s' % (x,cap_float[x])) 다음과 같이 문자열로 출력이 됩니다. 문자열 외에도 문자(%c), 십진수(%d), 부동소수(%f) 등으로 다양하게 형식을 지..
matplotlib의 라벨 붙이는 방법에 대해 알려드리겠습니다. 예를 위해 데이터를 준비했습니다. x는 x축에 있는 값이고 y는 y을 따라 움직이는 점들입니다. 보시다시피 y=2x인 함수입니다. import matplotlib.pyplot as plt x = [1,2,3,4,5,6,7,8,9,10] y = [2,4,6,8,10,12,14,16,18,20] 그래프를 그려보겠습니다. plt.plot(x,y) loc 여기다가 이제 라벨을 붙입니다. 단순하게 라벨을 붙이면 안됩니다. plt.plot(x,y,label='y=2x') 반드시 legend를 추가적으로 써줘야합니다. plt.plot(x,y,label='y=2x') plt.legend(loc='upper right') 라벨을 붙였습니다. 그런데 위치를 ..
딕셔너리를 미리 만들었는데 key가 잘못되서 바꾸고 싶을 때가 있는데 그런 경우 해당 key를 변경할 수 있습니다. 준비 cap_dict cap_dict은 미국 s&p500의 코드와 시가총액을 묶어놓은 딕셔너리입니다. 근데 코드가 아니라 종목명으로 key를 했어야 했는데 그러지 못했습니다. 종목명으로 바꾸려면 key를 각각 바꿔야 합니다. 이럴 때 다음과 같이 합니다. 일단 현재 상황은 코드에 맞는 종목명을 가져와야 바꿀 수 있습니다. 바꿀게 있어야죠~! 코드와 종목명이 연결된 pandas를 불러오겠습니다. df_sp 이 데이터는 s&p500의 코드와 종목명과 섹터와 산업으로 구성된 엑셀파일입니다. pandas로 불러왔습니다. 현 데이터에서 코드와 종목명을 가져와 딕셔너리 key를 바꾸도록 하겠습니다. ..
이번 포스팅에서는 matplotlib 로 그린 그래프 안에 글씨를 넣는 방법을 설명할까 합니다. 아래와 같은 그래프를 그렸습니다. 보시다시피 주기함수입니다. 저는 이 주기함수의 최대값과 최소값에다 각각 max,min 이라 표시를 하고 싶습니다. 이럴 때 text 메쏘드를 씁니다. 파라미터를 보면 x, y, s, fontdict , withdash , 기타등등으로 되어 있습니다. 그래프는 좌표평면에 그리게 됩니다. 좌표평면에서 (x,y)로 좌표표시를 하는데 거기에서의 x, y 가 text 파라미터의 x,y 가 됩니다. s 는 내가 넣을 문구를 넣으시면 되고 글자 크기와 색깔, 글자위치만 잘 지정해도 나쁘지 않으니 그 부분에 대해서만 설명하겠습니다. max, min 표시하기 max와 min 을 그래프에 표시..
ndarray 에 값을 추가해보겠습니다. 리스트와 비슷한 듯 다릅니다. ndarray append ndarray에서 append를 써봅시다. >>> import numpy as np >>> array = np.array([]) >>> array = np.append(array,[1,2,3]) array([1., 2., 3.]) 리스트와 다르게 추가할 ndarray를 지정을 해주고 리스트 형태로 넣습니다. 값 하나만 넣으면 굳이 리스트로 안 해도 됩니다. >>> array = np.array([]) >>> array = np.append(array,1) array([1.]) 차원을 늘리며 append numpy를 쓰는 가장 큰 이유는 벡터화를 시켜 계산을 하는 목적이기 때문에 차원을 생각하면서 코딩작업을 ..