4주차 정리
데이터 분석 실습 요약
01. 데이터 가공 및 분석 기본
01-01. DataFrame과 Series 이해하기
- DataFrame: 2차원 데이터 구조 (표 형태).
- Series: 1차원 데이터 구조 (열 형태).
구분설명
DataFrame | pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) |
Series | pd.Series([1, 2, 3], name='example_column') |
01-02. 데이터 불러오기, 저장하기
- 데이터를 다양한 포맷에서 불러오고 저장합니다.
기능 | 코드 예시 |
CSV 불러오기 | pd.read_csv('data.csv') |
Excel 저장 | df.to_excel('data.xlsx', index=False) |
01-03. 조건에 맞는 데이터 추출
- 조건 필터링으로 원하는 데이터 선택.
기능 | 코드 예시 |
조건 필터링 | df[df['Age'] > 30] |
01-04. 데이터 가공_인덱스, 행, 열
- 데이터의 행(row), 열(column), 인덱스를 다룹니다.
기능 | 코드 예시 |
행 선택 (loc) | df.loc[0:2, 'A':'B'] |
열 선택 (iloc) | df.iloc[:, [0, 1]] |
01-05. 데이터 가공_결측값 처리
- 결측값(null)을 처리합니다.
기능 | 코드 예시 |
결측값 확인 | df.isnull().sum() |
결측값 채우기 | df.fillna(0) |
01-06. 데이터 가공_타입 변환
- 데이터 타입을 변환하여 일관성 유지.
기능 | 코드 예시 |
타입 확인 | df.dtypes |
타입 변환 | df['A'] = df['A'].astype(float) |
01-07. 데이터 가공_날짜 다루기
- 날짜 데이터를 처리합니다.
기능 | 코드 예시 |
날짜 변환 | df['Date'] = pd.to_datetime(df['Date']) |
연도 추출 | df['Year'] = df['Date'].dt.year |
01-08. 데이터 가공_고급기능 (apply, map, 문자열 다루기)
- 데이터를 유연하게 가공합니다.
기능 | 코드 예시 |
apply 활용 | df['A'] = df['A'].apply(lambda x: x**2) |
문자열 다루기 | df['A'].str.upper() |
01-09. 데이터 가공_데이터 결합
- 데이터를 병합하거나 연결합니다.
기능 | 코드 예시 |
데이터 결합 | pd.merge(df1, df2, on='key') |
01-10~01-11. 데이터 집계_분포와 통계량 / groupby
- 데이터를 요약하거나 그룹화합니다.
기능 | 코드 예시 |
통계량 확인 | df.describe() |
그룹화 | df.groupby('key').sum() |
01-12~01-14. 데이터 재구조화
- 데이터를 변형하여 재구조화.
기능 | 코드 예시 |
피벗 테이블 | df.pivot_table(values='A', index='B') |
스택/언스택 | df.stack() |
02. 데이터 시각화
02-01. matplotlib과 seaborn 이해하기
- matplotlib: 기본 그래프 작성.
- seaborn: 고급 시각화 제공.
기능 | 코드 예시 |
matplotlib 활용 | plt.plot(x, y) |
seaborn 활용 | sns.scatterplot(data=df, x='A', y='B') |
02-02. matplotlib과 seaborn으로 유형별 그래프 그리기
- 다양한 시각화 유형을 학습합니다.
그래프 유형 | 코드 예시 |
막대 그래프 | sns.barplot(data=df, x='A', y='B') |
히스토그램 | plt.hist(df['A']) |
요약
- 데이터 가공, 집계, 시각화의 기본기를 탄탄히 다질 수 있는 단계.
- pandas, matplotlib, seaborn의 주요 기능 학습.
1. 크롬을 통한 데이터 수집
Selenium과 WebDriver Manager를 사용해 크롬 브라우저를 실행하고 데이터 수집을 시작합니다.
# 필수 라이브러리 설치
pip install webdriver-manager selenium
# 크롬 드라이버 설정 및 브라우저 실행
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
browser = webdriver.Chrome(ChromeDriverManager( ).install( ))
browser.get("https://www.naver.com") # 네이버로 이동
2. 요소 찾기 (By.CLASS_NAME)
By 모듈을 사용해 웹 요소를 찾을 수 있습니다. 가장 많이 사용된 메서드는 By.CLASS_NAME
from selenium.webdriver.common.by import By
# 클래스 이름으로 요소 찾기
element = browser.find_element(By.CLASS_NAME, "some-class-name" )
3. 단일 요소 vs 다수 요소 찾기
- 단일 요소: find_element
- 다수 요소: find_elements
# 단일 요소 가져오기
element = browser.find_element(By.CLASS_NAME, "single-class-name" )
# 다수 요소 가져오기
elements = browser.find_elements(By.CLASS_NAME, "multiple-class-name" )
4. 컨테이너와 반복 처리
가져온 다수 요소(find_elements)를 컨테이너로 정리하고, for문을 통해 각 요소를 처리할 수 있습니다.
containers = browser.find_elements(By.CLASS_NAME, "container-class" )
for elem in containers:
print(elem.text) # 각 요소의 텍스트 출력
네이버 부동산, 구글 뉴스, 논문 자료를 활용한 데이터를 수집하여 전처리 이후 csv파일로 저장
ex _ 논문 데이터(DB)
Numpy & Pandas
1. Pandas 특징
- 패키지 이름 유래: Panel Data Analysis의 약자.
- 역할: 데이터 조작 및 분석 도구, 특히 테이블 형식 데이터(DataFrame) 처리에 특화됨.
- 장점:
- SQL과 유사한 데이터 조작 가능 (CRUD: Create, Read, Update, Delete).
- Numpy 기반으로 빠른 연산 성능 제공, 직관적
- 대용량 데이터 처리에서 Excel보다 우수.
2. Pandas 주요 함수 정리
(1) 데이터 로드 및 저장
함수설명
read_csv() | CSV 파일 읽기 |
read_excel() | Excel 파일 읽기 |
to_csv() | CSV 파일로 저장 |
to_excel() | Excel 파일로 저장 |
(2) 데이터 확인
함수설명
df.shape | 데이터프레임의 (행, 열) 구조 |
df.info() | 데이터 요약 정보 확인 |
df.columns | 컬럼 이름 확인 |
df.dtypes | 각 컬럼 데이터 타입 확인 |
df.head() | 상위 5개 데이터 확인 |
(3) 값 정렬
함수설명
df.sort_values() df.sort_values('a', ascending=False) |
데이터 정렬 데이터 정렬(내림차순) |
(4) 데이터 조작
작업함수
특정 컬럼/행 삭제 | df.drop(['컬럼'], axis=1) |
특정 컬럼 이름 변경 | df.rename(columns={'A':'B'}) |
(5) 중복 관리
작업함수
행 제거하기 | df.drop([3], inplace=True) |
컬럼 제거하기 | df.drop('etc', axis=1, inplace=True) |
(6) df.loc[ ]
특정 값 조회 | df.loc['row1', 'col1'] | 'row1' 인덱스의 'col1' 값 조회 |
특정 행 조회 | df.loc['row1'] | 'row1' 인덱스의 전체 행 조회 |
특정 열 조회 | df.loc[:, 'col1'] | 모든 행에서 'col1' 값 조회 |
여러 값 조회 | df.loc[['row1', 'row2'], ['col1', 'col2']] | 'row1', 'row2'에서 'col1', 'col2' 조회 |
(7) Boolean Indexing
조건 필터링 | df[df['A'] > 15] | A 값이 15보다 큰 행 조회 |
여러 조건 조합 | df[(df['A'] > 15) & (df['B'] < 60)] | A > 15이고 B < 60 조건 필터링 |
(8) filter( )를 이용한 검색
특정 컬럼 필터링 | df.filter(['A'], axis=1) | 'A' 컬럼만 선택 |
특정 행 필터링 | df.filter(['row1', 'row3'], axis=0) | 'row1', 'row3' 행만 선택 |
패턴 매칭 필터링 | df.filter(like='A', axis=1) | 컬럼 이름에 'A' 포함된 컬럼 필터링 |
(9) 데이터 추가
행 추가 | df.loc['new_row'] = [70, 80] | 'new_row'라는 행 추가 |
컬럼 추가 | df['C'] = [100, 110, 120] | 'C'라는 새 컬럼 추가 |
3. 통계 함수 요약
함수설명
count | null 제외 데이터 개수 |
min/max | 최소/최댓값 |
sum | 합계 |
mean | 평균 |
median | 중앙값 |
quantile | 분위수 |
var | 분산 |
std | 표준편차 |
describe | 요약 통계량 출력 |
ex)