728x90

파이썬 58

[python] 날짜, 시간을 다루는 경우 datetime 모듈 대신 arrow 추천

파이썬에서 날짜, 시간 데이터를 다룰 때 주로 사용되는 모듈은 바로 datetime입니다. 그런데 사용해보신 분들은 아시겠지만, 생각보다 사용법이 직관적이지 않고 복잡합니다. 그래서 사용할 때마다 다시 구글링해서 사용법을 확인하고 적용할 때가 많습니다. 개발자들은 이런 상황을 절대 가만히 보고 있을리가 없죠. 누군가는 대안을 만듭니다. 그 대안 중 하나가 바로 arrow 모듈입니다. arrow 모듈 공식 사이트: https://arrow.readthedocs.io/en/latest/ 위 arrow 모듈 공식 사이트의 첫 소개말을 한글로 번역하자면 다음과 같습니다. "arrow는 날짜, 시간, 타임스탬프를 생성하고, 조작하고, 포맷팅하고, 전환하는 것에 있어서 사용자 친화적인 인터페이스를 제공하는 파이썬 ..

코딩/python 16:38:52

[python+pandas] 데이터프레임의 특정 컬럼을 행 인덱스로 설정하는 방법

오늘은 판다스 데이터프레임의 특정 컬럼을 행 인덱스로 설정하는 방법에 대해 소개해드리겠습니다. 아래와 같이 생긴 년월, 방문수라는 두 개의 컬럼을 가진 데이터프레임이 있다고 가정하겠습니다. 0, 1, 2, 3과 같은 정수형 위치 인덱스가 사용되고 있는 데이터프레임입니다. 여기서 만약 "년월" 컬럼을 행 인덱스로 이동시키고 싶으면, 다음과 같이 코딩해주시면 됩니다. 만약 위 데이터프레임을 df라고 한다면, set_index() 메소드를 활용하여 특정 컬럼을 행 인덱스로 지정할 수 있습니다. df = df.set_index(['년월']) 년월 컬럼이 인덱스 위치로 간 것을 확인하실 수 있습니다. 만약 다시 정수형 위치 인덱스로 바꾸고 싶다면, reset_index() 메소드를 활용하시면 됩니다. 그러면 다시..

[python+pandas] 튜플의 리스트를 데이터프레임으로 만들기

