Share
Sign In

Programming Language

각 프로그래밍 언어의 문법들과 자료구조 및 알고리즘을 정리한 채널입니다.
All
Programming Language
DataStructure
Algorithm
Python
R
Java
C/C++
[Python] 정규표현식
정규표현식 문자열 처리할 때 나만의 패턴이나, 분석가의 다양한 사례에서 요구하는 조건의 패턴을 만들어서 처리하는 방법 split, strip, 배웠던 문자열 문법들이 정규표현식과 만나면 정말 다양하게 응용할 수 있다. 이메일주소 찾기, 아이디, 비번 패턴 찾기, 회원가입 아이디 패턴 등 다양한 패턴을 만들 수 있다. 형식을 지정할 때 정규식을 사용 정규표현식을 이용해 정교하게 원하는 데이터 추출/삭제/변환 가능 파이썬 정규식 파이썬에서는 정규 표현식을 지원하기 위해 re(regular expression) 모듈을 제공한다. re.compile을 사용하여 정규표현식을 컴파일한다. re.compile과 re.match를 한 문장으로 작성할 수 있다. Method 목적 match() 문자열의 처음부터 정규식과 매치되는지 조사 search() 문자열 전체를 검사하여 정규식과 매치되는지 조사 findall() 정규식과 매치되는 모든 문자열 substring을 리스트로 리턴 finditer() 정규식과 매치되는 모든 문자열 substring을 반복 가능한 객체로 리턴
  1. Python
  • Y
    Yerim
[R] 탐색적 데이터 분석: 다중변수 데이터 분석
다중변수 데이터를 분석 산점도 2개의 변수로 구성된 자료의 분포를 알아보는 그래프 관측값들의 분포를 통해 2개의 변수 사이의 관계를 시각적으로 파악할 수 있는 기법 여러 변수들 간의 산점도 그룹 정보가 있는 두 변수의 산점도 그룹에 대한 정보를 알고 있다면 다른 색과 점의 모양으로 표시 → 그룹 간의 관계도 파악 상관분석 correlation anaylsis 두 변수의 상관관계 ‘두 변수가 상관 관계에 있다’고 말하는 경우 x축 변수 값이 증가하면 y축 변수 값이 비례해서 증가하거나, x축 변수 값이 증가하면 y축 변수 값이 비례해서 감소하는 경우 두 변수가 선형관계여도 얼마나 강한 선형성을 보이는지 수치상으로 나타낼 수 있어야 한다. → 상관분석 r을 피어슨 상관계수 Pearson’s correlation coefficient 또는 상관계수 correlation coefficient라고 부른다. 상관계수(corelation coefficient) : 상관관계를 수치로 나타낸 -1에서 1사이의 값
  1. R
  • Y
    Yerim
[R] 탐색적 데이터 분석: 단일변수 데이터 분석
단일변수 범주형 자료 관측값들의 종류별로 개수를 세는 것 도수분포표 막대그래프 단일변수 범주형 자료가 포함하는 있는 정보 파악 원그래프 각 자료값이 차지하는 비율 숫자로 표현된 범주형 자료 범주형 자료를 문자/문자여링 아닌 숫자로 표현하는 경우도 있다. 예시 타이타닉호의 승객들이 어떤 선실에 묵었는지 알아보기 carData 패키지의 TitanicSurvival 데이터셋 사용 탑승객의 성별, 연령대, 탑승 선실, 생존 여부 등을 담은 다중변수 데이터 단일변수 연속형 자료 평균, 중앙값
  1. R
  • Y
    Yerim
[R] 탐색적 데이터 분석
데이터 분석 과거 및 현재에 일어난 상황을 활용하여 현황을 파악하고, 앞으로 다가올 상황을 예측하거나 일어날 상황에 대해 타당한 근거 자료를 제시할 수 있도록 준비하는 과정 데이터 분석의 절차 문제 정의/계획 데이터 수집 데이터 정제/전처리 데이터 탐색 데이터 분석 결과 보고 문제 정의 및 계획 데이터 분석은 해결하려는 문제를 명확히 정의하는 것에서 시작 문제 해결을 위해 어떤 데이터를 수집하고 분석할 지 계획 가능 분석하려는 주제를 명확하고 구체적으로 설정, 용어를 이해하기 쉽게 정의 브레인스토밍 등을 활용하여 다양한 가설 설정 → 가설설정 단계에서는 최대한 가설을 많이 세운 뒤 데이터 확보 여부를 판단 분석 가능 변수를 구성 → 가설에 따라 필요한 변수를 선정 (파생변수도 고려) 분석 항목 결정
  1. R
  • Y
    Yerim
