파이썬은 다양한 데이터 패키지, 시각화 패키지, 머신러닝, 딥러닝 패키지 등을 사용할 수 있기 때문에
데이터 분석을 위해서는 반드시 파이썬 문법을 알아야 함
Colaboratory (필수)
장점 : 구글 계정만 있으면 어디서든 로그인해서 사용할 수 있다.
본인의 컴퓨터에 설치하는 것이 아니기 때문에 고사양의 환경에서도 파이썬을 작동할 수 있음
Shift + EnterCtrl + M + A (Windows 및 Linux) 또는 Command + M + A (Mac)Ctrl + M + D (Windows 및 Linux) 또는 Command + M + D (Mac)Ctrl + M + 하이픈(-) (Windows 및 Linux) 또는 Command + M + 하이픈(-) (Mac)을 누릅니다.Ctrl + M + M(Windows 및 Linux) 또는 Command + M + M (Mac)를 누릅니다.Ctrl + M + Z (Windows 및 Linux)코드를 출력시켜서 사람이 직접 볼 수 있게 해주는 문법
print() : 화면에 값을 출력할 때 사용됨
변수란 어떤 값을 담는 바구니다
num_records = 1000
print(f'총 {num_records} 명의 레코드가 분석되었습니다.')
1) 변수란? =을 사용하여 값을 저장하는 공간으로 사용 전에 선언되어야 함
# 변수 사용
print(name) # "Alice" 출력
print("나이:", age) # "나이: 25" 출력
# 변수를 사용한 연산
double_age = age * 2
print("나이의 두 배:", double_age) # "나이의 두 배: 50" 출력
2) 변수의 종류 1 : 문자열
"", '' 로 감싸서 선언.lower, .upper. .strip([chars]), .split(sep=None, maxsplit=-1) 등3) 변수의 종류 2 : 숫자열
abs(), round()4) 변수의 종류 3 : 불리언(Boolean)
True, 거짓False으로 나타내는 데 사용# Boolean 변수 선언
is_raining = True
is_sunny = False
# 비교 연산자를 사용하여 Boolean 값 비교
x = 10
y = 5
greater_than = x > y
print(greater_than) # True 출력
5) NaN (결측값)
# 0으로 나누는 연산
result = 1 / 0
print(result) # 출력: Infinity
import math
# 유효하지 않은 수학적 연산
result = math.sqrt(-1)
print(result) # 출력: nan
import pandas as pd
# NaN을 포함한 데이터프레임 생성
data = {'A': [1, 2, None],
'B': [3, None, 5]}
df = pd.DataFrame(data)
print(df)
# 출력:
# A B
# 0 1.0 3.0
# 1 2.0 NaN
# 2 NaN 5.0
6) 입력문 (input)
input()은 키보드로 사용자에게 입력을 받는 함수7) 변수 실전 예시 1 : 데이터를 담을 때
# 학생들의 성적 데이터를 변수에 할당
grade1 = 85
grade2 = 92
grade3 = 78
grade4 = 90
grade5 = 88
# 각 변수에 담긴 데이터 출력
print("첫 번째 학생의 성적:", grade1)
print("두 번째 학생의 성적:", grade2)
print("세 번째 학생의 성적:", grade3)
print("네 번째 학생의 성적:", grade4)
print("다섯 번째 학생의 성적:", grade5)
# 위의 방법 보다는 리스트, 딕셔너리 활용이 효율적임!
8) 변수 실전 예시 2 : 계산된 값을 담을 때
# 데이터를 변수에 할당
data1 = 85
data2 = 92
data3 = 78
data4 = 90
data5 = 88
# 데이터의 평균 계산
total = data1 + data2 + data3 + data4 + data5 # 모든 데이터의 합을 계산
count = 5 # 데이터의 개수를 직접 지정
average = total / count # 데이터의 평균을 계산
# 결과 출력
print("데이터 평균:", average)
# 위와 같이 사용도 가능은 하지만, 리스트 혹은 다른 자료 구조를 통해 관리하는 것이 효율적임!
9) 변수 실정 예시 3 : 머신러닝 모델구조 자체를 담을 때
# Scikit-learn 라이브러리를 활용하여 간단한 선형 회귀 모델을 변수에 할당
from sklearn.linear_model import LinearRegression
# 선형 회귀 모델 객체 생성
model = LinearRegression()
# model이라는 변수를 사용하여 선형 회귀 모델을 사용 가능
1) 다음 두 수의 합을 구하여 출력하세요.
첫번째 수 : 15
두번째 수 : 27
num1 = 15
num2 = 27
print(num1 + num2)
2) 다음 문장을 변수에 담고 출력하세요
"Python은 데이터 분석과 인공지능 분야에서 매우 인기 있는 프로그래밍 언어입니다."
sentence = "Python은 데이터 분석과 인공지능 분야에서 매우 인기 있는 프로그래밍 언어입니다."
print(sentence)
# 다양한 정답이 있을 수 있으므로 아래 답은 참고로 확인하세요!
first = 15
second = 27
print(first + second)
# 결과로 42가 출력되면 정답입니다!
>>> 42
# 다양한 정답이 있을 수 있으므로 아래 답은 참고로 확인하세요!
string = "Python은 데이터 분석과 인공지능 분야에서 매우 인기 있는 프로그래밍 언어입니다."
print(string)
# 결과로 아래 문장이 출력되면 정답입니다!
>>> 'Python은 데이터 분석과 인공지능 분야에서 매우 인기 있는 프로그래밍 언어입니다.'
1) 리스트란?
[] 대괄호를 사용하여 만든다2) 리스트의 기본 사용법
- 인덱싱 (Indexing)
리스트의 특정 위치의 값에 접근하는 방법
# 리스트 생성
numbers = [1, 2, 3, 4, 5]
# 첫 번째 요소에 접근하기 (파이썬에서는 첫번째가 0임)
first_number = numbers[0]
print("First number:", first_number)
# 두 번째 요소에 접근하기
second_number = numbers[1]
print("Second number:", second_number)
# 마지막 요소에 접근하기
last_number = numbers[-1] # 뒤에서 첫번째
print("Last number:", last_number)
# 음수 인덱스를 사용하여 역순으로 요소에 접근하기
second_last_number = numbers[-2]
print("Second last number:", second_last_number)
- 리스트의 메소드 ⭐
list변수 뒤에 붙여서 사용해줌!
- append(): 리스트에 항목을 추가⭐
- extend(): 리스트에 다른 리스트의 모든 항목을 추가
- insert(): 리스트의 특정 위치에 항목을 삽입
- remove(): 리스트에서 특정 값을 삭제
- pop(): 리스트에서 특정 위치의 값을 제거하고 반환
- index(): 리스트에서 특정 값의 인덱스를 찾기
- count(): 리스트에서 특정 값의 개수를 세기
- sort(): 리스트의 항목들을 정렬
- reverse(): 리스트의 항목들을 역순으로 뒤집기
- 참고!) **‘반환’**이라는 표현은 함수의 결과 값을 밖으로 끄집어 낸다라는 것을 의미.
- 리스트 값 삭제
del list[] : 리스트의 인덱스로 어떤 값을 삭제할 것인지 지정하여 제거remove와 결과는 같지만, 인덱스로 지정한다는 것이 다름list.clear() : 리스트 내의 모든 값을 제거- 리스트 값 변경
list[]로 원하는 위치를 인덱싱하고 값을 변경해준다.
my_list = ['apple', 'banana', 'cherry', 'date', 'elderberry']
# 리스트 값 변경하기
my_list[3] = 'dragonfruit'
print(my_list) # 출력: ['apple', 'banana', 'cherry', 'dragonfruit', 'elderberry']
- 중첩된 리스트에서 인덱싱하기
리스트 안에 대괄호로 또 다른 리스트가 중첩되어 있는 경우가 있음
이런 경우에는 인덱싱을 두번하면 됨!
# 중첩된 리스트에서 인덱싱하기
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(nested_list[1][0]) # 출력: 4 (두 번째 리스트의 첫 번째 항목)
- 리스트 실전 예시 : 간단한 데이터 연산
# 리스트를 사용한 간단한 데이터 계산 예시
grades = [85, 92, 88, 78, 90]
average_grade = sum(grades) / len(grades) # 리스트의 길이 = 요소의 개수
print("평균 성적:", average_grade)
1) 슬라이싱
# 리스트 슬라이싱의 구분
new_list = old_list[start:end:step]
velog 오류로 아래부분은 날아가서 다시 작성....😇
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 1. 일부분만 추출하기
print(my_list[2:5]) # 출력: [3, 4, 5]
# 2. 시작 인덱스 생략하기 (처음부터 추출)
print(my_list[:5]) # 출력: [1, 2, 3, 4, 5]
# 3. 끝 인덱스 생략하기 (끝까지 추출)
print(my_list[5:]) # 출력: [6, 7, 8, 9, 10]
# 4. 음수 인덱스 사용하기 (뒤에서부터 추출)
print(my_list[-3:]) # 출력: [8, 9, 10]
# 5. 간격 설정하기 (특정 간격으로 추출)
print(my_list[1:9:2]) # 출력: [2, 4, 6, 8]
# 6. 리스트 전체를 복사하기
copy_of_list = my_list[:]
print(copy_of_list) # 출력: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 7. 리스트를 거꾸로 뒤집기
reversed_list = my_list[::-1]
print(reversed_list) # 출력: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
# 리스트에서 홀수 번째 인덱스의 값들 출력하기
my_list = [10, 20, 30, 40, 50, 60, 70, 80, 90]
odd_index_values = my_list[1::2]
print("홀수 번째 인덱스의 값들:", odd_index_values) # 출력: [20, 40, 60, 80]
2) 정렬
sort() : 리스트 내의 요소들을 기본적으로 오름차순(알파벳순) 정렬할 때 사용reverse = : True일 경우 역순 배열, False일 경우 정배열 my_list.sort(reverse=False)
3) 리스트 실전 예시 : 데이터를 임의의 범위만큼 선택할 때 슬라이싱, 인덱싱
from sklearn.datasets import load_iris
# Iris 데이터셋 불러오기
iris = load_iris()
# Iris 데이터셋에서 특정 범위의 데이터 슬라이싱하기
train_data = iris.data[:100] # 인덱스 0부터 99까지의 데이터 추출
print("학습 데이터:", train_data)
test_data = iris.data[100:] # 인덱스 100부터 끝까지의 데이터 추출
print("학습 데이터:", test_data)
1) 튜플이란?
()를 사용하여 생성하는 변경 불가능한(immutable) 시퀀스(sequence) 자료형2) 튜플 인덱싱, 슬라이싱
my_tuple = (1, 2, 3, 'hello', 'world')
print(my_tuple[0]) # 첫 번째 요소에 접근
print(my_tuple[-1]) # 마지막 요소에 접근
print(my_tuple[2:4]) # 인덱스 2부터 3까지의 요소를 슬라이싱
3) 튜플에서 자주 사용하는 메서드
count(): 지정된 요소의 개수를 반환index(): 지정된 요소의 인덱스를 반환4) 튜플과 리스트의 차이점
5) 튜플→리스트로 변경, 리스트→튜플로 변경
list() : 튜플에서 리스트로 변경tuple() : 리스트를 튜플로 변경**6) 튜플 실전 예시 : 변하면 안되는 개인정보 데이터 튜플로 담기
# 데이터 표현 예시
record = ('John', 30, 'john@example.com')
1) 딕셔너리란?
{}를 사용하여 키(Key)와 값(Values)의 쌍으로 데이터를 저장하는 자료구조my_dict = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3'
}
# 많은 데이터를 담는 경우가 많아, 가독성을 위해 중괄호 내에서 줄바꿈
2) 딕셔너리 기본기
# 빈 딕셔너리 생성
empty_dict = {}
# 학생 성적표
grades = {
'Alice': 90,
'Bob': 85,
'Charlie': 88
}
# 접근하기
print(grades['Alice']) # 출력: 90
# 값 수정하기
grades['Bob'] = 95
# 요소 추가하기
grades['David'] = 78
# 요소 삭제하기
del grades['Charlie']
**3) 딕셔너리에서 자주 사용되는 메소드
keys(): 모든 키를 dict_keys 객체로 반환values(): 모든 값을 dict_values 객체로 반환items(): 모든 키-값 쌍을 (키, 값) 튜플로 구성된 dict_items 객체로 반환get(): 지정된 키에 대한 값을 반환합니다. 키가 존재하지 않으면 기본값을 반환pop(): 지정된 키와 해당 값을 딕셔너리에서 제거하고 값을 반환popitem(): 딕셔너리에서 마지막 키-값 쌍을 제거하고 반환# 딕셔너리 생성
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
# keys() 메서드 예제
keys = my_dict.keys()
print("Keys:", keys) # 출력: dict_keys(['name', 'age', 'city'])
# values() 메서드 예제
values = my_dict.values()
print("Values:", values) # 출력: dict_values(['John', 30, 'New York'])
# items() 메서드 예제
items = my_dict.items()
print("Items:", items) # 출력: dict_items([('name', 'John'), ('age', 30), ('city', 'New York')])
# get() 메서드 예제
age = my_dict.get('age')
print("Age:", age) # 출력: 30
# pop() 메서드 예제
city = my_dict.pop('city')
print("City:", city) # 출력: New York
print("Dictionary after pop:", my_dict) # 출력: {'name': 'John', 'age': 30}
# popitem() 메서드 예제
last_item = my_dict.popitem()
print("Last item popped:", last_item) # 출력: ('age', 30)
print("Dictionary after popitem:", my_dict) # 출력: {'name': 'John'}
4) 딕셔너리 실전 예시 : 데이터를 사전 처럼 저장할 때
# 제품 카탈로그
products = {
'1001': {'name': 'Keyboard', 'price': 20.99, 'stock': 50},
'1002': {'name': 'Mouse', 'price': 15.50, 'stock': 70},
'1003': {'name': 'Monitor', 'price': 199.99, 'stock': 30}
}
# 날짜별 이벤트 관리
events = {
'2024-04-01': ['Meeting with client', 'Team lunch'],
'2024-04-02': ['Presentation preparation', 'Project review'],
'2024-04-03': ['Training session', 'Code debugging']
}
1) 리스트 활용 퀴즈
my_list = [10, 20, 30, 40, 50]
# 작성한 답
print(my_list[2])
my_list = [10, 20, 30, 40, 50]
# 작성한 답
my_list.append(60)
my_list = ['apple', 'banana', 'orange', 'grape']
# 작성한 답
print(len(my_list))
my_list = ['car', 'bus', 'bike', 'train']
# 작성한 답
my_list.pop(-1)
my_list = ['red', 'green', 'blue', 'yellow']
# 작성한 답
my_list.reverse()
print(my_list)
2) 튜플 활용 퀴즈
my_tuple = (10, 20, 30, 40, 50)
# 작성한 답
print(my_tuple[2])
my_tuple = ('apple', 'banana', 'orange', 'grape')
# 작성한 답
print(len(my_tuple))
my_tuple = ('red', 'green', 'blue', 'yellow')
# 작성한 답
reversed_tuple = my_tuple[::-1]
print(reversed_tuple)
my_tuple = (1, 2, 3, 4, 5)
# 작성한 답
list(my_tuple)
my_tuple1 = ('a', 'b', 'c')
my_tuple2 = ('d', 'e', 'f')
# 작성한 답
my_tuple = my_tuple1 + my_tuple2
print(my_tuple)
3) 딕셔너리 활용 퀴즈
my_dict = {'name': 'Alice', 'age': 30, 'city': 'New York'}
# 작성한 답
print(my_dict['name'])
my_dict = {'name': 'Bob', 'age': 25, 'city': 'Los Angeles'}
# 작성한 답
my_dict['gender'] = 'male'
print(my_dict)
my_dict = {'a': 100, 'b': 200, 'c': 300}
# 작성한 답
print(len(my_dict))
my_dict = {'name': 'Charlie', 'age': 35, 'city': 'Chicago'}
# 작성한 답
del my_dict['age']