튜플의 리스트를 데이터프레임으로 간단히 변환할 수 있습니다. 다음과 같이 튜플들을 원소로 하는 리스트가 있다고 가정해보겠습니다. 대괄호 안에 소괄호로 묶인 부분, 즉 (54, 100, 483, 668)과 같은 것들이 하나의 튜플입니다. 파이썬에서 대괄호로 묶인 것은 리스트를 의미하죠. [원소, 원소, 원소, ...] -> 리스트 {key1:value1, key2:value2, ...} -> 딕셔너리 (원소, 원소, 원소, ...) -> 튜플 각 튜플은 4개의 정수를 원소로 삼고 있고, 그 튜플들은 리스트의 원소가 되는 상황입니다. 이러한 튜플들로 구성된 리스트는 판다스의 DataFrame() 메소드를 활용하면 데이터프레임으로 쉽게 변환할 수 있습니다. df = pd.DataFrame(data, colum..

[python] 파이썬 리스트에 최대 몇 개의 요소가 들어갈 수 있을까?

파이썬 개발을 하다가 파이썬 리스트에 최대 몇 개의 요소(element)가 들어갈 수 있는 지를 대략적으로 알아야 하는 상황이 생겼습니다. 구글링 해보니 방법은 간단하더군요. 표준 모듈인 sys 를 활용하면 됩니다. import sys print(sys.maxsize) 9,223,372,036,854,775,807 약 9백경 정도가 되니 어마어마하게 큰 숫자네요. 참고로 10,000조가 1경입니다. 이 숫자는 PC의 사양에 따라 다를 수 있다고 합니다. 문자열, 딕셔너리, 튜플 등에 허용되는 최대 요소의 수도 마찬가지인 것 같습니다. 제가 개발하는 프로그램에서는 이 정도 요소의 개수를 리스트에 담는 것이 허용된다면 전혀 문제가 안 될 것 같습니다. 참고자료 [1] https://stackoverflow...

코딩/python 2022.04.19 (10)

[python] 파이썬스럽게 코딩하는 법, PEP8 정리

필자가 처음으로 접했던 프로그래밍 언어는 C언어다. 윤성우의 열혈강의를 읽으면서 재밌게 코딩의 세계에 입문하게 되었던 기억이 난다. 그리고 석사 과정을 밟으면서는 matlab을 많이 사용했다. 해당 연구 분야의 시뮬레이션 코드들이 대부분 matlab으로 작성되어 있었기 때문이다. 그러나 머신러닝/딥러닝을 연구에 접목하면서부터는 matlab의 한계를 느끼기 시작했다. 대부분의 라이브러리가 유료였기 때문이다. 그래서 넘어오게 된 언어가 바로 파이썬이다. 파이썬에서는 머신러닝/딥러닝에 관한 많은 훌륭한 라이브러리가 무료다. 그리고 직장에 와서도 여전히 파이썬을 이용해서 웹 사이트와 응용 프로그램 등을 개발하고 있다. 파이썬이 필자에게 돈을 벌어다 주는 언어가 되었다. 현재 필자는 프로그래밍 언어 중 파이썬 비..

코딩/python 2022.03.15 (3)

[python] SyntaxError: Non-ASCII character '\xec' 에러 해결법

파이썬 코드를 다루다보면 다음과 같은 에러를 만날 때가 있다. SyntaxError: Non-ASCII character '\xec' in file myproject.py on line 112, but no encoding declared; 이런 경우에는 파이썬 문서 최상단에 utf-8 인코딩 관련된 코드가 없을 때 발생한다. 따라서 다음과 같은 코드를 최상단에 삽입해주면 간단하게 해결된다. # -*- coding: utf-8 -*- 파이썬 코드를 접했던 분들은 많이 봤던 친구일 것이다. 다만 '왜 저런 주석이 있지?' 하고 지우는 경우도 꽤 있었을 것이다. 필자도 그랬다.

코딩/python 2022.01.14

[python] 파이썬 예외 종류 정리(SyntaxError, TypeError, IndexError 등)

파이썬에서는 에러를 예외라고 부릅니다. 오늘은 파이썬에서 발생할 수 있는 예외들에 대해 정리해보고자 합니다. SyntaxError: 구문 오류 SyntaxError는 파이썬 문법을 지키지 않았을 때 발생하는 에러입니다. 구문 오류가 있을 때는 프로그램이 실행조차되지 않습니다. 그래서 비교적 쉽게 문제점을 발견하여 처리할 수 있습니다. 파이썬에서 for문의 시작부의 끝에는 항상 콜론을 넣어줘야합니다. 생략하면 어떤 결과가 생기는지 확인해보겠습니다. 예상한대로 SyntaxError가 발생했습니다. IndexError: 인덱스 오류 인덱스의 범위를 초과했을 때 발생하는 오류입니다. a[4]까지 밖에 없는데 a[6]을 선택하였기 때문에 IndexError가 발생했습니다. TypeError: 타입 오류 int 형..

코딩/python 2021.06.30 (1)

[python] datetime 모듈로 일, 시간, 분, 초 더하거나 빼는 방법

시차를 고려하다보면 시간을 더하거나 빼야하는 경우들이 생기곤 합니다. 파이썬에서 날짜나 시간을 조작할 때는 datetime 모듈을 자주 사용합니다. 오늘은 datetime.datetime 객체에 일, 시간, 분, 초 등을 더하거나 빼는 방법에 대해서 살펴보겠습니다. 우선 datetime.datetime.now()를 이용해서 현재 날짜와 시간을 확인해보겠습니다. 2021년 5월 18일 23시 2분 51초 839113 이네요. 그럼 여기에 5시간을 더해보겠습니다. 이때는 datetime.timedelta 객체를 활용해야 합니다. class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks..

코딩/python 2021.05.21 (2)

[python] join 함수로 리스트의 요소들 하나의 문자열로 합치기

리스트의 문자열 요소들을 하나로 합치고 싶다면 join 함수를 사용하면 됩니다. 조금 더 정확히 말하자면 문자열 객체의 join 메소드입니다. '구분자'.join(리스트) 예를 들어, a = ['문', '태', '호', '바', '보'] 라는 리스트가 있다고 가정하겠습니다. 리스트 내 5개의 요소를 모두 합쳐서 하나의 문자열로 만들고 싶다면, ''.join(a) 로 해주면 됩니다. 그러면 결과는 다음과 같이 나옵니다. 만약 문자열을 합칠때 사이사이에 -를 넣고 싶다면, 다음과 같이 해주면 됩니다. '-'.join(a) 이번에는 구분자로 /를 넣어줘볼까요? '/'.join(a) join 함수는 split 함수와 함께 많이 쓰이니 알아두시면 좋을 듯합니다. 저도 실무에서 자주 사용하고 있습니다. 관련 글 ☞..

코딩/python 2021.05.08

[python] 딕셔너리 객체의 get() 메소드 사용법

오늘은 딕셔너리 객체의 get() 메소드에 대해 설명하도록 하겠습니다. 우선 get() 메소드는 다음과 같이 사용합니다. dict.get(key, default=None) get 메소드의 리턴값은 첫번째 인자인 키의 값입니다. 무슨 말인지 모르실 분들을 위해서 예를 들어서 설명하겠습니다. 사실 무슨 말인지 이해가 안 되는 것이 정상입니다. 위와 같이 과일 종류를 키로, 가격을 값으로 갖는 딕셔너리 a가 있다고 가정하겠습니다. 이때 get() 메소드의 첫번째 인자로 하나의 키를 넣어주면 해당 키의 값을 반환해줍니다. 그런데 만약 첫번째 매개변수로 넘겨준 것이 딕셔너리의 키에 속하지 않는 것이라면 어떻게 될까요? 그러면 None 값을 반환합니다. 만약 해당 key가 없을 때 반환되는 값을 바꾸고 싶다면, g..

코딩/python 2021.04.28 (4)