기간: 2025.6.16 – 6.20
2차원 배열 인덱싱
arr_2d[[0, 3]][:, [0, 3]]: 교차 인덱싱 실습 → 행 먼저 선택, 열 슬라이싱[step1] arr_2d[[0, 3]], [step2] [:, [0, 3]]3차원 배열 구성
np.array([arr_3_1, arr_3_2, arr_3_3, arr_3_4])np.tile을 사용해 동일한 배열 반복 생성도 가능하지만 리스트 방식으로 직접 실습고급 인덱싱 및 슬라이싱
arr[2, 3, 1] # 특정 요소 선택
arr[:2, -2:, -2:] # 첫 두 층, 마지막 두 행, 마지막 두 열
arr[::2, :, 2] # 짝수 인덱스 층의 세 번째 열
arr[2, 1:4, 1::2] # 세 번째 층, 2~4행, 홀수 열만 선택
Series vs DataFrame 비교
| 항목 | Series | DataFrame |
|---|---|---|
| 차원 | 1차원 | 2차원 |
| 인덱싱 | 가능 | 행/열 모두 가능 |
| 자료형 | 한 가지 | 열마다 다름 |
기본 정보 탐색
df.head(), df.tail(), df.info(), df.describe() 등으로 구조, 통계 확인.shape, .columns, .index, .values 속성 이해인덱싱과 필터링
.iloc[]: 정수 기반 인덱싱.loc[]: 라벨 기반 인덱싱df[df['col'] > value], 복합 조건 (A > x) & (A < y)결측치 처리 & 정렬
dropna()fillna(), replace()sort_values(by='col')날짜와 인덱스 처리
df.set_index('날짜컬럼', inplace=True)
df.index = pd.to_datetime(df.index, format='%Y%m%d')
파일 열기 모드
| 모드 | 기능 | 파일 없을 때 |
|---|---|---|
| 'r' | 읽기 | 에러 발생 |
| 'w' | 쓰기 (초기화됨) | 새로 생성 |
| 'a' | 이어쓰기 | 새로 생성 |
| 'x' | 새 파일 생성 | 새로 생성 |
| 'r+' | 읽고 쓰기 | 에러 발생 |
| 'w+' | 읽고 쓰기 (초기화됨) | 새로 생성 |
읽기/쓰기 함수
.read(), .readline(), .readlines().write(), .writelines()Pickle 직렬화
import pickle
with open('data.pkl', 'wb') as f:
pickle.dump(data, f)
with open('data.pkl', 'rb') as f:
obj = pickle.load(f)
JSON vs Pickle
| 항목 | JSON | Pickle |
|---|---|---|
| 형식 | 텍스트 기반 | 바이너리 |
| 속도 | 느림 | 빠름 |
| 호환성 | 다양한 언어 | Python 전용 |
| 보안 | 상대적으로 안전 | 주의 필요 |
기본 설정
import matplotlib.pyplot as plt
plt.rc('font', family='Malgun Gothic') # 한글 폰트 설정
plt.rcParams['axes.unicode_minus'] = False
그래프 유형
plt.plot(x, y)plt.bar(x, y)plt.scatter(x, y)plt.hist(data)fig, axes = plt.subplots(1, 2)
axes[0].plot(...)
axes[1].bar(...)
plt.tight_layout()
plt.show()NaN 포함 평균 시각화
data[data == 0] = np.nan
avg = np.nanmean(data, axis=1)
plt.plot(avg)
pandas의 .head(), .info(), .describe() 덕분에 데이터를 빠르게 파악할 수 있어서 탐색 효율이 크게 높아짐.
df.loc과 df.iloc의 차이를 실제로 코딩하며 익힌 것이 기억에 잘 남았고, 복잡한 슬라이싱에서도 정확한 인덱싱 감을 잡아감.
시각화를 통해 결과를 바로 확인할 수 있어 데이터 이상치를 직관적으로 잡아내기 쉬웠고, 실습 과정에서 오류를 직접 찾을 수 있어 성취감을 느낌.
-파일 입출력(write, read)을 통해 데이터를 외부에 저장하고 다시 불러오는 경험이 신선하게 다가왔음.
numpy 인덱싱은 처음엔 혼란스러웠고, 특히 3차원 배열에서의 인덱스 순서가 머릿속에 잘 안 들어옴.
[층, 행, 열] 구조를 시각화 없이 상상하려니 혼란이 있었음.
arr[[0, 2], :][:, [1, 3]]와 같은 표현은 왜 두 단계로 나뉘는지를 처음엔 명확히 이해하지 못했음.
pickle을 사용해 데이터를 직렬화할 수 있는 건 알았지만, 실습 없이 넘어가서 완전히 체화되지 않음.
시각화 기능은 다시 복습하지 않으면 금방 잊어버릴 듯함. 특히 subplot 구성과 label 설정을 자주 까먹음.
pandas 기능은 많아서 실전에서 "어떤 함수가 뭐였더라?" 하는 순간이 자주 있었음. 별도로 cheatsheet를 만들 필요성 느낌.
단순히 코드를 외우는 것보다 "데이터 흐름"을 그려보며 이해하는 것이 훨씬 오래 기억된다는 걸 체감함. 특히 numpy의 다차원 배열은 눈으로 도식화해보는 습관을 들이기로 함.
pandas와 matplotlib는 계속 실습을 통해 익숙해지는 게 중요하다는 걸 느낌. 매주 mini 프로젝트나 예제를 직접 해보는 루틴을 만들 것.
matplotlib도 단독 학습보다는 실제 데이터 전처리 > 시각화 흐름 안에서 통합적으로 사용하는 연습이 더 효과적임.
나만의 시각화 템플릿과 전처리 함수들을 만들어두면 이후 프로젝트에서도 시간 단축과 반복 작업 줄일 수 있겠다는 인사이트를 얻음.
파일 입출력과 pickle/json 사용법은 다음 주부터 간단한 데이터를 저장/불러오는 실습을 추가해보기로 함.