오늘의 목표는 두 개의 이미지의 유사도를 반환해 낼 거다. 1. 히스토그램 비교 가장 일반적인 방법인 히스토그램은 이미지의 각 픽셀 값의 빈도를 나타내는 그래프로, 픽셀 값들의 분포를 알 수 있다. import cv2 import numpy as np # 이미지 불러오기 img1 = cv2.imread('image1.jpg') img2 = cv2.imread('image2.jpg') # 히스토그램 계산 hist1 = cv2.calcHist([img1], [0, 1, 2], None, [256, 256, 256], [0, 256, 0, 256, 0, 256]) hist2 = cv2.calcHist([img2], [0, 1, 2], None, [256, 256, 256], [0, 256, 0, 256, 0,..
프로그래밍/Python
이미지 분석을 위한 첫걸음으로 opencv를 사용해보고자 한다. opencv는 이미지를 처리하는 오픈소스 라이브러리이다. 전체 목표는 이미지를 읽어와서 그레이스케일한 후 유사도를 반환할 것이다. 천천히 시작해 보자!! pip install opencv-python 코드를 작성하고자 하는 환경에 opencv를 설치한다. import cv2 as cv print(cv.__version__) # 4.9.0 버전이 반환된다면 아주 잘 설치가 된 것이다!! import cv2 as cv img = cv.imread("path/to/image") cv.imshow("Display window", img) k = cv.waitKey(0) # 다른 키를 누를 때 까지 이미지 보여주기 이렇게 하면 이미지를 읽어와서 보여..
데이터프레임의 특정 컬럼의 값을 일괄 변환해야할 일이 있을 때 apply()함수를 사용하게 된다. 1. 기본 문법 # 라이브러리 호출 부분 생략 def calc_ratio(row): """검색량 계산""" standard_volumn = row['standard_volumn'] standrad_ratio = row['standard_ratio'] ratio = row['ratio'] volume = standard_volumn*ratio/standard_ratio return volume # 데이터프레임 생성 부분 생략 result_df['volume'] = result_df.apply(calc_ratio, axis=1) df.apply부분을 보면 되는데, 변환하고자하는 부분을 함수로 작성하여 파라미터로..
데이터 프레임을 사용해 코드를 작성하다보면 각 row를 순회하는 로직을 되게 자주 사용하는데 할 때마다 o_o ...? 바로 코드가 나오지 않고 멍 때리게 되어서 메모해둡니다 :) 1. iterrows() for index, row in df.iterrows(): print(f'Index: {index}, A: {row["A"]}, B: {row["B"]}') 2. itertuples() for row in df.itertuples(index=False): print(f'A: {row.A}, B: {row.B}') 3. apply() def process_row(row): return f'A: {row["A"]}, B: {row["B"]}' df['Result'] = df.apply(process_row..
문제 상황 많은 코드를 작성하지도 않았다. pandas dataframe을 pyspark dataframe으로 바꾸려고 spark = SparkSession.builder.getOrCreate() df = spark.createDataFrame(items_df) 이렇게만 작성했는데 오류가 발생하였다. 오류 메세지는 제목에 있듯 C:\Users\___\AppData\Local\Programs\Python\Python311\Lib\site-packages\pyspark\sql\pandas\conversion.py:474: FutureWarning: iteritems is deprecated and will be removed in a future version. Use .items instead. for c..
map에 원하는 장소를 띄우기 위해서는 위도,경도 값이 필요하다. * 위도는 지구를 가로로 나눈 선이고, 경도는 지구를 세로로 나눈 선 현재 데이터는 도로명 주소를 가지고 있고 이를 위도,경도 값으로 바꾸려고 한다. 다양한 라이브러리가 존재하지만 geocoder가 가장 간단하고 내가 원하는 기능을 제공해서 사용해보았다. from geopy.geocoders import Nominatim geo_local = Nominatim(user_agent='South Korea') def geocoding(address): try: geo = geo_local.geocode(address) x_y = (geo.latitude, geo.longitude) return x_y except: return (0,0) ad..
이미 만들어져 있는 데이터가 아니라 데이터 프레임을 미리 생성해 두고 한 행씩 데이터를 삽입하고 싶은 경우!! 우선 빈 데이터프레임을 먼저 생성!! df1 = pd.DataFrame(columns=['컬럼1','컬럼2','컬럼3']) print(df1) 그 다음 loc를 이용하여 행을 삽입한다. df1.loc[len(df1)]=[1,2,3,4,5] print(df1) 이때 행 번호를 직접 기입해줘도 되지만 간단하게 데이터프레임의 길이를 반환해 인덱스로 지정해줬다. 끝 하루 빨리 나의 티스토리가 정상화 되었음 좋겠다 허허 티스토리 개발자들 화이팅
더보기 데이터를 다루다보면 날짜를 다룰 일이 정말 많다. 그때 사용하게 되는 것이 표준 라이브러리인 Datetime인데, 간단한 듯 하면서 계속 기억이 안나고,, 찾아보게 된다. 그래서 다시 찾지 않겠다는 마음으로 정리해보려 한다. 개념적인 내용보다는 많이 사용하는 포인트를 기록! ▼ 날짜에 더하기 빼기 가장 많이 사용하게 되는 로직이 이 날짜에서 5일 후, 일주일 전 날짜 계산해줘! 이다. 이때 사용하게 되는게 datetime의 timedelta이다. from datetime import timedelta, date basic_date = date.today() 하루 뒤 = basic_date + timedelta(days=1) 일주일 전 = basic_date - timedelta(weeks=1) ▼..