본문 바로가기

전체 글

(171)
pandas dataframe 문자열 칼럼 숫자형(int,float)으로 변환 pandas Dataframe 에서 문자열 칼럼을 숫자형으로 바꿔야할 때가 종종 있습니다. 그 때 쓰는 메서드는 보통 pd.to_numeric() dataframe.astype() 이렇게 2가지가 있습니다. 하나하나 살펴보겠습니다. 1) to_numeric() 시리즈 데이터를 하나 만들었습니다. 여기에 pd.to_numeric( ) 을 하겠습니다. 시리즈 데이터로 넣었더니, 타입이 int 로 만들어진 것을 확인할 수 있습니다. 근데, 만약에 dataframe으 모든 칼럼을 숫자형으로 바꾸고 싶다면 어떨까요? 이 때는 apply 라는 메서드를 통해서 사용합니다. apply 메서드에 대해 잠깐 살펴보겠습니다. apply 메서드 안에는 커스텀함수나 기존의 메서드들을 인자로 넣어주시면 됩니다. 한 칼럼의 최대값..
matplotlib 한글폰트 설정하기 python 으로 데이터 시각화할때 많이들 쓰시는 matplotlib 에서 한글이 깨지는데요. 이에 대해 설정을 해줘야 할 필요가 있습니다. 오늘은 이에 대해 다뤄 보겠습니다. 이 설정은 유튜브 'todaycode오늘코드' 를 참고 했구요. 맨 아래 링크를 첨부 했습니다 :) 필요한 라이브러리를 부르고 임의의 숫자들로 데이터를 구성해보겠습니다 :) 이 상태에서 시각화를 한 번 해볼게요. 한글이 깨지네요... 근데 그전에 저 그래프 창 보려고 하는데 뭔놈의 경고창 같은게 굉장히 많이 뜨네요. 제가 알기로는 라이브러리나 파이썬 버전 문제같은 거에 대한 경고? 같습니다. 위 캡쳐에는 별로 없지만, 사실 제 주피터에서는 마우스 스크롤 바퀴를 3바퀴정도 돌려야 위 그래프가 보였습니다. 저러한 거 안 보이게 해주는..
SQL JOIN - left join, inner join (feat. MY SQL) SQL을 공부한다면, 꼭 알아야하는 개념이 'JOIN'입니다. 이번 시간에는 이에 대해 차근차근 설명해보도록 하겠습니다. 먼저, 곱집합에 대해서 설명하겠습니다. 3개의 원소를 가진 2개의 집합을 곱하면 총 9쌍의 원소로 이루어진 집합이 생깁니다. mysql 로 확인해보겠습니다. 2개의 테이블(=집합)이 있습니다. 각각 원소가 3개씩 들었는데, 이를 카티전 곱 해보겠습니다. 간단합니다. 두 개의 테이블을 콤마(,)로 연결했더니, 곱집합이 생겼습니다. 3 x 3 으로 9 개의 원소가 되었습니다. Point! From 구에 복수의 테이블을 지정하면 교차결합(=곱집합)을 한다! 데이터를 넣어본 테이블로 다시 보겠습니다. 3개의 로우(데이터)가 들은 2개의 테이블이 있습니다. 이를 내부결합할건데요. 그전에 각 테..
Mysql - LIKE , IF, CASE = 연산자로 검색하면 열 값이 완전히 일치할 때만 참이 됩니다. 만약, 일부분만 일치 여부를 알고 싶다면 뭘 써야할까요? 바로 LIKE 입니다. 1) 열명 LIKE '패턴' 을 사용하면 열 값이 부분적으로 일치하는 경우에도 참이 됩니다. 패턴을 정의할 때 % _ 퍼센트와 언더스코어를 쓸 수 있습니다. 퍼센트(%) 는 임의의 문자열을 의미하며, 언더스코어(_) 는 임의의 문자 하나를 의미합니다. * (애스터리스크) 는 LIKE 에서 사용할 수 없습니다. -Point!- LIKE 술어를 사용하여 패턴 매칭으로 검색할 수 있다! 패턴을 정의할 때 사용할 수 있는 메타문자로는 % 와 _ 가 있다! 이제 예제를 보겠습니다. 위 테이블에서 SQL 이라는 글자를 중심으로 로우를 찾아보겠습니다. %SQL% : SQL ..
Mysql - 수치 연산, 문자 연산, IFNULL select 구에서 열을 선택한다고 지난 번에 말했습니다. 이번에는 열끼리의 연산을 통해 나오는 결과를 열로 선택해보겠습니다. 직접 예로 보겠습니다. 위 테이블을 쓰겠습니다. 1) 수치 연산을 통한 열 선택 금액이라는 열을 다른 열끼리의 연산을 통해 선택했습니다. as "원하는 열명"을 쓰면 그 이름으로 열이 생성되는데요. 이 때 키워드 as 는 안쓰고 그냥 띄워쓰기 한칸 하고 써도 됩니다. 그리고 한글을 열명으로 하려면 더블 쿼트로 둘러싸주셔야 합니다. (위 쿼리 참고) 하나 알고 계실건 Mysql 에서는 숫자로 시작하는 이름을 붙일 수 있습니다. 이 때 객체명을 숫자로만 해서는 안됩니다. 숫자+문자 이런 형식으로 객체명이 가능합니다. 하지만, Oracle 에서는 허용되지 않습니다. 이번에는 where..
Mysql - 복수의 열 정렬, 행수 제한(LIMIT,OFFSET) 1) 복수의 열 정렬 이번에는 복수 열로 정렬하는 법을 얘기 해보겠습니다. 같은 값을 가진 행의 순서는 '일정하지 않습'니다. 다음의 예를 보겠습니다. 위의 데이터를 '1-1, 1-2, 1-3' 와 같이 정렬을 하려 합니다. 원하는 대로 출력이 되지 않습니다. b 도 추가해주면 해결이 됩니다. 1차적으로 a열 기준으로 정렬하고 동일 한 값들은 b열을 기준으로 정렬 합니다 이번에는 b열 기준으로 먼저 정렬하고, a열을 그 적용해보겟습니다. 쉽네요. 정렬 뒤에 asc/desc 를 통해서 우선순위의 정렬을 정하고, 정함과 동시에 오름차순, 내림차순도 정할 수 있습니다. asc 는 기본값이니깐 생략해줘도 되지만, 정렬방법을 정할 수 있다는 차원에서 표기했습니다 :) ORDER BY 로 지정한 열에서 NULL 값..
Mysql - DML 01 - select, desc, where , order by mysql workbench 로 작업을 합니다. 쿼리문에서 쓰이는 db는 한빛미디어의 'sql첫걸음'책에 나온 예제 데이터를 활용해서 실습을 진행하겠습니다. 1) 확인(조회) > SELECT * FROM 테이블명; * 애스터리스크는 모든 열을 뜻하는 메타문자입니다. from 다음에는 테이블명이 옵니다. 그리고 명령문 마지막에는 항상 ; 세미콜론을 붙여줍니다. 위의 명령어는 select * 라는 select 구와 from sample21 이라는 from 구 2가지의 구로 나눌 수 있습니다. 이를 결정하는 것은 select, from 과 같은 예약어입니다. 데이터베이스에서 테이블처럼 데이터를 저장하거나 관리하는 '어떤 것'을 '데이터베이스 객체'라고 부릅니다. 테이블말고는 '뷰(view)'라는 것이 있습니다..
파이썬 알고리즘 기초 - 스택(Stack) 이번 시간에는 '스택'에 대해서 다뤄 보겠습니다. 이게 스택입니다. 말 그대로 '스택' 그 이상도 그 이하도 아니네요. 자, 저 책 하나하나를 데이터로 생각해볼게요. 일반적으로 생각해볼 때, 책을 어떻게 안정적으로 꺼낼 수 있을까요? 예를 들어, 위에서 10번째에 위치한 책(=데이터)를 꺼내고 싶은데 그 위까지 책을 한 팔로 살 짝 들어서 옆으로 싹 뺀다면, 안 무너뜨릴 자신 있으신가요? ㅎㅎ 위에서부터 9권을 내리고 10번째 책을 빼는게 안정적이겠죠? 스택 이라는 자료구조가 그렇습니다. 저 스택을 쌓을 때 위에 있을수록 더 늦게 쌓은 책이잖아요? 나중에 입력한 데이터를 먼저 빼는(LIFO) 데이터 구조가 스택입니다! 저는 스택이라는 데이터 구조를 생각할 때, 저렇게 위태위태하게 쌓은 이미지를 상상합니다..
파이썬 알고리즘 기초 - 큐(Queue) 이번 시간에는 '큐' 라고 하는 데이터 구조를 다뤄 보겠습니다. 그림으로 먼저 보겠습니다. 직사각형 타일이 데이터라고 생각하시면 됩니다. '큐'를 표현하는 그림들은 많이 있습니다. 데이터를 하나하나 넣었습니다. 앞으로 여러 데이터 구조를 살펴볼 것입니다. 각 구조마다 핵심적인 특성을 말하는 약어가 있습니다. 핵심은 FIFO(First In First Out) 입니다. LILO(Last-In, Last-Out) 랑 같은 의미입니다. 보통 FIFO 로 많이 얘기합니다. 위 그림을 보면 31이라는 데이터가 제일 먼저 들어갔고 제일 우측에 있습니다. 입구는 insert 출구는 delete로 위 그림에는 나와 있는데요. 6개의 데이터를 넣었는데 제일 먼저 들어간 31이 제일 먼저 나오는 특성을 갖고 있는 것이 '..
[리뷰] do it html5+css3 웹 표준의 정석 전면 개정2판 리뷰 오랜만에 IT 도서 리뷰를 합니다. 웹을 공부할 때 많은 분들이 고민하는 책 중 하나인 do it html5+css3 웹 표준의 정석 !! IT 학원이나 컴퓨터 관련 수업에서 이 책을 쓰는 경우가 많은 것으로 알고 있습니다 :) 전면 개정 2판은 2019년 12월 27일 개정 2판으로 1쇄 발행된 책입니다. 사실 이 책은 쓰여진 지 꽤 오래 됐습니다. 칼라책에 종이의 질이 좋은 책이라 왠만하면 비전공자 분에게는 웹에 대한 공부를 시작한다면 이 책을 권하고 싶습니다. 사실 DO IT 시리즈는 많은 책들이 있고, 저도 이 책 시리즈는 꽤 많이 갖고 있습니다. 먼저, 이 책이 좋은 이유는 아래 사진을 보시면 알 수 있습니다. 소스 제공은 모든 IT 서적이 다 하는거죠? 저자 분의 깃허브에 가시면 바로 책 예제..
파이썬 알고리즘 기초 - 하노이의 탑 (재귀 알고리즘) 하노이의 탑(Tower of Hanoi)은 퍼즐의 일종이다. 세 개의 기둥과 이 기둥에 꽂을 수 있는 크기가 다양한 원판들이 있고, 퍼즐을 시작하기 전에는 한 기둥에 원판들이 작은 것이 위에 있도록 순서대로 쌓여 있다. 게임의 목적은 다음 두 가지 조건을 만족시키면서, 한 기둥에 꽂힌 원판들을 그 순서 그대로 다른 기둥으로 옮겨서 다시 쌓는 것이다. 한 번에 하나의 원판만 옮길 수 있다. 큰 원판이 작은 원판 위에 있어서는 안 된다. 하노이의 탑의 원리(애니메이션) 하노이의 탑 문제는 재귀 호출을 이용하여 풀 수 있는 가장 유명한 예제 중의 하나이다. 그렇기 때문에 프로그래밍 수업에서 알고리즘 예제로 많이 사용한다. 일반적으로 원판이 n개 일 때, 2^n -1(=2의 n승 빼기 1)번의 이동으로 원판을 ..
파이썬 알고리즘 기초 - 재귀함수 알고리즘들 중에는, 재귀 알고리즘 (recursive algorithm) 이라고 불리는 것들이 있습니다. 이것은 알고리즘의 이름이 아니라 성질입니다. 주어진 문제가 있을 때, 이것을 같은 종류의 보다 쉬운 문제의 답을 이용해서 풀 수 있는 성질을 이용해서, 같은 알고리즘을 반복적으로 적용함으로써 풀어내는 방법입니다. 예를 들면, 1 부터 n 까지 모든 자연수의 합을 구하는 문제 (sum(n))는, 1 부터 n - 1 까지의 모든 자연수의 합을 구하는 문제 (sum(n - 1))를 풀고, 여기에 n 을 더해서 그 답을 찾을 수 있습니다. 즉, sum(n) = sum(n - 1) + n 입니다. 1부터 n까지 구하는 문제를 구해보겠습니다. 위와 같이 식이 변경이 됩니다. 우측에 있는 그림을 식으로 쓰면 아래..