[R] 조건문
if-else 문 조건문(conditional statement): 조건에 따라 실행할 명령문 {}는 코드블록(code block)이라고 부르며, 여러 명령문을 하나로 묶어주는 역할 ifelse문 조건에 따라 선택할 값이 각각 하나씩이면 ifelse문을 사용하는 것이 편리 if-else의 반복 which() 조건에 맞는 데이터의 위치 찾기 데이터 분석을 하다 보면 자신이 원하는 데이터가 벡터나 매트릭스, 데이터프레임 안에서 어디에 위치하는지 알아야 할 때가 있음 편리하게 사용할 수 있는 함수가 which(), which.max(), which.min() 함수 which(): 조건에 맞는 갑싱 벡터 안에서 몇 번째에 위치하고 있는지 알아내는 함수 which.max(): 벡터 안에서 최댓값의 인덱스 which.min(): 벡터 안에서 최솟값의 인덱스
  1. R
  • Y
    Yerim
[R] 반복문
for문 벡터의 길이만큼 for문이 반복 for문이 한 번씩 수행될 때마다 반복 범위의 값을 하나씩 가져와 반복 변수에 저장한 뒤 코드 블록 안에 있는 명령문을 실행 어떤 변수를 계산에 사용하려면 그 변수를 먼저 어떤 값으로든 초기화한 후에 사용해야 한다. while문 for문에 비해 사용 빈도가 적기 때문에 문법을 이해하는 수준에서 간단히 학습 비교 조건을 만족하는 동안 {} 안의 명령문들을 반복 실행 영원히 실행되는 반복문을 무한루프(loop)라고 한다. 무한루프에 빠지면 컴퓨터의 작동이 멈출 수 있다. break와 next break 반복문을 중단시키는 역할을 한다. next next 다음에 오는 코드를 실행시키지 않고 다음 루프를 돈다. apply() 계열 함수 apply()함수를 이용하면 처리 속도를 향상시킬 수 있다. apply()함수는 매트릭스나데이터프레임에 있는 행들이나 열들을 하나하나 차례로 꺼내어 평균이나 합계 등을 구하는 작업을 수행하고자 할 때 유용합니다.
  1. R
  • Y
    Yerim
[R] 함수, 사용자 정의 함수
함수 함수는 어떤 값 x를 입력받아 정해진 계산을 수행한 후 그 결과값을 돌려주는 장치 함수의 매개변수 (parameter) 프로그래밍에서 함수의 입력값을 받는 변수를 매개변수(parameter)라 함 함수의 정의에 맞추어 매개변수를 입력하면 정의된 결과값을 얻을 수 있음 decreasing=FALSE와 같이 매개변수명=매개변수값의 형태로 입력 매개 변수는 필수 매개변수와 선택적 매개변수로 구분 필수 매개변수: sort() 함수에서 매개 변수 x와 같이 반드시 입력 선택적 매개변수: 사용자가 생략할 경우를 대비하여 미리 어떤 값**(기본값, default value)**을 지정 내장 함수 별도의 패키지를 설치하지 않고 사용할 수 있는 함수는 내장 함수라고 한다. R을 설치하면 기본으로 포함되어 있어 별도의 구분 작성 없이 바로 호출할 수 있다. paste() 여러 개의 문자열이나 숫자값을 결합하여 하나의 문자열로 만드는 기능 사용자 정의 함수 사용자가 스스로 만드는 함수 여러 이 반복될 때 함수를 생성하면 자동화할 때 유용하다.
  1. R
  • Y
    Yerim
