본문 바로가기

SMALL

전체 글

(56)
판다스(pandas) - 기본 API (2) head()와 tail() head()는 DataFrame의 맨 앞부터 일부 데이터만 추출합니다. tail()은 DataFrame의 맨 뒤부터 일부 데이터만 추출합니다. 원래는 DataFrame의 기본 플롯 형태가 나오는 것이 jupyter에서만 위와 같은 형태로 나오는 것이고 실제 print를 해서 dataframe을 보면 출력값이 다르게 나옵니다. 따라서 dataframe을 가시성있게 보기위해서는 직접적으로 dataframe을 df와 같이 지정해서 쓰거나 display함수를 이용해서 나타내야합니다. DataFrame 출력 시 option 중에서는 tail,header를 기준으로 dataframe을 얼마나 추출하는지에 대한 옵션도 있고, set_option일 경우에는 display함수를 이용하여서 최대..
판다스(Pandas)와 기본 API (1) 판다스는 파이썬에서 데이터 처리를 위해 존재하는 가장 인기있는 라이브러리입니다. 일반적으로 정형 데이터는 대부분 2차원 데이터입니다. 즉, Row(행),Column(열)로 구성되어 있습니다. (판다스는 정형데이터이기 때문에 3차원은 호환하지 않습니다.) 행과 열의 2차원 데이터가 인기있는 이유는 사람이 가장 이해하기 쉬운 데이터 구조이면서도 효과적으로 데이터를 담을 수 있는 구조입니다. 판다스는 이처럼 행과 열로 이뤄진 2차원 데이터를 효율적으로 가공/처리할 수 있는 다양하고 훌륭한 기능을 제공합니다. (판다스에서는 시계열성이 많다는 것입니다. 판다스는 시계열성 구성하는 것을 되게 쉽게 구현하게 되어있습니다. 그 외에도 집계성, 시각화와 효율적인 연계, 빠른 데이터처리 등과 같은 장점들을 numpy를 기..
[9663번] N-Queen 이 문제는 NxN 체스판에 퀸 N개를 서로 공격하지 못하는 위치에 놓는 경우의 수를 구하는 문제입니다. 퀸은 체스판 위에서 상하좌우 대각선으로 공격할 수 있는 기물인 것을 유의해야합니다. 단 문제의 N은 14이하이므로 백트래킹을 이용해서 문제를 풀 수 있습니다. 이 문제에서 가장 어려운 부분은 특정 좌표에 퀸을 둘 수 있는지 어떤 식으로 판별하는가 입니다. 저희가 실제 코딩 할 때 2차원 배열의 좌표를 쓰는 것이 편하기 때문에 좌표로 생각을 하겠습니다. 퀸이 놓인 자리에는 행과 열이 같은 자리에는 다른 퀸을 못놓으며, 좌측 하단과 우측 상단을 잇는 대각선은 x가 1 증가하면서 y가 1감소하는 대각선입니다. 그리고 좌측 상단과 우측 하단을 잇는 대각선은 x-y가 같은지 보면 됩니다. #include usi..
[15649번] N과 M(1) 백트래킹 문제를 풀려고하면 구현력을 상당히 필요로하고 실수하기도 쉬운구간입니다. 또한 재귀의 특성상 한 번 오류가 나면 디버깅하는데 오래걸리기 때문에 그래서 많은 시간을 쌓아야 한다고 생각합니다. 위 알고리즘은 8중 for문을 쓰면 어거지로 풀 수는 있지만, 조금 있어보이게 (?) 풀기 위해서는 백트래킹 알고리즘을 사용해서 풀면 좋습니다. 비어있는 리스트에서 시작해서 수를 하나씩 추가하면서 길이가 M인 수열을 완성되면 출력하는 방식으로 구현할 수 있습니다. 하지만 이걸 구현한다고 하면 사실 감이 잘 안옵니다. #include using namespace std; int n, m; int arr[10]; //수열을 담을 배열 bool isused[10]; //특정 수가 쓰였는지를 true 혹은 false로..
numpy ndarray의 sort & argsort 배열의 정렬 넘파이 sort() 유형 우선 sort는 이름에서 유추할 수 있듯이 넘파이 ndarray의 값을 정렬하는 방식입니다. 이 방식은 2개로 나눌 수 있습니다. np.sort(ndarray) : 인자로 들어온 원 행렬은 그대로 유지한 채 원 행렬의 정렬된 행렬을 반환 ndarray.sort() : 원 행렬 자체를 정렬한 형태로 변환하면서 반환 값은 None ※ np.sort() , ndarray.sort() 모두 기본적으로 오름차순으로 행렬 내 원소를 정렬합니다. 만약, 내림차순으로 정렬하기 위해선 [::-1]을 적용시킵니다. ex) np.sort()[::-1] 2차원 배열에서 axis 기반의 sort() 다음그림을 보자면 A라는 2차원 배열을 가지는 ndarray가 있는데 이를 axis를 기준으..
numpy(3) ndarray의 데이터 세트 선택하기 - 인덱싱(Indexing) 우리가 ndarray의 특정위치에서 데이터를 가져올 수 있는데 이런 방법을 통틀어서 인덱싱이라고 합니다. 인덱싱 유형 설명 특정 위치의 단일값 추출 원하는 위치의 인덱스 값을 지정하면 해당 위치의 데이터가 반환됩니다. 슬라이싱(Slicing) 슬라이싱은 연속된 인덱스상의 ndarray를 추출하는 방식입니다. ' : ' 기호 사이에 시작 인덱스와 종료 인덱스를 표시하면 시작 인덱스에서 종료 인덱스-1 위치에 있는 ndarray를 반환합니다. 팬시 인덱싱 (Fancy Indexing) 일정한 인덱싱 집합을리스트 또는 ndarray 형태로 지정해 해당 위치에 있는 ndarray를 반환합니다. 불린 인덱싱 (Boolean Indexing) 특정 ..
numpy(2) 넘파이 ndarray의 axis 축 ndarray의 shape는 행, 열, 높이 단위로 부여되는 것이 아니라 axis0, axis1, axis2 와 같이 axis 단위로 붙게 됩니다. 그림에서 보듯이 axis 기준이 차원에 따라서 계속 변하는 것을 볼 수 있습니다. 이런 이유로 혼란을 많이 겪게 됩니다. 우선 2차원 배열에서 보겠습니다. 2차원 배열에서 [1, 2, 3, 4]와 같은 개별 원소가 여러개 있는게 2차원 배열입니다. 이렇듯 단일 원소로 표현될 수 있는 가장 작은 단위는 맨 마지막 axis입니다. (따라서 axis 1이 되는 것입니다.) 결과적으로 단일 원소 즉, 가장 작은 원소로부터 axis 기준을 거꾸로 잡아서 나아가는게 이해하는데 도움이 될 것 입니다. 이후 shape를 나타낼 때 2차원..
NumPy (넘파이) 넘파이에 대해서 공부해보겠습니다. 먼저 넘파이의 뼈대를 이루고 있는 ndarray에 대해서 알아보겠습니다. 여기서 nd가 각각 의미하는 것은 N 차원 (Dimension) 으로 ndarray는 N차원 배열 객체라는 의미입니다. 한 차원이 높아질때마다 한차원 밑에 있는 요소들을 원소로 가지는 형태의 배열입니다. 넘파이에는 array라는 함수가 있는데 이 안에 우리가 변환하고자하는 데이어 타입을 넣어주면 됩니다. Numpy 모듈의 array() 함수로 생성하여 인자로 주로 파이썬 list 또는 ndarray를 입력하여 줍니다. import numpy as np array1 = np.array([1,2,3]) array2 = np.array([1,2,3],[2,3,4]) 원래 list로 대용량 데이터 처리는 ..