패키지(라이브러리),리스트 컴프리헨션, 포맷팅, 람다 함수
| 구분 | 설명 | 주요 함수/방법 | 예시 코드 | 비고 |
|---|---|---|---|---|
| CSV 파일 불러오기 | 쉼표(,)로 구분된 CSV 파일을 데이터프레임으로 불러옴 | pd.read_csv() | df = pd.read_csv('file.csv') | |
| Excel 파일 불러오기 | 엑셀 파일을 데이터프레임으로 불러옴 | pd.read_excel() | df = pd.read_excel('file.xlsx') | |
| JSON 파일 불러오기 | JSON 형식 파일을 데이터프레임으로 불러옴 | pd.read_json() | df = pd.read_json('file.json') | |
| 텍스트 파일 불러오기 | 텍스트 파일(탭, 공백 등 다양한 구분자 가능) 불러오기 | pd.read_csv() + delimiter 옵션 | df = pd.read_csv('file.txt', delimiter='\t') | |
| CSV 파일 저장하기 | 데이터프레임을 CSV 파일로 저장 | df.to_csv() | df.to_csv('new_file.csv', index=False) | 인덱스 제외 가능 |
| Excel 파일 저장하기 | 데이터프레임을 엑셀 파일로 저장 | df.to_excel() | df.to_excel('new_file.xlsx', index=False) | 인덱스 제외 가능 |
| JSON 파일 생성 및 저장 | 딕셔너리 데이터를 JSON 형식으로 파일에 저장 | json.dump() + with open() 표준 라이브러리 함수 | python import json data = {'Name':['John'], 'Age':[30]} with open('data.json', 'w') as f: json.dump(data, f, indent=4) | with open은 파일 자동닫기 및 안전한 파일 관리 |
| 텍스트 파일 생성 및 저장 | 딕셔너리 데이터를 텍스트 형식으로 파일에 저장 (key: value 형식) | with open() + write()파일 객체 메서드 | python data = {'Name':['John'], 'Age':[30]} with open('data.txt', 'w') as f: for k,v in data.items(): f.write(str(k) + " : " + str(v) + '\n') | with open은 파일 자동닫기 및 안전한 파일 관리 |
| 구글 드라이브 마운트 | Colab에서 구글 드라이브를 연결하여 파일 접근 | from google.colab import drive + drive.mount() | python from google.colab import drive drive.mount('/content/drive') | 구글 코랩에서 파일을 직접 접근 가능 |
🤔📍잠깐 여기서! 패키지를 짚고 가자📍🤔
데이터 처리 및 분석
| 패키지명 | 설명 | 주요 기능 |
|---|---|---|
| pandas | 데이터프레임 처리 | CSV/Excel 읽기, 그룹화, 결측치 처리 등 |
| numpy | 수치 연산 처리 | 배열, 벡터 연산, 통계 |
| openpyxl | 엑셀(.xlsx) 다루기 | 셀 읽기/쓰기, 시트 생성 등 |
| csv | CSV 파일 다루기 (내장) | 파일 입출력, 행/열 분리 |
| scikit-learn | 머신러닝 라이브러리 | 분류, 회귀, 군집화, 데이터 전처리 등 |
| statsmodels | 통계모델링 및 검정 | 회귀분석, 시계열 분석, 통계 검정 |
| scipy | 과학/공학용 수치 계산 | 최적화, 적분, 선형대수, 신호처리 |
시각화
| 패키지명 | 설명 | 주요 기능 |
|---|---|---|
| matplotlib | 기본 시각화 | 선그래프, 막대그래프, 산점도 등 |
| seaborn | 고급 통계 시각화 | 상관관계 히트맵, 카운트플롯 등 |
| plotly | 대화형 그래프 | 줌, 클릭 가능한 그래프 |
딥러닝
| 패키지명 | 설명 | 주요 기능 |
|---|---|---|
| tensorflow | 딥러닝 프레임워크 | 신경망 구축, 학습, 배포 |
| pytorch | 딥러닝 프레임워크 | 동적 계산 그래프 기반 신경망 구축 |
| 항목 | 설명 | 예시 |
|---|---|---|
| f-string | f"{}"로 포맷팅 | print(f"이름: {name}, 나이: {age}세") |
| format() 함수 | {}와 .format() 사용 | print("이름: {}, 나이: {}세".format(name, age)) |
| %.포맷팅 | 옛 방식, %s, %d 등 사용 | print("이름: %s, 나이: %d세" % (name, age)) |
| 항목 | 설명 | 예시 |
|---|---|---|
| 기본 형태 | [표현식 for 변수 in 반복가능한객체(iterable)] | [x**2 for x in range(5)]→ [0, 1, 4, 9, 16] |
| 조건 포함 | [표현식 for 변수 in 객체 if 조건] | [x for x in range(10) if x % 2 == 0]→ [0, 2, 4, 6, 8] |
| 이중 for문 | [표현식 for i in A for j in B] | [(i, j) for i in range(2) for j in range(2)]→ [(0,0),(0,1),(1,0),(1,1)] |
✅일반적인 for 문 방식
numbers = [1, 2, 3, 4, 5]
squares = []
for num in numbers:
squares.append(num ** 2)
print(squares)
#[1, 4, 9, 16, 25]
✅리스트 컴프리헨션으로 변환
numbers = [1, 2, 3, 4, 5]
squares = [num ** 2 for num in numbers]
print(squares)
#[1, 4, 9, 16, 25]
| 항목 | 설명 | 예시 |
|---|---|---|
| 기본 형태 | lambda 매개변수: 표현식 | lambda x: x + 1 |
| 사용 예 | map(), filter(),sorted(),reduce() 등과 자주 함께 사용 *이름 없이 ‘한줄짜리 함수’를 만들 때 딱 좋아서, 이런 함수들의 인자로 바로 넘기기 편하기 때문 | list(map(lambda x: x*2, [1,2,3]))→ [2,4,6] |
| 항목 | 설명 | 예시 |
|---|---|---|
| 파일 목록 가져오기 | 특정 경로의 파일 이름들을 리스트로 반환 | import glob glob.glob("*.txt")→ ['a.txt', 'b.txt'] |
| 경로 + 확장자 | 하위 폴더 포함 검색 가능 | glob.glob("data/*/.csv", recursive=True) |
| 항목 | 설명 | 예시 | |
|---|---|---|---|
| 파일 및 디렉토리 관리 | 디렉토리 가져오기 | os.getcwd() | import os cwd = os.getcwd() print(cwd) |
| 디렉토리 생성 | os.mkdir() | os.mkdir("new_folder") | |
| 파일 이름 변경 | os.rename() | os.rename('sample_data/new_directory', 'sample_data/new_directory2') | |
| 파일 삭제 | os.remove() | os.remove('sample_data/data.csv') | |
| 경로 관리 | 파일 목록(경로) 가져오기 | os.listdir() | files = os.listdir('/content') |
| 경로 조작 | os.path.join() | os.path.join("data", "file.txt") |
| 항목 | 설명 | 예시 |
|---|---|---|
| 기본 사용 | 문자열을 특정 구분자로 나눔 | "a,b,c".split(",") → ['a', 'b', 'c'] |
| 공백 기준 분리 | 인자 없이 사용하면 공백 기준 | "hello world".split() → ['hello', 'world'] |
| 최대 분리 횟수 | split(구분자, 최대횟수) | "a-b-c-d".split("-", 2) → ['a', 'b', 'c-d'] |
파이썬 개인 과제 수행 중...
반복문을 작성하다보면
첫번째 의문... 어떤 건 문자열 =none 을 주고 어떤건 "" 빈 문자열을 준다. 이 이유는..?
1) converted_code = "" (개인 과제 3-2 참고)
이 변수는 문자열을 이어붙여서 새 문자열을 만드는 용도
그래서 처음부터 빈 문자열("")이어야 함
만약 None으로 초기화하면 문자열 덧셈(+=) 할 때 에러 발생
converted_code = "" # 빈 문자열로 시작
converted_code += "3" # 정상 작동, "3"
2) top_product = None (개인 과제 3-1 참고)
이 변수는 아직 값이 정해지지 않았다는 의미로 '없음'을 표시하는 용도
top_product에 문자열을 더하는 게 아니라, 딕셔너리에서 가장 많이 팔린 제품 이름(문자열) 을 대입하는 용도
즉, 나중에 top_product = "무선 이어폰" 같은 식으로 값을 교체하는 것이지, 문자열 덧셈을 하는 게 X
그래서 top_product = None을 ""로 바꿔도 큰 문제는 없지만, 보통은 아직 값이 없다는 의미로 None을 쓰는 게 더 명확
두번째 의문... 어떤건 밖에 변수를 작성해주고(위의 ⭐️ 부분 참고) 어떤건 변수를 안만들어준다... 왤까...?
(과제 3-1) top_product = None ⭐️
max_sales = 0 ⭐️
for product, sales in sales_data.items():
if sales > max_sales:
max_sales = sales
top_product = product
s = "abc" ---------------- 문자열
result = "" ---------------- 내가 반복문 밖에서 만든 만든 빈 문자열 (초기화)2️⃣
for x in s: ---------------- 반복문이 x에 하나씩 문자 할당 1️⃣
print(x) ---------------- x 출력 (자동 할당)
result += x ---------------- 내가 result에 직접 더함2️⃣
print(result) ---------------- 내가 만든 result 출력
반복문의 1️⃣for x in ...에서 x는 반복 중에 자동으로 값이 할당되는 변수라서 따로 초기화 필요❌
그러나, 2️⃣값을 누적하거나 저장하려는 변수는 반드시 초기화 필요⭕️
파이썬 과제를 하면서도... 이미 적어주신 틀 없이 백지 상태에서 작성해보라고 하면 쓸수 있을까 싶었다... 이제 고작 3주 시작했는데 이렇게 어렵다니요 ㅠㅠㅠ
그래도 걱정보단 주어진 것에 최선을 다하자. 하다보면 뭐라도 나아지겠지..☀️
파이썬 강의 복습, 조건문/반복문 확실히 이해될 때까지!
저와 다르게 문제점 구체화를 잘하신 듯 합니다! 고생하셨어요