[R] 데이터 개요
데이터 데이터 세트 (data set) 테이블(table): 행(row)와 열(column)으로 이루어진 nxm 형태의 데이터 세트(data set) 행: 데이터의 관측치(observation) 열: 변수(variable) 행과 열에 들어가 있는 데이터는 값(value) 데이터 구조 간 관계 및 데이터 유형 데이터 구조 R에는 벡터(vector), 행렬(matrix), 배열(array), 리스트(list), 데이터 프레임(dataframe), 팩터(factor)가 존재 벡터(vector): 한 가지 데이터 유형으로 구성된 1차원 구조의 데이터 행렬(matrix): 한 가지 데이터 유형으로 구성된 2차원 구조의 데이터 배열(array): 행렬을 n차원으로 확대 리스트(list): 숫자형 벡터, 문자형 벡터 등 여러 데이터 유형이 포함된 1차원 구조의 데이터 데이터 프레임(dataframe): 리스트를 2차원으로 확대한 구조의 데이터 데이터 자료형 숫자형(number): 숫자로만 이루어진 데이터 문자형(character): 문자로만 이루어진 데이터 논리형(logical): TRUE / FALSE 로 이루어진 데이터
  1. R
  • Y
    Yerim
[R] 변수
변수 Variable 변수는 프로그램 내에서 어떤 값을 저장해 놓을 수 있는 보관 상자의 역할 하나의 변수에는 하나의 값만 저장할 수 있다. 변수의 타입을 따로 지정하지 않는다. 변수 만들기 a라는 변수에 10이라는 값을 저장 특정 변수의 이름을 지정하고 그곳에 어떤 값을 저장하는 순간 변수가 만들어진다. alt + - 를 사용하면 <-(할당 연산자)가 자동으로 입력된다. 변수의 내용 확인 방법 1: 변수명을 입력하여 실행 → total의 값은 5050이다. 방법 2: print() 함수를 사용 → 5050이 출력된다. 방법 3: cat() 함수를 사용 → 합계 : 5050이 출력된다. R 스튜디오의 경우 R 스튜디오 환경창을 보면 현재 만들어진 변수와 저장된 값 확인 가능 변수를 이용한 산술연산 변수와 변수의 연산은 변수에 저장된 값들의 연산으로 바뀌어 실행
  1. R
  • Y
    Yerim
[R] R 스튜디오
R과 R 스튜디오 설치 R, Rstudio R: R 언어 인터프리터 Rstudio 의 사용을 편리하도록 도와주는 개발 환경(IDE) 설치 전 주의 사항 윈도우 로그인 계정명은 영어로 해야함 (한글X) R, Rstudio의 설치 경로명에 한글이 포함되지 않도록한다 OneDrive, google Drieve등 외부 클라우드와 연결된 폴더에 설치하지 않는다 R 프로그래밍을 학습하기 위해서는 소프트웨어인 R과 R 스튜디오(RStudio)를 설치 R은 프로그램을 작성하고 실행하기 위한 소프트웨어이고, R 스튜디오는 R 프로 그래밍을 편리하게 작업할 수 있도록 도움을 주는 보조 소프트웨어 R을 먼저 설치하고, 그 다음에 R 스튜디오를 설치 R 설치하기 R을 사용하려면 먼저 공식 웹사이트에서 R을 다운로드하고 설치해야 함 [Download] 항목의 [CRAN]을 클릭 → [Korea] 항목의 링크 → [Download R for Windows] 클 미러사이트 하나의 웹사이트에서만 R을 제공하면 전 세계 사용자가 몰려 이용 속도가 저하 될 수 있습니다. 이를 방지하기 위해 동일한 사이트를 여러 곳에 복사해서 사용자들을 분산시켜야 합니다. 이렇게 원래 사이트에서 복사된 사이트를 미러(Mirrors) 사이트라고 합니다, 사용자가 지리적으로 가까운 미러 사이트를 이용하면 보다 빠르게 파일을 다운로드받을 수 있습니다. [install R for the first time] 링크를 클릭 → [Download R 4.0.2 for Windows]를 클릭
  1. R
  • Y
    Yerim
