[Pandas] 결측치(NaN) 처리
·
python/Pandas | Numpy
실무 데이터는 항상 ‘깨끗하지 않다’.CSV로 가져온 고객 데이터, DB에서 추출한 로그 데이터, API로 받은 응답 등…결측치(NaN)는 생각보다 자주, 그리고 다양한 형태로 등장한다. import pandas as pdimport numpy as npdf = pd.DataFrame({ 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'], 'age': [25, np.nan, 35, 40, np.nan], 'score': [88, 92, np.nan, 70, 91]}) 결측치 확인 컬럼별 결측 여부 확인df.isnull()→ 모든 셀에 대해 True/False 마스크 반환 결측치 개수 요약df.isnull().sum()→ 각 컬럼별 NaN 개수..
[Pandas] 정렬과 순위 매기기 – sort_values, rank
·
python/Pandas | Numpy
데이터 분석 중 "누가 제일 높지?", "상위 10개만 보여줘", "등수별로 나열하고 싶어" 같은 요청은 정말 많다.이런 요청을 해결하려면 데이터를 정렬하고 순위를 매길 수 있어야 한다.Pandas는 이를 위해 매우 직관적인 API를 제공한다. 먼저 사용 예제 df를 만들겠습니다.import pandas as pddf = pd.DataFrame({ 'name': ['Alice', 'Bob', 'Charlie', 'David', 'Eva'], 'score': [88, 92, 85, 70, 92], 'age': [25, 30, 35, 40, 22]}) sort_values() – 값 기준 정렬기본 사용법df.sort_values(by='score') 내림차순 정렬df.sort_values(b..
[Pandas] Boolean Indexing (조건 필터링)
·
python/Pandas | Numpy
데이터 분석에서 우리가 가장 먼저 하고 싶은 건 "내가 원하는 조건에 맞는 데이터만 뽑아보기"다.이때 Pandas에서는 Boolean Indexing이라는 강력한 기능을 제공한다.조건에 맞는 행(row)만 필터링하는 이 방식은 단순한 것 같지만,조금만 복잡해져도 괄호 문제, 논리 연산자 오류, 결측치 때문에 자주 실수하게 된다. Boolean IndexingBoolean Indexing은 조건식을 통해 True/False 마스크를 생성하고,이 마스크를 통해 원하는 행만 필터링하는 방식이다. 우선 df를 만들어서 사용 예제를 확인해하겠습니다.import pandas as pddf = pd.DataFrame({ 'name': ['Alice', 'Bob', 'Charlie', 'David'], 'a..
[Pandas] 인덱싱 – loc vs iloc
·
python/Pandas | Numpy
데이터를 다루는 데 있어 가장 기본이자 가장 중요한 작업은 필요한 데이터를 정확히 뽑아오는 것 입니다.Pandas에서는 이를 위해 loc 와 iloc 두 가지 인덱싱 방법을 제공하는데,이 둘은 비슷해 보이지만 동작 방식과 개념이 완전히 다르다. 구분lociloc기준라벨(Label) 기반위치(Position) 기반인덱스숫자일 수도 있고 문자일수도 있음무조건 0부터 시작하는 정수 위치 사용사용법df.loc[행 라벨, 열 라벨]df.iloc[행 번호, 열 번호]예제 DataFrameimport pandas as pddf = pd.DataFrame({ 'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'score': [88, 92, 85]},..
[Pandas] Series와 DataFrame
·
python/Pandas | Numpy
Series - 1차원 데이터 구조Pandas의 1차원 데이터 구조로, 아래와 같이 값 + 인덱스로 구성되어 있습니다.import pandas as pds = pd.Series([10, 20, 30], index=['a', 'b', 'c'])print(s)출력결 values: [10, 20, 30]index: ['a', 'b', 'c']dtype: int64Serise는 단순한 리스트가 아니라 인덱스를 명확히 가진 1차이눠 벡터형 데이터 사용자 점수, 제품 가격 목록 등 단일 열 데이터를 다룰 때 주로 사용된다.user_scores = pd.Series([87, 92, 75], index=['user_1', 'user_2', 'user_3']) DataFrame - 2차원 테이블 구조DataFrame은..
Playwright vs Selenium Grid 비교 리포트
·
python/selenium
Playwright vs Selenium Grid 성능 비교 리포트Playwright vs Selenium Grid: 성능 및 구조 비교표항목Playwright (Python)Selenium Grid (Python)기본 구조단일 머신에서 멀티 인스턴스 직접 실행Hub + 분산된 노드 구조병렬 처리 방식프로세스 기반 (예: multiprocessing, pytest-xdist)여러 노드에서 분산 병렬 실행브라우저 구동 속도매우 빠름 (엔진 최적화)상대적으로 느림 (WebDriver 통신 지연)엘리먼트 탐색 속도빠름 (DOM과 밀접한 API)비교적 느림(JS 실행, polling 기반)초기 브라우저 실행 시간0.5~2초 이내2~5초 (원격 노드 연결 포함)headless 최적화Chromium, Firefox..
selenium 로봇 피하는 방법
·
python/selenium
안녕하세요. 오늘은 selenium에서 자주 발생할 수 있는 "로봇" 을 피하는 방법에 대해서 알아보겠습니다.  여러 방법이 있지만 options.add_argument로 주는 방법을 설명드리겠습니다. def find_id(e_id, browser): return browser.find_element(By.ID, e_id)options = webdriver.ChromeOptions()options.add_argument('__no__sandbox')options.add_argument('--dixable-dev-shm-usage')options.add_argument('--window-size=1080,800')options.add_argument('--incognito')chrome_service..
백준 11660 구간 합 구하기 5 (python)
·
python/algorithm
문제 N×N개의 수가 N×N 크기의 표에 채워져 있다. (x1, y1)부터 (x2, y2)까지 합을 구하는 프로그램을 작성하시오. (x, y)는 x행 y열을 의미한다. 예를 들어, N = 4이고, 표가 아래와 같이 채워져 있는 경우를 살펴보자. 1 2 3 4 2 3 4 5 3 4 5 6 4 5 6 7 여기서 (2, 2)부터 (3, 4)까지 합을 구하면 3+4+5+4+5+6 = 27이고, (4, 4)부터 (4, 4)까지 합을 구하면 7이다. 표에 채워져 있는 수와 합을 구하는 연산이 주어졌을 때, 이를 처리하는 프로그램을 작성하시오. 입력 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 ..
Recursion
·
python/algorithm
Recursion - 자기 자신을 호출하는 함수 void func(...) { func(...); } 위 함수를 실행코드로 짜보자 public class Recursive1 { public static void main(String[] args) { func(); } public static void func(int k) { System.out.println("Hello"); func(); } } 위와 같은 코드를 실행하게 되면 return문이 없기 때문에 무한 반복으로 Hello를 출력하면서 에러가 발생하게 된다. 그럼 Recursion은 항상 무한루프에 빠질까? 그건 아니다. 또 하나의 코드를 보자 public class Code02 { public static void main(String[] ar..
[python] BeautifulSoup header 설정 방법
·
python
Web Page를 크롤링을 하다보면 차단되었던 경험이 다들 한번씩은 있으실 겁니다. 이때 필요한게 User Agent지정입니다. User Agent란? 간단히 말해 소프트웨어의 식별 정보입니다. 내가 어떤 OS를 사용하는지 어떤 버전의 웹 브라이저인지를 담고 있는 정보입니다. html문서의 정보를 가져오는 간단한 코드입니다. from bs4 import BeautifulSoup as BS import request url = 'url' response = requests.get(url) print(response.status_code) print(response.text) 이렇게도 웹페이지에 접속해서 html정보를 가져올 수 있지만 웹페이지 마다 다르지만 User Agent 를 검사 시 차단당할 수 도 ..