Python 데이터의 요소 카운트하기 (Counter)

코딩이나 데이터 분석을 하다 보면 가지고 있는 데이터에 각 요소가 얼마큼 들어있는지 확인해야하는 상황이 생깁니다. list1 = ['참치', '참치', '고등어', '육개장', '육개장', '오징어', '육개장'] list2 = ['팔보채', '육개장', '라면', '라면', '고등어', '고등어', '고등어'] text = """ 공매도 세력 공격까지 받는 카카오. 16일 카카오 주가는 전날보다 0.82% 하락한 12만1500원에 마감했지만, 네이버는 오히려 0.37% 오른 40만2000원으로 거래를 마쳤다. 규제 문제가 발생되기 직전인 지난 7일부터 16일까지 네이버의 시가총액은 73조150억원에서 66조339억원으로 10%(6조9811억원) 감소한 반면, 카카오는 68조4848억원에서 54조665억..

[pymysql] InternalError: 1366, "Incorrect String Value" 해결하기

pymysql 패키지를 이용해 파이썬과 mysql간의 데이터 저장을 할 때, 데이터에 한글이나 특수문자, 이모티콘 등이 포함되어있으면 다음 에러가 발생할 수 있습니다. ERROR pymysql.err.InternalError: (1366, "Incorrect string value: '\xF3\xB0\x8B\xAF\xEA\xB8..' for column [칼럼명] at row 1") 이는 mysql의 utf-8 문자셋이 4바이트를 차지하는 심볼은 지원하지 않기 때문입니다. 이를 해결하기 위해 해당 데이터베이스의 인코딩 방식을 변경해줍니다. Solution ALTER DATABASE [DB명] CHARACTER SET = utf8mb4 COLLATE = utf8mb4; ALTER TABLE [column명..

Python Priority Queue(우선순위 큐) 객체 정렬하기

일반적으로 Queue는 FIFO 형식의 자료구조지만, Priority Queue는 들어간 순서에 상관없이 데이터의 크기에 따라 정렬됩니다. 따라서 heap구조와 비슷하다고 볼 수있습니다. 이를 파이썬으로 구현하려면 queue 혹은 heapq를 이용하면 되는데요. import queue q = queue.PriorityQueue() q.put(5) q.put(2) q.put(3) q.put(1) while not q.empty(): print(q.get()) #출력 1 2 3 5 위와같이 순서를 달리해도 정렬되서 출력이 됩니다. 그러나 파이썬 프로그래밍을 할 때에는 단순 숫자가 아닌 객체를 넣기도 하는데요. 아래와 같이 코드를 입력하고 실행하면 에러가 발생합니다. class Data: def __init_..

Linux에서 Anaconda 삭제하기

여태까지 python 가상환경 구성을 위해 Anaconda를 사용해왔습니다. 데이터분석에 필요한 패키지는 모두 설치되어있으니깐요 그러나 최근들어 쓸모없는 패키지가 너무 많이 설치되는 것 아닌가하는 마음에 지인의 추천을 받아 python virtualenv를 사용하는게 더 가볍고 관리하기도 편해보였습니다. 따라서 제가 사용하는 linux에서 anaconda를 삭제하려고 합니다. 그런데 어떻게 삭제할까요? 방법 1. anaconda 디렉토리를 삭제 simple uninstall 입니다. 그냥 linux에 설치된 anaconda 디렉토리를 삭제합니다. rm -rf ~/anaconda3 방법 2. anaconda-clean 설치 후 삭제 사실 이 방법을 실행하신 다음에 방법1을 해야 full uninstall이..

WSL로 윈도우에서 리눅스 사용하기

프로젝트를 진행하다보니 학교에서 대여한 클라우드 서버에서 개발할 필요성을 느꼈고, 윈도우에서 리눅스를 쓸 방법을 생각해보다가 윈도우의 좋은 기능을 찾아서 기록해봅니다. WSL은 마이크로소프트에서 개발한 Window Subsystem for Linux 입니다. 말 그대로 윈도우에서 리눅스를 사용할 수 있도록 개발된 것입니다. 그동안 개발자라면 맥북이 국룰이라고만 생각했는데, WSL를 통해서라면 제가 굳이 맥북을 살 이유는 좀 사라진 것 같네요... 그래도 가지고 싶긴 합니다. 사실 마소에서 몇 년전에 개발되었지만, 저는 올해가 되어 WSL2가 나오고서야 알게 되었습니다. 따라서 WSL2를 사용하려면 윈도우도 1903버전(x64기준) 이후로 업데이트 해주셔야 합니다. 업데이트는 여기서 할 수 있습니다. Wi..

Git의 기본 (clone, remote, commit, push, pull 등등)

개발하다보면 git을 사용하는 경우가 많은데 종종 명령어 순서를 까먹습니다... 자주쓰면 외워지긴 하겠지만 본 게시물 작성을 통해 머리에 때려 박아야겠습니다. Github repository를 해당 디렉토리에 복사합니다(불러옵니다.) git clone 해당 폴더에 .git을 생성하고 초기화합니다. (깃의 관리를 받게됩니다.) git init (로컬 폴더와 연결할) 원격 repository를 새로 생성합니다. git remote add # git remote add origin https://github.com/~~ 변경점이 있는 파일을 stage에 올립니다. ( .는 해당 폴더의 모든 파일) git add . 커밋을 통해 서버에 올릴 준비를 완료합니다. git commit -m "커밋 메세지" 커밋한 내..

알고리즘 - 동적계획법 (Dynamic Programming)

본 게시물은 경희대학교 한치근 교수님의 '알고리즘분석' 강의를 듣고 노트한 내용입니다. 원래는 multistage decision processes라고 불렸으나 정부기관의 관료에게 그럴듯하게 보이기 위해 dynamic으로 명명함 분할정복식은 하향식 해결법 (top-down approach), 서로 상관관계가 없는 문제를 해결하는 데에 적합 그러나, 피보나치 알고리즘은 같은 항이 여러번 호출됨 -> 비효율적 동적계획법 상향식 해결법 (bottom-up approach) 문제를 나눈 후에 작은 문제들을 먼저 푼다. 이항계수 구하기 계산량이 많은 n!과 k!를 계산하지않고 이를 부분으로 나눈다. 1) 분할정복식 *재귀호출을 할 때 같은 계산을 반복해서 수행하게됨. -> 비효율성 증대 2) 동적계획식 2차원 배..

알고리즘 - 분할정복법 (Divide and Conquer)

본 게시물은 경희대학교 한치근 교수님의 '알고리즘분석' 강의를 듣고 노트한 내용입니다. 분할정복식 설계 전략 분할(Divide) 문제를 여러개의 작은 부분으로 나눈다. 정복(Conquer) 나눈 문제를 해결한다. 통합(Combine) 해결된 해답을 모은다. -> 하향식(Top-Down) 문제 해결 방법 이분 검색 (binary search) 크기가 n인 정렬된 배열 S에 x가 있는지 결정하는 문제 분할 - 배열을 반으로 나누어 중앙에 위치한 항목보다 크고 작음을 판단해 해당 배열 반쪽을 선택한다. 정복 - 선택된 반쪽 배열에서 x를 찾는다. 통합 - 필요없음 1. 입력파라미터인 n, S, x는 변하지 않는 값이므로 전역 변수 (global)로 선언해 메모리를 절약하라! 재귀호출에서는 인덱스만 넘겨준다! ..

알고리즘 공부 순서 (feat. 학교 선배)

코잘알 학교 선배님이 알려주신 알고리즘&코딩테스트 공부 순서입니다. 까먹지 않게 정리 해두려고요 ㅎㅎ 우선적으로 공부해야할 것 1. 정렬 2. 그리디 3. 백트래킹 4. 다이나믹 프로그래밍 (DP) 이 세가지를 기본적으로 공부해놓을 것. 이후 공부할 알고리즘이나 어려운 코딩 문제들은 2, 3, 4를 베이스로 응용하는 경 우가 많음! (단, 정렬 알고리즘과 자료구조는 기본 중에 기본) 문제를 연습할 곳 1. 백준 - 단계별 문제풀이 2. 코드업 3. 올림피아드 기출문제 (지역 본선은 3번까지, 전국본선은 2번까지가 할만함) 알면 좋은 알고리즘 1. 분할 정복 (이분 탐색) 2. 최단경로 (다잌스트라, 플로이드, 벨만포드) 3. 최소비용트리 (크루스칼, 프림, 유니온파인드) 이 정도로 공부하고 문제 풀이하면..

알고리즘 - 백트래킹(Back tracking)에 대한 이해

백준 사이트를 통해 알고리즘 공부를 하던 중, 백트래킹에 대한 개념이 명확하지 않아 정리해봅니다. 이론은 SW expert academy에서, 실습은 백준에서 참고했습니다. N-Queen 문제 N x N 체스판에서 N개의 퀸이 서로를 공격하지 못하게 배치하는 문제 백트래킹 기법이란? 해를 찾는 도중에 막히면(해가 아니면) 되돌아가서 다시 해를 찾아가는 기법 초기 상태에서 목표 상태로 가는 경로를 탐색하는 기법 최적화 문제와 결정 문제를 해결할 수 있음 결정 문제 : 문제의 조건을 만족하는 해가 존재하는지의 여부를 yes or no로 답하는 문제 예) 미로찾기 미로에서 빠져나갈 경로가 존재하는가? -> 결정 문제 미로에서 최단거리로 나갈 수 있는 경로는 무엇인가? -> 최적화 문제 올바른 선택을 계속하면 ..