[R] R언어
R언어의 특징 R 언어는 비교적 최근에 개발된 프로그래밍 언어 중 하나 R은 1993년, 뉴질랜드 오클래드 대학의 로스 이하카(Ross Ihaka)와 로버트 젠틀맨(Robert Gentleman)에 의해 통계 프로그래밍 언어인 S-PLUS의 무료 버전 형태 장점 데이터 분석에 특화된 언어 R은 통계를 포함한 데이터 분석 작업에 활용할 목적으로 개발된 언어 R은 컴파일 과정 없이도 바로 실행하여 결과를 확인할 수 있음 (인터프리터 언어) R로 작성한 것을 ‘프로그램’이 아니라 스크립트(script)라고 부름 탄탄한 사용자 커뮤니티 R은 사용자층이 두텁기 때문에 다양한 커뮤니티가 존재함 초보자를 위한 학습 자료도 풍부하게 존재함 국내 검색 사이트를 통해서 찾을 수 있는 한글 자료들이 증가하는 추세 R Tutorial: https://www.w3schools.com/r/ R-bloggers: https://www.r-bloggers.com/ R-statistics: https://www.r-project.org/ Quick-R: https://www.statmethods.net/ R Korea: https://www.facebook.com/groups/KoreaRUsers/?locale=ko_KR 다양한 패키지 제공 패키지: R의 편리한 사용을 위해 만들어 놓은 함수들의 묶음으로 설치하면 다양한 기능을 편리하게 사용할 수 있다. 데이터 분석에 필요한 거의 모든 기능을 제공 최신 이론이 발표되면 바로 R 패키지가 만들어지기 때문에 신속하게 최신 이론을 데이터 분석에 활용하는 것이 가능
  1. R
  • Y
    Yerim
[Python] 성능 최적화
성능 최적화 코드 최적화 원리와 기법 코드 최적화: 프로그램의 실행 속도를 빠르게 하거나, 메모리 사용량으 줄이는 등 프로그램의 성능을 향상시키기 위해 코드를 변경 python 11버전: 지속해서 성능 업데이트 (이전 버전에 비해 60% 성능 향상) 리스트 대신 집합 사용 가능 → 시간 복잡도를 줄일 수 있다 numpy 는 python보다 대부분의 경우 속도가 빠르다 (100000개 이상인 경우 50배 이상의 성능을 보임) 메서드 대신 슬라이싱 구현 (메서드보다 통상 8배 정도 빠르다) for문 대신 list comprehension을 사용하면 더 빠르다 반복문 연산이 있는 재귀는 느리다 → 메모이제이션 기법이나 functools의 lru_cache를 사용 필요 없는 계산을 피하려고 노력 가능하다면 결과를 캐시하거나 미리 계산해둔다 파이썬 내장 함수와 라이브러리를 사용 (대부분 최적화되어 있음) 프로파일링 도구 활용 프로그램의 성능을 측정하고 분석하는 과정 Python에서는 cProfile모듈을 사용하여 실행 시간을 측정하고 가장 많은 시간을 소모하는 부분을 분석할 수 있다
  1. Python
  • Y
    Yerim
[Python] 테스팅과 디버깅
테스팅과 디버깅 단위 테스트와 테스트 주도 개발 단위 테스트 Unit test 개별 함수나 메서드와 같은 코드의 가장 작은 단위가 예상대로 동작하는지 검증 unittest 모듈을 이용해 단위 테스트르르 작성 및 실행 가능 표준 라이브러리는 아니지만 nose2, pytest와 같은 패키지를 사용하기도 한다 테스트 주도 개발 명세 기준으로 테스트 케이스 정의 테스트 케이스를 통과할 수 있는 코드 작성 통과하면 새로운 기능 추가 테스트를 먼저 작성하고 그 테스트를 통과하도록 코드를 구현 코드의 품질 향상, 버그를 줄일 수 있다 디버깅 기법과 도구 활용 프로그램에서 오류를 찾아내고 그 원인을 알아내어 수정하는 작업 대부분의 통합개발환경(IDE)들은 디버깅 도구를 제공 h: 도움말 n: 현재 라인 실행 후 다음 라인으로 넘어간다
  1. Python
  • Y
    Yerim
