분류 전체보기 168

외부 파일 읽어오기 - 2 (Excel, JSON)

이번 글에서는 Excel과 JSON 파일을 읽어오는 방법을 알아보고자 한다. Excel과 JSON 파일은 앞에서 살펴본 CSV와 읽어오는 방법이 거의 비슷하다. Excel 파일 읽어오기 Excel 파일의 행과 열은 데이터프레임의 행, 열로 일대일 대응된다. read_excel() 함수의 사용법은 앞에서 살펴본 read_csv() 함수와 거의 비슷하다. header, index_col 등 대부분의 옵션을 그대로 사용할 수 있다. Excel 파일 -> 데이터프레임: pandas.read.excel("파일 경로(이름)") 다음의 Excel 파일은 남북한의 발전량을 정리한 통계자료이다. header 옵션을 달리한 두 가지 df1, df2를 출력하는 코드입니다. import pandas as pd file_pat..

외부 파일 읽어오기- 1 (CSV)

이번 글에서는 CSV파일을 읽어오는 방법을 알아보고자 한다. CSV(comma separated values) 파일은 데이터 값을 쉼표(,)로 구분하는 파일이다. 쉼표(,)로 열을 구분하고 줄바꿈으로 행을 구분한다. 판다스 read_csv() 함수에 확장자(.csv)를 포함하여 파일 경로(파일명)를 입력하면 CSV 파일을 읽어와서 데이터프레임으로 변환한다. CSV 파일 -> 데이터프레임: pandas.read_csv("파일 경로(이름)") CSV 파일을 읽어올 때 추가적으로 행과 열 이름값 설정을 할 수 있다. header는 열 이름으로 사용할 행을 지정하는 옵션이다. pandas.read_csv("파일 경로(이름)", header=?)에서 ?에 1을 넣으면 1행을 열 이름으로 지정한다. 기본값은 0이며..

데이터프레임(Data Frame) 연산

이번 글에서는 데이터프레임 연산에 대해서 알아보고자 한다. 데이터프레임은 여러 시리즈가 모인 것이므로 시리즈 연산을 확장하는 개념으로 이해하는 것이 좋다. 행/열 인덱스를 기준으로 정렬하고 일대일 대응되는 원소끼리 연산을 처리한다. 데이터프레임 연산은 크게 2가지가 존재한다. 1. 데이터프레임 vs 숫자 2. 데이터프레임 vs 데이터프레임 데이터프레임 vs 숫자 데이터프레임과 숫자 연산: DataFrame 객체 + 연산자(+, -, *, /) + 숫자 시리즈 vs 숫자 연산과 똑같다. 데이터프레임에 어떤 숫자를 더하면 모든 원소에 숫자를 더한다. 덧셈, 뺄셈, 곱셈, 나눗셈 모두 가능하며 기존 데이터프레임의 형태를 그대로 유지한 채 원소 값만 새로운 계산 값으로 바뀐다. 새로운 데이터프레임 객체로 반환되..

시리즈(Series) 연산

이번 글에서는 시리즈 vs 숫자, 시리즈 vs 시리즈 연산을 정리하고자 한다. 판다스 객체의 산술연산은 내부적으로 3단계 프로세스를 거친다. 1. 행/열 인덱스를 기준으로 모든 원소를 정렬한다. 2. 동일한 위치에 있는 원소끼리 일대일로 대응시킨다. 3. 일대일 대응이 되는 원소끼리 연산을 처리한다. (대응되는 원소가 없으면 NaN으로 처리한다) 시리즈 vs 숫자 시리즈와 숫자 연산: Series 객체 + 연산자(+, -, *, /) + 숫자 시리즈 객체에 어떤 숫자를 더하면 시리즈의 개별 원소에 각각 숫자를 더하고 계산한 결과를 시리즈 객체로 반환한다. 덧셈, 뺄셈, 곱셈, 나눗셈 모두 가능하며 아래 예제는 시리즈 객체의 각 원소를 100으로 나누는 과정이다. import pandas as pd stu..

[ 백준 1074 ] Z - Python

문제 보기 이 문제는 분할 정복, 재귀 호출 문제이다. Z 형태로 배열을 탐색하기 위해서는 크기가 2 * 2가 될 때까지 4등분을 반복해야 하며 알고리즘 순서는 아래와 같다. 1. 주어진 배열을 4등분 한다. (분할 정복) 2. 1의 과정을 반복적으로 진행하면서 단위가 2*2일 때 탐색을 시작한다. (재귀 호출) 3. r, c를 탐색하면 출력하고 종료한다. 코드 (시간 초과) def divide(size, start_row, start_col): global cnt if size == 2: if start_row == r and start_col == c: # 왼쪽 위 print(cnt) return cnt += 1 if start_row == r and start_col + 1 == c: # 오른쪽 위..

[ 백준 10971 ] 외판원 순회 2 - Python

문제 보기 이 문제는 TSP(Traveling Salesman problem) 문제이다. 여러 도시들이 있고 한 도시에서 다른 도시로 이동하는 비용이 모두 주어졌을 때, 모든 도시들을 단 한 번만 방문하고 원래 시작점으로 돌아오는 최소 비용의 이동 순서를 구하는 것이다. 한 붓 그리기로 유명한 해밀턴 경로와 유사하며, 다시 출발점으로 돌아오는 코드만 추가하면 된다. 풀이 과정은 아래 순서를 따르며 dfs를 통해서 구현하였다. 1. 각 번호에서 출발하여 제자리로 돌아오는 값을 구한다. 2. 1번 과정을 반복하면서 최솟값을 업데이트한다. 코드 import sys def dfs(start, next, value, visited): global min_value if len(visited) == N: if tr..

[ 백준 5430 ] AC - Python

문제 보기 이 문제는 시간 초과를 해결하는 것이 핵심이다. 시간 초과를 해결하기 위해서 아래 2가지를 고려하였다. 1. 어떠한 자료구조를 사용할 것인지? - AC 문제에서는 양쪽에서 출력이 가능해야 하기 때문에 덱을 사용하였다. 덱은 양쪽에서 모두 입력과 출력이 가능한 자료구조이며 파이썬에는 이미 deque로 정의되어 있기 때문에 그대로 사용하면 된다. 2. 주어진 연산을 어떤 과정으로 수행할 것인지? - 주어진 연산이 RR이라고 가정해보자. RR의 수행 결과는 결국 원래 값이 된다. 이 경우에는 연산을 하지 않는 것이 좋다. 따라서 주어진 연산을 순차적으로 실행하는 것이 아니라, 뒤의 상황을 고려하면서 구현하였다. - 뒤집기(R)의 개수를 파악하고 D 연산을 수행한 후 마지막에 추가적으로 R 연산을 수..

블로그 시작

지금까지는 깃허브 블로그만 운영하였습니다. 깃허브 블로그로 공부한 내용을 정리하고 복습하는 것은 좋았지만, 티스토리에 비해서 사람들의 피드백을 많이 받지 못한다고 생각합니다. 비슷한 분야의 사람들과 많은 대화를 해보고 싶어 티스토리로 블로그를 이전하였고 앞으로 아래 내용을 블로그에서 다룰 예정입니다. 1. 알고리즘(백준, 프로그래머스, SW ExportAcademey) 문제 풀이 2. 데이터 분석 공부 3. 머신러닝 공부 4. 프로젝트 5. 일상

일상 2020.05.26