Python Library 55

[OpenCV] Color Space 변환

OpenCV에는 수많은 변환 방법이 있습니다. 변환을 위해 사용하는 함수는 cv2.cvtColor() 입니다. ## cv2.cvtColor(src, code) img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.COLOR_BGR2GRAY는 BGR 이미지를 GRAY로 바꿉니다. 반대로 cv2.COLOR_GRAY2BGR은 GRAY 이미지를 BGR로 바꿉니다. cv2.COLOR_BGR2HSV, cv2.COLOR_HSV2BGR도 있으므로 상황에 맞춰서 사용하면 됩니다. BGR을 GRAY로 바꾸기 위해서는 각 픽셀마다 BGR의 평균으로 맞춰야 하지만, 사람 눈은 초록색에 민감하기 때문에 미세한 조정이 필요합니다. OpenCV에서는 BGR2GRAY에서 비율을 0.299*R + 0...

[OpenCV] 이미지 읽기, 보기, 저장하기

CV 라이브러리를 import 합시다. import cv2 1. 이미지 읽기 ## cv2.imread(fileName, flag) img = cv2.imread('lena.jpg', cv2.IMREAD_COLOR) lena.jpg를 BGR color로 읽습니다. cv2.imread는 fileName, flag를 인수로 받습니다. 이미지 읽기의 flag는 3가지 종류가 있습니다. cv2.IMREAD_COLOR : 이미지 파일을 COLOR로 읽습니다. 투명한 부분은 무시하며, Default 값입니다. RGB 값으로 읽는 것이 아닌, BGR 값으로 읽습니다. cv2.IMREAD_GRAYSCALE : 이미지 파일을 Grayscale로 읽습니다. 실제로 이미지 처리에서 중간 단계로 많이 사용합니다. cv2.IMR..

[Matplotlib - Python] Plotting with pandas and seaborn

Line Plots s = pd.Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10)) s.plot() Series 데이터를 plot한 모습입니다. df = pd.DataFrame(np.random.randn(10, 4).cumsum(0), columns=['A', 'B', 'C', 'D'], index=np.arange(0, 100, 10)) df.plot() DataFrame을 그려넣은 모습입니다. Bar Plots fig, axes = plt.subplots(2, 1) data = pd.Series(np.random.rand(16), index=list('abcdefghijklmnop')) data.plot.bar(ax=axes[0], ..

[Matplotlib - Python] A Brief matplotlib API Primer

import matplotlib.pyplot as plt import numpy as np data = np.arange(10) data plt.plot(data) Figures and Subplots figure을 사용하여 matplotlib 객체를 넣을 수 있습니다. fig = plt.figure() ax1 = fig.add_subplot(2, 2, 1) ax2 = fig.add_subplot(2, 2, 2) ax3 = fig.add_subplot(2, 2, 3) fig add_subplot에서 해당 파라미터(n, x, y)의 의미는, n x n의 격자에서 x, y에 넣어라 라는 뜻입니다. ax3.plot(np.random.randn(50).cumsum(), 'k--') fig 3번째에 해당 그림을 ..

[Pandas - Python] Pivot Tables and Cross-Tabulation - pivot_table(), crosstab()

데이터는 다음과 같습니다. tips[:6] total_billtipsmokerdaytimesizetip_pct 016.991.01NoSunDinner20.059447 110.341.66NoSunDinner30.160542 221.013.50NoSunDinner30.166587 323.683.31NoSunDinner20.139780 424.593.61NoSunDinner40.146808 525.294.71NoSunDinner40.186240 이후 pivot_table을 day와 smoker에 대해 설정하고, 함수를 적용하면 tips.pivot_table(index=['day', 'smoker']) sizetiptip_pcttotal_bill daysmoker FriNo2.2500002.8125000.151..

[Pandas - Python] 지금까지의 예시 + 코드에 대한 설명

s = pd.Series(np.random.randn(6)) s[::2] = np.nan s 0 NaN 1 0.050009 2 NaN 3 0.852965 4 NaN 5 -0.023493 dtype: float64 랜덤으로 6개의 숫자를 생성한 후, s에 Series로 할당했고, 2배 간격으로 0, 2, 4의 row에 NaN을 넣었습니다. s.fillna(s.mean()) 0 0.293160 1 0.050009 2 0.293160 3 0.852965 4 0.293160 5 -0.023493 dtype: float64 s의 평균을 fillna를 통해 넣었습니다. 또 다른 예시를 봅시다. states = ['Ohio', 'New York', 'Vermont', 'Florida', 'Oregon', 'Nevad..

[Pandas - Python] Data Aggregation - agg() (데이터 종합)

df key1key2data1data2 0aone-0.2047081.393406 1atwo0.4789430.092908 2bone-0.5194390.281746 3btwo-0.5557300.769023 4aone1.9657811.246435 이때 key1을 기준으로 그룹화 한 뒤, data1에 해당하는 데이터를 연산할 수 있습니다. grouped = df.groupby('key1') grouped['data1'].quantile(0.9) key1 a 1.668413 b -0.523068 Name: data1, dtype: float64 grouped.describe() data1data2 countmeanstdmin25%50%75%maxcountmeanstdmin25%50%75%max key1 a3.00..

[Pandas - Python] GroupBy Mechanics - groupby() (그룹으로 묶기)

우선 데이터를 생성하겠습니다. df = pd.DataFrame({'key1' : ['a', 'a', 'b', 'b', 'a'], 'key2' : ['one', 'two', 'one', 'two', 'one'], 'data1' : np.random.randn(5), 'data2' : np.random.randn(5)}) df key1key2data1data2 0aone-0.2047081.393406 1atwo0.4789430.092908 2bone-0.5194390.281746 3btwo-0.5557300.769023 4aone1.9657811.246435 이때 data1열을 key1을 기준으로 그룹으로 묶겠습니다. grouped = df['data1'].groupby(df['key1']) grouped ..

[Pandas - Python] Reshaping with Hierarchical Indexing - stack(), unstack() (계층적 인덱싱의 구조 변환)

data = pd.DataFrame(np.arange(6).reshape((2, 3)), index=pd.Index(['Ohio', 'Colorado'], name='state'), columns=pd.Index(['one', 'two', 'three'], name='number')) data numberonetwothree state Ohio012 Colorado345 result = data.stack() result state number Ohio one 0 two 1 three 2 Colorado one 3 two 4 three 5 dtype: int32 result.unstack() numberonetwothree state Ohio012 Colorado345 여기까지는 지금까지 공부한 내용으로..