[Python] 비동기 프로그래밍
비동기 프로그래밍 프로그램의 흐름을 블록하지 않고 다른 작업을 계속 진행할 수 있도로고 하나의 작업이 완료될때까지 가디라지 않고 다른 작업을 진행 동기 vs 비동기 프로그래밍 Google Colab의 환경에서는 이미 기본적으로 이벤트 루프가 실행 중입니다. 이 이벤트 루프는 Google Colab 환경의 비동기 작업을 처리하기 위해 사용됩니다. 그러므로 Google Colab에서는 asyncio.run() 함수를 직접 호출하면 “cannot be called from a running event loop”와 같은 에러 메시지가 출력됩니다. 이를 해결하려면 아래와 같은 코드를 추가해야합니다. 동기 프로그래밍 코드가 순차적으로 실행되며, 특정 작업이 완료될 때까지 프로그램이 기다리는 방식 비동기 프로그래밍 동시에 여러 작업을 진행할 수 있다 이벤트 루프와 콜백 함수 등을 활용하여 작업을 관리 코루틴 async를 붙임 함수는 코루틴 함수 await 키워드를 만나면 코루틴 실행을 잠시 중단, 코루틴 작업이 완료될 때까지 기다린 후 결과를 반환 주요 개념 async def: 코루틴 함수를 선언, 함수를 비동기적으로 실행할 수 있는 코루틴 객체 반환 await(): 코루틴의 작업이 완료될 때까지 기다린 후 결과를 반환 asyncio.run(): 코루틴을 실행하는 함수, 이벤트 루프를 생성하고 주어진 코루틴을 실행 후 이벤트 루프를 닫는다
  1. Python
  • Y
    Yerim
[Python] 예외와 오류 관리
오류 Error의 종류 문법 에러 Syntax Error 파이썬 코드를 실행하기 전에 발생하는 에러 코드 작성 시 오타나 문법적인 오류가 있을 경우 발생 인터프리터는 해당 줄에서 에러가 발생했음을 알려주며, 발견된 오류의 위치와 종류를 알려줌 이름 에러 Name Error 정의되지 않은 변수나 함수를 호출했을 때 발생 파이썬 이넡프리터는 해당 변수나 함수를 찾을 수 없다는 메시지를 출력 타입 에러 Type Error 서로 다른 타입의 변수 간 연산이나 함수 호출 시 발생 파이썬 인터프리터는 해당 연산이나 함수 호출이 불가능하다는 메시지 출력 인덱스 에러 Index Error 리스트나 튜플 등의 시퀀스 타입에서 존재하지 않는 인덱스를 호출할 때 발생 파이썬 인터프리터는 해당 인덱스를 찾을 수 없다는 메시지를 출력 키 에러 Key Error 딕셔너리에서 존재하지 않는 키를 호출했을 때 발생
  1. Python
  • Y
    Yerim
[Python] 이터레이터와 제너레이터
이터레이터 반복자 반복자 자료형과 유사한 자룧하나 이상의 항목이 포함되어 있는 자료 구조에서 값을 순차적으로 꺼낼 수 있는 객체 next()라는 함수나 객체의 __next__()라는 특수 메소드를 사용 iterable 자료형 반복자 자료형과 유사한 자료형 파이썬의 리스트, 튜플, 문자열, 집합, 파일, range 등 파이썬 내장 함수인 iter() 함수를 사용하여 반복자 객체로 변환 이터레이터가 더 이상 꺼낼 요소가 없을 때 next()를 호출하면 StopIteration 예외 발생 파이썬에서 이터레이터를 만들기 위해 __iter__와 __next__ 메서드를 구현 my_iterator 객체를 두 번사용하여 다시 순회하는 값으로 만들어 준다 내장함수 내장 함수 설명 all() 반복 가능한 항목들이 모두 참일 때만 참 반환
  1. Python
  • Y
    Yerim
