한줄요약:
보안을 위한 파이썬 - 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을 이용해 분석 결과를 그래프로 시각화.