SKS 공부 - 2025-11-04

SKS 홈으로
7회차 공부

한줄요약:
    보안을 위한 파이썬 - Pandas는 1차원 Series와 2차원 DataFrame 두 가지 핵심 데이터 구조를 제공하며, 이를 통해 Numpy 기반의 효율적인 데이터 로딩, 인덱싱, 결측값 처리, 그리고 groupby를 활용한 기초 통계 분석 및 시각화 준비를 수행합니다.
    
    					

오늘 공부한 내용:
    제공해 주신 Pandas 학습 내용을 바탕으로 Series와 DataFrame의 기본 개념, Numpy와의 연관성, 데이터 로딩, 인덱싱, 그리고 데이터 분석의 기초에 대한 요점 정리를 해드리겠습니다. 📈
    
    📌 Pandas 학습 목표 요점 정리 (Series & DataFrame)
    1. ⚙️ Numpy 복습 및 브로드캐스팅
    Numpy 파일 입출력:
    
    np.loadtxt('./data/file.csv', ...): .csv 파일 등 텍스트 데이터를 ndarray로 로드.
    
    skiprows=1: 첫 행(헤더) 건너뛰기.
    
    delimiter=',': 구분자 지정.
    
    활용: 기후 통계 분석 파일에서 최고 기온(rawData[:, -1])을 추출하고 astype(float)으로 형 변환 후, np.argmax() 등을 사용해 최대/최소 기온 데이터를 찾는 실습 진행.
    
    브로드캐스팅 (Broadcasting): 크기가 다른 배열 간에도 연산이 가능하도록 Numpy가 자동으로 배열 크기를 확장하는 기능.
    
    효율성: 파이썬 for 루프보다 훨씬 빠른 속도로 배열 연산 가능 (%%time으로 확인).
    
    np.newaxis: 배열에 새로운 축(차원)을 추가하여 브로드캐스팅 조건을 맞추거나 1차원 배열을 행/열 벡터로 변환하는 데 사용.
    
    2. 🔢 Pandas Series (1차원 데이터)
    정의: **인덱스(index)와 값(value)**이 결합된 1차원 배열 형태의 데이터 구조.
    
    구성 요소:
    
    type: 
    
    index: 행 레이블 (정수, 문자, 날짜/시간 등 사용 가능).
    
    values: 실제 데이터 (내부적으로 Numpy ndarray).
    
    dtype: 데이터 타입.
    
    생성: pd.Series(data, index=...)
    
    활용: 딕셔너리({key: value}), Numpy 배열, 리스트 등으로 생성 가능.
    
    날짜 인덱스: pd.date_range()를 사용하여 시계열 데이터를 위한 날짜 인덱스를 쉽게 생성.
    
    데이터 접근:
    
    레이블/위치: series['이름'] 또는 series[0]
    
    멀티 인덱싱: series[['이름', '성별']] (Series 반환).
    
    슬라이싱: series[0:3], series['시작':'끝'].
    
    결측값 (Missing Data):
    
    확인: np.nan으로 표현되며, pd.isnull(series), pd.notnull(series)로 확인.
    
    처리:
    
    series[pd.isnull(series)] = np.mean(series): 평균값 등으로 대체.
    
    series.fillna(0): 특정 값으로 대체.
    
    series[pd.notnull(series)]: 결측값이 아닌 데이터만 추출하여 부분집합 생성.
    
    3. 🖼️ Pandas DataFrame (2차원 데이터)
    정의: 표 형태의 2차원 데이터 구조. 행(Row) 인덱스와 열(Column) 인덱스를 가짐. (스프레드시트나 DB 테이블과 유사).
    
    생성: pd.DataFrame(data, columns=..., index=...)
    
    딕셔너리({'열이름': [값 리스트]}) 또는 리스트의 리스트([[]]) 형태로 주로 생성.
    
    구성 요소:
    
    type: 
    
    shape: (행 수, 열 수).
    
    index: 행 인덱스.
    
    columns: 열 인덱스 (컬럼 이름).
    
    values: 실제 데이터 (내부적으로 Numpy ndarray).
    
    데이터 조작 (전처리 기초):
    
    이름 변경: frm.rename(columns={'A':'name'}, index={'user_1':'customer01'}, inplace=True)
    
    열 추출: frm['name'] (결과는 Series 타입).
    
    열 추가/삭제: frm['age'] = [10, 20, 30], del frm['age'].
    
    행 추출: 슬라이싱만 가능 (frm[0:1], frm[:'customer01']).
    
    JSON 데이터 분석 (크롤링/API):
    
    urllib.request와 json.loads()로 API 응답(JSON)을 파이썬 리스트/딕셔너리로 변환.
    
    데이터프레임 변환: 리스트를 pd.DataFrame(result)로 쉽게 표 형태로 변환.
    
    중첩된 JSON 처리: carts 데이터처럼 중첩된 구조는 이중 for 루프를 사용해 데이터를 평탄화(rows.append({...}))하여 DataFrame으로 생성하는 실습 진행.
    
    기술적 통계 분석 (EDA 기초):
    
    그룹화 및 집계: frm.groupby('열이름')['집계할_열'].mean() (브랜드별 평균 상품가, 사용자별 총 구매액 등).
    
    시각화: result.plot(kind='bar', ...)와 matplotlib.pyplot을 이용해 분석 결과를 그래프로 시각화.
    
                        
노트북 전체보기
전체화면