2024/10 20

[Python] JSON 로드 시 Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

개요다음과 같은 JSON 문자열을 JSON 객체로 변환하려고 하던 중 아래와 같은 에러가 발생했다. import jsonpayload = """{ 'http://example.org/about': { 'http://purl.org/dc/terms/title': [ {'type': 'literal', 'value': "Anna's Homepage"} ] }}"""print(json.loads(payload))원인을 알아보고 해결 방법을 적어둔다.   원인문자열이 JSON 형식에 맞지 않아 파싱 에러가 발생한 것이다. https://www.rfc-editor.org/rfc/rfc7159#section-7에 의하면 JSON에서는 문자열이 큰 따옴표로 시작..

Python 2024.10.31

[Pandas] 행 수를 기준으로 DataFrame split하기

개요2024.10.08-[Pandas] read_csv - 큰 데이터프레임을 행 수를 기준으로 잘라 로드하기에서 데이터가 아주 많은 CSV 파일을 로드할 때 행 수를 기준으로 작은 조각으로 나눠서 로드하고 처리했다. 그런데 이번에는 이미 처리과정에 있는 데이터프레임을 작은 조각으로 나누고 싶다.방법을 정리해 둔다.  numpy.array_split  array_split 함수는 분할할 array와 분할할 개수에 해당하는 indices_or_sections 전달받아 indices_or_sections 만큼의 하위 array 목록을 반환한다. 분할할 array에는 DataFrame도 전달할 수 있다.import numpy as npimport pandas as pddf = pd.read_csv('DimenL..

[Python] accumulate - 누적 합 구하기

개요최근 알고리즘 문제를 풀면서 구간 합을 구할 때는 구간 합 자체를 계산하기보다는 누적 합을 이용해 계산하는 방법이 더 효율적인 방법임을 알게 되었다. 누적 합 자체는 for문을 이용해서도 구할 수 있지만, itertools.accumulate 함수를 이용하는 것이 좀 더 효율적이다.이번 글에서는 accumulate 함수 사용법에 대해서 적어둔다.  accumulateaccumulate 함수는 function으로 전달받은 함수에 대해 누적된 합계나 누적된 결과를 반환하는 iterator를 만든다.itertools.accumulate(iterable[, function, *, initial=None])기본적으로 덧셈에 해당하는 add 함수를 사용한다. initial에는 초기값을 전달할 수 있는데, ini..

Python 2024.10.29

[Linux] uniq - 중복 제거

개요Linux 상에서 여러 행에 걸친 내용을 입력으로 중복된 내용을 제거한 결과를 확인하고 싶다. 방법을 알아보자.  uniquniq 명령은 중복된 내용의 행이 연속으로 나타나는 경우, 중복으로 취급한다.uniq [-option] [filename]때문에 보통 내용을 정렬하는 sort 명령어와 함께 사용된다.   사용 예시아래와 같은 텍스트를 예시로 중복을 제거해보자.batabcappleAbcBALLABcbat 1. 중복 제거sort test.txt | uniquniq 명령은 기본적으로 중복 여부 판단시 대소문자를 구분한다. 중복 항목이었던 bat가 제거된 상태를 확인할 수 있다. 2. 중복된 항목 표시sort test.txt | uniq -d중복된 항목인 bat만 표시되는 모습을 확인할 수 있다. 3...

Linux 2024.10.28

[Python] super - 부모 클래스 접근

개요이전에 2024.04.22-[Python] 상속과 오버라이딩에서 Python에서의 클래스 상속에 대해서 정리하면서 super 함수를 언급했었다.이번 글에서는 관련 개념을 좀 더 정리해 본다.   supersuper는 부모 또는 형제 클래스에 메서드 호출을 위임하는 프록시 객체를 반환한다. 클래스에서 재정의된 메서드를 접근할 때 유용하다.class super(type, object_or_type=None)type 매개변수에는 자식 클래스의 이름을 전달하고, object_or_type에는 프록시 객체를 반환받을 객체를 전달한다. 즉. super는 type으로 전달한 클래스의 부모 클래스에 접근한다. 참고로 Python 2까지는 type과 object_or_type을 명시적으로 지정해야 했으나 Python..

Python 2024.10.25

[Pandas] read_csv - 큰 데이터프레임을 행 수를 기준으로 잘라 로드하기

개요로드해서 처리하고자 하는 데이터 파일이 큰 경우, 메모리가 부족해지는 상황이 발생할 수도 있다. 이런 경우에는 테이터를 읽어오는 시점에서 전체 데이터가 아니라 데이터 조각을 읽어와 처리를 반복하는 것으로 문제 상황을 회피할 수 있다.이번 글에서는 read_csv를 사용할 때 작은 데이터프레임 단위로 읽는 방법을 적어둔다.  chunksizePandas는 csv 뿐만 아니라 여러 형식의 데이터를 로드할 수 있도록 read_json, read_table, read_fwf 등등의 함수를 제공하는데, chunksize라는 매개변수를 전달할 수 있다.chunksize는 한 번에 읽을 데이터프레임의 행 수를 지정한다. 기본값은 전체 데이터프레임을 로드하는 의미의 None인데, 값이 전달되면 데이터프레임이 아닌 ..

[Azure] Azure OpenAI VS AWS Bedrock

개요2023.03.31-[Python] OpenAI API 사용하기에서 OpenAI의 API를 통한 생성형 AI 사용 방법에 대해서 적었는데, 그 이후 클라우드 제공 업체에서도 생성형 AI와 관련된 서비스를 제공하고 있다는 것을 알게되었다. 이번 글에서는 생성형 AI를 활용하고자할 때 고려할 수 있는 CSP 제공 생성형 AI 서비스인 Azure OpenAI, AWS Bedrock의 개념 정도만 간단히 톺아본다.  Azure OpenAIOpenAI의 언어 모델에 대한 Rest API를 제공한다. 개발자는 콘텐츠 생성, 요약, 의미 검색 및 자연어를 코드로 변화하는 등의 작업을 쉽게 처리할 수 있고, Rest API, Python 또는 Azure OpenAI Studio와 같은 웹 기반 인터페이스로 서비스에..

Azure 2024.10.23

[Azure] 가상 머신 생성

개요2024.10.21-[Azure] 구성 요소에서 Azure의 구조와 관련된 내용을 정리했는데, 이번 글에서는 AWS EC2에 해당하는 Azure 가상 머신(VM)을 생성하는 방법을 알아본다. Azure 포탈에서 진행한다.   가상 머신 생성 방법1. Azure 포탈 접근 및 리소스 만들기로 이동 2. 컴퓨팅 > 가상 머신 이동만들기 버튼을 선택한다.  3. 가상 머신 생성에 필요한 설정 지정먼저 어느 구독의 어느 리소스 그룹에 속한 자원인지 지정해야 한다.이후 인스턴스의 이름, 지역, 이미지 등의 인스턴스 정보를 지정한다. 생성한 인스턴스의 관리자 계정(root)의 이름과 접속할 방식을 결정해야 한다.추가로 인터넷에서 접속할 수 있는 포트도 지정하고, 필요하다면 다음 탭로 넘어가서 디스크, 네트워킹,..

Azure 2024.10.22

[Azure] 구성 요소

개요클라우드 관련 업무를 진행하면서 주로 AWS를 사용해왔는데, Chat GPT 등의 AI가 등장하면서 Azure에 대한 수요도 증가한 것 같다. 관련해서 Azure 서비스와 관련된 개념을 공부해두면 도움이 될 것 같아 공부한다. 이번 글에서는 Azure의 구조, 인프라와 관련된 개념에 대해 적어둔다.  물리 인프라Azure는 전 세계에 걸쳐 물리적 인프라에 해당하는 데이터 센터를 보유하고 있다. 그리고 이러한 데이터 센터를 구분하기 위해 Region, AZ(Ability Zone), Region Pair, 소버린 지역 등의 개념을 가지고 있다. 각각 정리한다. Region가깝고 대기 시간이 짧은 네트워크를 통해 연결된 데이터 센터를 하나 이상 포함하고 있는 지리적 의미.AWS에서의 Region 개념과 ..

Azure 2024.10.21

[Python] 함수의 매개변수 목록 확인하기

개요함수 내에서 매개변수에 대한 반복 작업을 하고 싶은데, 그러기 위해서는 매개변수 목록에 대한 정보가 먼저 있어야 한다. 이번 글에서는 Python에서 함수의 매개변수 목록을 얻는 방법을 적어둔다.  inspectPython inspect 모듈은 모듈, 클래스, 메서드, 함수 등과 같은 객체애 대한 정보를 얻을 때 유용한 함수를 제공한다. 클래스의 내용을 검사하거나, 메서드의 소스 코드를 얻거나, 함수의 인자 리스트를 추출하는 등이 포함된다.기본 Python 내장 모듈로 별도 설치 없이 바로 import 하여 사용할 수 있다.import inspect 아래에 함수의 인자 리스트를 추출할 때 사용하는 함수를 정리한다.  getfullargspecinspect.getfullargspec(func)함수의 매..

Python 2024.10.18
1 2