[Python] 라이브러리
표준 라이브러리 자주 사용되는 표준 라이브러리 os 모듈: 운영체제와 상호작용하는 데 사용되는 함수들을 제공 sys모듈: Python 인터프리터와 상호작용하는 도구를 제공 math 모듈: 수학적인 연산을 수행하는데 필요한 함수들을 제공 datetime 모듈: 날짜와 시간을 다루는 클래스를 제공 json 모듈: JSON 형식의 데이터를 읽고 쓰는 데 사용 collections 모듈: 기본 데이터 컨테이너 외에도 다양한 데이터 컨테이너 타입 제공 requests 모듈: HTTP 요청을 쉽게 보낼 수 있는 기능을 제공 os 함수 설명 os.mkdir(디렉터리) 디렉터리를 생성한다. os.rmdir(디렉터리) 디렉터리를 삭제한다. 단, 디렉터리가 비어 있어야 삭제할 수 있다. os.remove(파일) 파일을 지운다. os.rename(src, dst) src라는 이름의 파일을 dst라는 이름으로 바꾼다. math
  1. Python
  • Y
    Yerim
[Python] 모듈과 패키지 관리
모듈 함수나 변수 또는 클래스를 모아 놓은 파이썬 파일 이미 만들어 놓은 모듈을 사용할 수 있고, 직접 만들어 사용할 수도 있다 모듈 만들기 C:\dot 디렉토리에 mod1.py 파일을 저장 파이썬 확장자 .py로 만든 파이썬 파일은 모두 모듈 모듈 불러오기 C:\dot 디렉터리로 이동 후 mod1.py 모듈을 읽을 수 있다 mod1.py 모듈을 불러오기 위해 import mod1를 입력 모듈을 불러올 때는 import 모듈_이름과 같이 .py 확장자를 제거한 이름을 사용 from 모듈_이름 import 모듈_함수의 형태로 모듈의 특정 함수를 모듈 이름 없이 사용 가능 if name == “main” if __name__ == “__main__”를 사용하지 않는 경우 mod1을 import할 때 5, 2가 출력 if __name__ == “__main__”를 사용하면 python mod1.py 처럼 파일이 실행되었을 때는 다음 문장이 실행, 모듈로 import할 경우엔 수행되지 않음 클래스나 변수 포함 모듈
  1. Python
  • Y
    Yerim
[Python] 클래스
클래스 클래스를 사용하는 이유 add함수에서 결과값을 유지하기 위해 전역변수를 사용 결괏값을 두 개 저장하기 위해서는 전역 변수가 하나 더 있어야 한다 계산기 1의 결과가 계산기 2에 영향을 미치지 않기 위해선 전역변수가 점점 더 늘어날 것이다 Calculator 클래스로 만든 별 개의 계산기는 각각의 역할을 독립적으로 수행한다 함수만 사용할 때보다 간단하게 프로그램을 작성할 수 있다 클래스와 객체 클래스 class: 똑같은 무언가를 계속만들어 낼 수 있는 설계 도면 (과자 틀) 객체 object: 클래스로 만든 피조물 (과자 틀로 찍어 낸 과자) 동일한 클래스로 만든 객체들은 서로 영향을 미치지 않는다 인스턴스 instance는 클래스로 만든 객체로 관계 위주로 설명할 때 사용한다 클래스 구조 구현된 함수는 메서드 method라고 한다 setdata 메서드는 self, first, second 3개의 입력값을 받는다 self: 파이썬 메서드의 첫 번째 매개변수 이름은 관례적으로 self를 사용 setdata(4, 2) → a.first=4 a.second = 2
  1. Python
  • Y
    Yerim
[Python] 입출력
사용자 입출력 input input은 사용자가 키보드로 입력한 모든 것을 문자열로 저장 괄호 안에 안내 문구를 입력하여 프롬프트를 띄울 수 있다 print 파일 입출력 파일 생성 파일 열기 open 함수를 사용하여 파일의 이름과 파일 열기 모드를 설정할 수 있다 경로를 표현할 때 슬래시 (/): "C:/doit/새파일.txt” 역슬래시 두 개 (\\): "C:\\doit\\새파일.txt” r + 역슬래시 (\): r"C:\doit\새파일.txt” 파일 열기 모드 파일열기모드 설명 r 읽기 모드: 파일을 읽기만 할 때 사용한다.
  1. Python
  • Y
    Yerim
Made with SlashPage