[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..
[Python] TypeError: 'str' object does not support item assignment 데이터 프레임 데이터의 특정 위치값을 변경 해야했다. 데이터 값은 문자열이였는데, 문자열의 인덱스 값을 아래와 같이 바로 수정하려고했을때 다음 에러가 발생했다. 문자열은 리스트처럼 인덱스 접근은 가능하지만 수정은 불가능했다. 문자열에서 특정 위치의 아이템을 변경하고싶다면 replace를 사용해야했다. test = 'hello world' 다음과 같은 문자열을 정의하고 첫번째 위치의 h를 a로 변경하고싶다면 test.replace(test[0], 'a') 위와같이 replace를 사용해 변경해주면 된다. 참고 https://dduniverse.tistory.com/entry/python-T..
[Pandas] 컬럼 데이터 값 합치기 https://heywantodo.tistory.com/268 [Pandas] 컬럼 데이터 값 분리하기 (str.split, str.get) [Pandas] 컬럼 데이터 값 분리하기 (str.split, str.get) pandas에서 컬럼의 데이터 값을 분리해서 새로운 컬럼으로 추가하고 싶을때, str.split과 str.get을 사용하면 분리 후 컬럼 추가가 가능하다. 컬럼 값 heywantodo.tistory.com 앞선 포스팅에서 컬럼 데이터 값을 분리하여 새로운 컬럼을 생성했다. 그렇다면 나뉘어진 컬럼을 합치는 방법은 없을까하여 찾아보니 분리하는 것 보다 더 간단했다. 아래와 같이 데이터 프레임이 있는 경우 다음과 같은 코드로 합칠 수 있다. date_df..
[Pandas] 컬럼 데이터 값 분리하기 (str.split, str.get) pandas에서 컬럼의 데이터 값을 분리해서 새로운 컬럼으로 추가하고 싶을때, str.split과 str.get을 사용하면 분리 후 컬럼 추가가 가능하다. 컬럼 값 분리하기 테스트 하기 위한 임의 데이터 프레임을 생성해준다. import pandas as pd start_date = pd.to_datetime('2023-01-01') end_date = pd.to_datetime('2023-12-31') dates = pd.date_range(start_date, end_date, freq='M') df = pd.DataFrame({"date":dates}) df['date'] = pd.to_datetime(df['date']..
[Pandas] group by 했을 때 key외의 다른 컬럼 나오게하기 pandas로 데이터프레임을 group by 했을 때, key로 지정한 컬럼과 집계함수외 다른 컬럼이 데이터 프레임에 출력이 되어야하는데 어떤 방법을 써도 되지가 않았다. 그래서 열심히 서치를 하다가 발견한 방법은 agg를 사용하는 방법이다. 아래와 같이 임의의 데이터 프레임을 생성해주고 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_name(gender=g) for g in gende..
[Pandas] 데이터 프레임 날짜 다루기 날짜 생성하기 pandas에서 제공하는 date_range를 사용하면 날짜를 생성 할 수 있다. date_range(start='시작 날짜', end='마지막 날짜', freq='단위', ... ) freq의 경우 일 단위로 생성할 것인지 월 단위로 생성할 것인지를 정해준다. (D: 일 단위/ M: 월 단위/Y: 연 단위) 예를 들어 2023년 1월 1일부터 2023년 12월 30일까지의 날짜를 생성해보자 start_date = pd.to_datetime('2023-01-01') end_date = pd.to_datetime('2023-12-31') dates = pd.date_range(start_date, end_date, freq='D') 월 단위로도 생성..
[Python] Yaml 파일 불러오기 SQLAlchemy에서 사용할 db 커넥션 pool을 생성하는데, DB 연결 정보와 같은 민감 정보를 yaml 파일에 저장해놓고 그걸 불러와서 사용했다. 먼저 다음과 같이 config.yaml 파일을 생성해준다. db_config: db_url: "mysql+pymysql://localhost:3306/fastapi_db?charset=utf8mb4" db_pool_recycle: 900 db_echo: True db_pool_size: 1 db_max_overflow: 1 db 커넥션 pool을 만들 파이썬 파일 하나를 생성한 후 yaml 파일을 사용하기 위해 파일 경로를 지정할 os 라이브러리와 yaml 라이브러리를 import 해준다. import os, ya..
[Python] SQLAlchemy SQLAlchemy란? 상업적으로 많이 사용되고있는 SQL 툴킷이며 Object Relational Mapper(ORM)이다. 클래스를 데이터베이스에 매핑할 수 있어서, 개체 모델과 데이터베이스 스키마를 완전히 분리된 방식으로 개발 할 수 있다. 🤔ORM (Object Relational Mapper) 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑해주는 것을 말한다. 각 테이블 또는 구분하고자 하는 데이터 단위로 객체를 구현하고, 데이터 간의 관계를 형성한다. 객체 지향적인 코드로 인해 더 직관적이고 비지니스 로직에 더 집중할 수 있게 도와준다. SQLAlchemy의 레이어 구조는 다음과 같다. 그렇다면 ORM을 사용하는 이유는 무엇일까? SQL 없이 OOP 언어..
[FastAPI] FastAPI 알아보기 FastAPI? 파이썬 3.6부터 제공되는 비교적 최근에 등장한 웹 프레임워크 기존에 잘 알려져있는 파이썬 웹 프레임워크로는 비교적 가벼운 웹 개발이라면 Flask를 사용했고, 조금 더 볼륨이 있는 프로젝트라면 Django를 사용했다. 이 가운데 비교적 조작법은 단순하면서 성능적으로 우세함을 보장한다는 FastAPI가 등장했다. FastAPI는 현대적이고 빠르며, 파이썬 표준 타입에(Type Annotation) 기초한 웹 프레임워크다. FastAPI의 특징은 다음과 같다. 자동 스웨거 (Swagger) 지원 ==> API 문서를 자동으로 생성 풍부한 자유도 내부에서 Starlette과 Pydantic을 사용 큰 커뮤니티, 아직은 작은 생태계 FastAPI 사용하..
[Python] 이차원 리스트 출력하기 이차원 리스트의 요소를 출력하기 위한 방법에 대해 알아보고자 한다. 이차원 리스트를 먼저 생성해준다. a = ['a','b','c','d'] b = ['1','2','3','4'] c = ['A','B','C','D'] lst = [a,b,c] lst 특정 값에 접근하기 위해서는 세로 인덱스와 가로 인덱스를 지정해주면 된다. 만약에 '2'를 출력하고 싶다면 아래와 같이 할 수 있다. lst[1][1] '2' 요소를 하나씩 가져오고 싶다면 반복문을 이용하여 가져올 수 있다. for a,b,c,d in lst: print(a,b,c,d)