All Posts

[Pandas] 판다스 csv, 엑셀(xlsx, xls) 불러오기 및 저장하기
·
Data Science/Data Processing
CSV 불러오기 기본적으로 read_csv(참고링크)를 통해 csv 파일을 불러온다. 가장 간단하게는 파일 이름으로 불러올 수 있다.df = pd.read_csv("filename.csv")이때는 이 코드와 csv 파일이 같은 폴더 안에 있어야 한다. 만약 다른 폴더에 있는 파일을 사용하고자 한다면, 경로가 포함된 파일 이름을 넣어야 한다. 예를 들어 csv 파일이 다운로드 폴더에 있다고 한다면 다음과 같이 불러올 수 있다.df = pd.read_csv("C:\\Users\\UsersName\\Downloads\\filename.csv")주의할 것은 경로 복사로 붙여넣으면 C:\Users\...로 되어 있을 수 있는데, \ 가 아니라 \\로 설정해주거나 / 를 사용해주어야 한다.주로 사용하는 매개변수는 ..
[Pandas] 판다스 소개 및 시리즈(series)와 데이터프레임(dataframe)
·
Data Science/Data Processing
판다스 (Pandas) 판다스(공식 홈페이지)는 판다와 관련이 없다. 판다스는 패널(panel) 데이터(data)를 다루는 라이브러리라 Pan(panel)da(data)s 이다. R이 이러한 방식의 데이터를 주로 다루는데, 판다스는 파이썬에서 R과 같이 데이터를 다룰 수 있도록 도와주는 라이브러리라 생각하면 된다. 데이터사이언스와 데이터분석의 기본적으로 사용되는 라이브러리이며, 다양한 포맷의 데이터를 불러와 처리하는데, csv, Excel, SQL 데이터베이스 등 데이터를 처리할 수 있다.import pandas as pd판다스는 기본적으로 pd로 바꿔 불러오는 것이 관례이다.간단한 판다스 관련된 여러 함수와 메소드를 간략하게 정리한 이 pdf를 참고하면 좋다. 시리즈 (Series) 1차원 배열과 유사..
[NumPy] 넘파이 소개 및 배열(ndarray) 만들기
·
Data Science/Data Processing
넘파이 (NumPy) 넘파이(공식 홈페이지)는 파이썬에서 수치 계산을 도와주는 라이브러리로 파이썬에서 기본적으로 사용되는 리스트와 달리 모든 원소가 같은 자료형이고 크기를 바꿀 수 없는 배열을 활용할 수 있게 해준다.넘파이의 다차원 배열 객체를 통해 벡터, 행렬, 텐서 등을 효율적으로 계산하도록 하며, 덕분에 여러 수학, 통계, 데이터 분석, 기계 학습 등 다양한 라이브러리와 연동된다.내부 코드가 C로 구현되어 있어 파이썬 자체 계산보다 더욱 빠른 연산을 보여준다.import numpy as np넘파이는 기본적으로 np로 바꿔 불러오는 것이 관례이다.  넘파이 배열 (ndarray) 넘파이의 array 함수에 리스트를 넣으면 ndarray 클래스의 객체로 변환하여 사용할 수 있다. 앞서 언급했듯이 단일 ..
[ C++] 예외 처리(exception handling)
·
Language/C & C++
오류 오류에는 다양한 종류가 있다. 컴파일 과정에서 문법에 맞지 않아 오류가 발생할 수도 있고, 코드 작성 과정에서 개발자의 실수로 개발자의 의도와 다르게 작동하는 오류도 있다. 혹은 논리적 오류로 인해 개발자가 예상한 범위에서는 정상적으로 작동하지만 특정 상황에서 오류가 발생하는 경우도 있다.컴파일 오류나 개발자의 의도와 다르게 작동하는 오류의 경우는 따로 수정이 필요하지만, 개발자가 예상한 범위에서는 정상 작동하는 코드의 경우 개발자가 의도한 범위 안에서만 동작하도록 하고 그 외 부분은 예외처리하여 코드를 사용할 수도 있다.예를 들어 거듭제곱을 계산하는 power라는 함수를 만들었다고 해보자. 근데 이 거듭제곱을 계산하는 함수는 정수에 대한 양의 정수 제곱밖에 계산하지 못한다면 실수의 거듭제곱 혹은 ..
[C++] 파일 입출력 스트림(file I/O stream) 및 파일 포인터(file pointer)
·
Language/C & C++
파일 종류 파일은 텍스트 파일과 바이너리 파일로 나뉜다. 텍스트 파일은 문자 데이터로 구성된 파일로, 사람들이 사용하는 글자 혹은 문자들만 포함된다. 각 문자는 ASCII 코드나 유니코드로 저장되며, 일반적으로 텍스트 편집기를 사용해 읽고 수정할 수 있고, 대표적인 예로 txt 파일이 있다. 반면, 바이너리 파일은 텍스트로 표현되지 않는 바이너리 데이터를 포함하며, 특정 프로그램만이 이 데이터를 해석할 수 있고, 이미지, 오디오, 실행 파일 등이 바이너리 파일의 대표적 예이다. 바이너리 파일은 각 바이트의 의미가 응용 프로그램에 의해 정의된다.참고로 어느 파일이든 파일의 끝을 읽으면 EOF, 즉 -1을 반환한다. 파일 입출력 스트림 (File I/O Stream) 파일 입출력 스트림은 파일을 프로그램과 ..
[Linear Algebra] 직교 행렬(orthogonal matrix) 및 대칭행렬의 대각화(diagonalization of symmetric matric)
·
Mathematics/Linear Algebra
직교행렬 $ n $ 차 정사각행렬 $ A $ 에 대하여 $ A^T A = I_n $ 이면 $ A $ 를 직교행렬이라 한다. 또한 이는 $ A^T = A^{-1} $ 이면 $ A $ 는 직교행렬이다와 동치이고, $ A $ 의 열(행)벡터들은 정규직교집합이다와 동치이다.$ A $ 의 열(행)벡터들이 정규직교집합인 이유는 $ A^T A = I = A A^T $ 이기 때문이다.$ A $ 가 직교행렬이면 $ A^T A = I $ 이고, $ | A | = | A^T | $ 이므로 $ 1 = | I | = | A^T A | = | A^T | | A | = | A | ^2 $ 이므로 $ | A | = \pm 1 $ 이다. 즉 $ A $ 가 직교행렬이면 $ | A | = 1 $ 또는 $ -1 $ 이다. 직교 대각화 정사..
[C++] 포맷 플래그(format flag) 및 조작자(manipulator)
·
Language/C & C++
포맷 플래그 포맷 플래그는 C++에서 입출력 형식을 지정하기 위한 플래그이다. C에서는 printf() 와 함께 다양한 형식 지정자 및 플래그를 사용하여 입출력 형식을 지정하였지만 C++에서는 입출력 스트림을 이용하여 입출력을 제어하고, 이때 std::cin 혹은 std::out 이 사용되기 때문에 C와 다른 방식으로 입출력 형식을 지정해주어야 한다.플래그값의미ios::skipws$\rm 0x0001$입력 스트림에서 공백 문자(Space, Tap, Enter) 무시ios::unitbuf$\rm 0x0002$출력 스트림에 들어오는 데이터를 버퍼링하지 않고 바로 출력ios::uppercase$\rm 0x0004$16진수 표현의 알파벳을 대문자로 출력ios::showbase$\rm 0x0008$16진수는 $\..
[C++] 입출력 스트림(I/O stream) 및 버퍼(buffer)
·
Language/C & C++
스트림 및 버퍼 스트림은 입출력 및 에러 전달 과정 등 데이터의 흐름을 추상화한 개념이다. 구체적으로는 이 흐름을 구성하는 일련의 데이터 요소를 말한다. C++에서는 특히 표준 입력, 표준 출력, 표준 에러 스트림이 존재하고, 입력은 키보드와 같은 입력 장치에서 데이터를 받아 프로그램으로 전달하며, 출력과 에러는 프로그램에서 생성된 데이터를 출력 장치, 예를 들어 디스플레이로 전달한다.입출력 스트림에는 버퍼가 사용되는 경우가 많은데, 일시적으로 데이터들을 저장하는 곳이라 보면 된다. 데이터를 입력받은 그 즉시 전달하는 것이 아니라 일정 수준, 혹은 전달하는 특정한 입력이 있을 때까지 버퍼에 저장해두었다가 전달하는 것이다. 예를 들어서 std::cin 은 사용자가 공백문자나 개행문자를 입력하기 전까지 버퍼..
[Linear Algebra] 행렬 대각화(matrix diagonalization)
·
Mathematics/Linear Algebra
행렬 대각화 정사각행렬 $ A $ 와 어떤 가역행렬 $ P $ 에 대하여 $ P^{-1}AP $ 가 대각행렬이 된다면 $ A $ 를 대각화 가능한 행렬(diagonalizalble matrix)이라 하고, $ P $ 는 $ A $ 를 대각화하는 행렬이라 한다.만약 $ A $ 가 대각행렬이라면 $ P $ 를  $ I $ 로 둠으로써 대각화 가능하다.이러한 대각화가 가능할 필요충분조건은 $ n $ 차 정사각행렬 $ A $ 가 $ n $ 개의 일차독립인 고유벡터를 갖는 것이다. 이때 $ A $ 는 고윳값 $ \lambda_1, \lambda_2, \cdots, \lambda_n $ 을 주대각성분으로 갖는 대각행렬 $ D $ 와 닮은 행렬이다.더보기$ A $ 개 대각화 가능한 $ n $ 차 정사각행렬이라할 때 ..
[Data Structure] 해시테이블(hash table) 및 해싱(hashing)
·
Computer Science and Engineering/Data Structure
해시테이블  해시테이블이랑 해시를 이용하여 키(key)에 대응되는 값(value)을 저장하는 자료구조이다. 키에 대응되는 값에 빠르게 접근하는 것이 특징인데, 이는 해시 함수(hash function)를 이용하여 키에 대응되는 해시 주소(hash address), 즉 인덱스(index)를 생성하고, 이 인덱스를 통해 배열(버켓, bucket)에 값을 저장하기 때문이다. 배열에 저장하기 때문에 임의접근(ramdom access)이 가능하고, 따라서 잘 만들어진 해시테이블에서 키를 이용하여 값에 접근하는 것의 시간복잡도는 $ \mathcal{O}(1) $ 이다.해시 함수를 이용하여 키를 테이블 인덱스로 바꾸는 것을 해싱이라 하는데, 이 해싱을 어떻게 할 것이냐가 해시테이블의 접근 성능을 판가름한다. 당연히 ..
애스터로이드
'분류 전체보기' 카테고리의 글 목록 (17 Page)