[Python] Zip() 파이썬의 내장함수인 zip()은 여러 개의 iterable 객체를 인자로 받고, 각 객체가 담고있는 원소를 튜플 형태로 차례로 접근할 수있는 iterator를 반환한다. zip() 아래와 같이 num 리스트와 let 리스트를 zip() 함수에 인자로 넘겨서 호출이 가능하다. num = [1, 2, 3] let = ['a','b','c'] for zipper in zip(num, let) print(zipper) (1, 'a') (2, 'b') (3, 'c') ** zip() 함수로 넘기는 인자의 길이가 다를 땐 짧은 인자를 기준으로 데이터가 엮이고 나머지는 버려지기 때문에 주의해야한다. unzip zip() 함수로 엮어놓은 데이터를 다시 해체하고 싶을 땐 unpacking 연산..
[etc] 옵시디언(obsidian) 무료로 퍼블리시 하기 옵시디언은 마크다운 형식 으로 작성 할 수 있는 노트 앱이다. 원래 노트 앱으로 노션을 사용하고 있었는데, 사내망에선 노션이 접근이 안됐다. 원노트는 너무 불편하고, 대체제를 찾다보니 옵시디언이라는 소프트웨어를 선택했다. 옵시디언은 노션과 달리 로컬 환경에 저장이되어 오프라인 환경에서도 접근이 가능했다. 마크다운 형식으로 작성하기 편하고 다양한 플러그인이 많아 좋았지만, 내가 생각한 옵시디언의 단점은 노션에 비해 다른 사람에게 공유하기가 어렵다는 점이였다. 옵시디언을 퍼블리시 하려면 유료 기능을 사용했어야 했는데 무료로 퍼블리싱하는 여러가지 방법들이 있었다. 그 중 나는 my digital garden이라는 플러그인으로 퍼블리싱을 해보기로 했다...
[Python] ImportError: cannot import name 'JSONDecodeError' from 'requests.exceptions' python3.7 --> 3.10 으로 버전 업그레이드 이후 conda 명령어 사용 시 해당 에러가 발생하면서 conda 명령어가 실행되지 않았다. 알고보니 requests 라이브러리의 2.27.0 버전 이후 부터 JSONDecodeError 예외가 추가되어서, 버전이 낮아 실행이 되지 않는 것이였다. 2.27.0 이상 버전으로 재설치를 하면 해결이 된다. pip install requests==2.28.2 참고 https://community.streamsets.com/community-articles-and-got-a-question-7/import..
[Python] JSON 파일 파싱하기 데이터 교환 형식으로 JSON을 많이 사용하고 있는데, Python에서 이를 파싱하여 데이터를 처리하는 방법을 알아보고자 한다. 먼저 json 라이브러리를 import 해준다. import json 다음과 같은 JSON 데이터가 있다고 가정해보자. { "person": { "name": "John Doe", "age": 30, "address": { "city": "New York", "zipcode": "10001" }, "contacts": [ { "type": "email", "value": "john@example.com" }, { "type": "phone", "value": "555-1234" } ] } } 단일 값 파싱 하나의 값에 접근하는 방법은 다음..
[Python] Requests requests는 파이썬에서 HTTP 요청을 다루는 강력하고 사용자 친화적인 라이브러리다. 주로 웹 개발이나 API 통신과 관련된 프로젝트를 진행하는 경우 거의 필수적으로 사용된다. 간단하고 직관적인 API로 HTTP 요청을 처리하는 데 도움을 준다. request 모듈 설치 아래 명령어를 통해 간단하게 설치가 가능하다. pip install requests GET request 모듈을 사용하여 간단한 GET 요청을 보내는 방법이다. import requests url = "https://api.example.com/data" response = requests.get(url) print(response.status_code) # HTTP 상태 코드 출력 print(res..
[Python] With문 파이썬의 with 문은 자원 관리를 효과적으로 처리하기 위해 사용된다. with문을 사용하면 코드를 빠져나갈 때 자원이 자동으로 정리되기 때문에, 자원 누수를 방지하고 메모리나 파일과 같은 리소스를 효과적으로 관리 할 수 있다. 또한 예외가 발생하더라도 자원을 올바르게 해제하며, with 블록을 빠져나갈때 자원이 자동으로 정리된다. 기본적으로 파일을 열때 아래와 같이 작업을 한다면 file = open('example.txt', 'r') data = file.read() print(data) file.close() With문을 사용하면 close()를 호출 할 필요 없이 자동으로 파일이 닫힌다. with open('example.txt', 'r') as file: data = ..
[Python] 주피터 랩 설치 (JupyterLab) 주피터 랩 (JupyterLab) 이란? 코드를 블록 단위로 실행하는 주피터 노트북은, 많은 파이썬 개발자들이 사용하고 있다. 이 주피터 노트북을 개선한 형태가 바로 주피터 랩인데, 주피터 노트북처럼 데이터 사이언스, 데이터 시각화, 머신 러닝 개발 환경에 특화된 웹 형 개발 인터페이스다. 주피터 랩은 기존 주피터 노트북에 다중 탭 지원, UI, 다양한 확장 기능을 추가하여 만든 웹 애플리케이션이다. 주피터 노트북은 비교적 가볍고 간단한 인터페이스를 가지고 있으며, 사용자가 직관적이고 이해하기 쉽다. 주피터랩은 기능이 풍부한 인터페이스를 제공하며, 동시 작업과 서드파티 확장 기능과의 통합도 가능하여, 대규모 프로젝트에 적합하다. 개인의 선호도 및 프..
[Python] 주말 판별하기 파이썬에서 특정 날짜가 주말인지 평일인지 판별을 하는 방법은 다음과 같다. weekday() datatime 또는 date 객체에서 weekday() 함수를 호출하면 요일을 숫자로 리턴한다. from datetime import datetime, date today = datetime.now() # 2024-01-18 today.weekday() >> 3 요일 정보는 다음과 같다. 요일 숫자 월 0 화 1 수 2 목 3 금 4 토 5 일 6 다음과 같이 5이상이면 주말인 것을 판별할 수 있다. today = datetime(2024, 1, 20) today.weekday() >> 5 today = datetime(2024, 1, 21) today.weekday() >> 6 ..
[Python] CSV 파일 변환할 때 쌍 따옴표(double quotation) 추가하기 데이터 프레임의 전체 컬럼에 쌍 따옴표를 추가하고 싶을 땐, quoting=csv.QUOTE_ALL 옵션을 사용하면 된다. import csv df.to_csv(df, quoting=csv.QUOTE_ALL) 하지만 나는 특정 컬럼에 쌍 따옴표를 추가 후 csv 파일로 변환을 하고 싶었는데, 추가 후 변환을 하면 자꾸 쌍따옴표가 3쌍이 되서 나왔다 😭😭 이렇게 apply를 통해서 컬럼 데이터에 쌍따옴표를 추가 후 df를 출력하면 쌍따옴표가 잘 붙어있지만 import pandas as pd df = pd.DataFrame({'학번':[1, 2, 3, 4], '키':[163, 153, 175, 180], '몸무게':[..
[Numpy] 조건을 만족하는 위치의 인덱스 찾기 (np.where) pandas의 loc처럼 numpy의 np.where() 함수를 사용하면 배열 내의 특정 조건을 만족하는 원소의 index를 찾아낼 수 있다. 만약 배열 내에서 짝수인 요소의 인덱스를 찾으려면 다음과 같이 할 수 있다. import numpy as np arr = np.array([2,3,6,7,10,13,14]) np.where(arr%2==0) loc처럼 특정 조건을 만족했을 때, 대체하는 것 또한 가능하다. 요소가 짝수면 2를 반환하고 홀수면 1을 반환해 보자 arr2 = np.where(arr%2==0, 2, 1) 다음과 같이 조건에 맞는 인덱스를 찾아 수정할 수 있다. 참고 https://jimmy-ai.tistory.com/..
[Pandas] Apply 조건에 맞는 컬럼에서 여러 데이터를 변경하고 싶을 때, loc로 조건을 찾은 후 for문으로 변경하는 방법은 데이터가 많을 때, 시간이 많이 소요되기때문에 비효율적이다. 이 때 pandas에서 제공하는 apply를 사용하면, 열별 혹은 행별로 함수를 적용할 수 있기때문에, 수행 시간이 훨씬 짧고 효율적이다. 다음과 같은 데이터 프레임을 생성 후 df = pd.DataFrame({'학번':[1, 2, 3, 4], '키':[163, 153, 175, 180], '몸무게':[50, 46, 70, 68]}) '키' 컬럼 값에 'cm' 단위를 붙이고 싶으면 다음과 같이 적용이 가능하다. df['키'] = df['키'].apply(lambda x:str(x)+'cm') 적용하고 싶은 함수..
[Pandas] loc, iloc, at, iat 메소드 비교 pandas dataframe에서 임의의 위치 데이터를 추출하거나 변경하는 경우에 loc, iloc, at, iat을 사용할 수 있다. loc iloc at iat 위치 지정 X O X O 라벨명 지정 O X O X 여러개의 요소 지정 O O X X 슬라이스 표기 O O X X 샘플 데이터 프레임을 먼저 생성해준다. import pandas as pd import names from random import * age = [randint(16, 19) for i in range(0, 101)] gender = [choice(["male", "female"]) for i in range(0, 101)] name = [names.get_first..