데이터 분석 트랙 17일차 (25.03.12.) TIL
[목차]
- 파이썬 종합반 정리 (1) - 출력문, 변수, 데이터 유형, 시퀸스 타입 데이터
- 파이썬 종합반 정리 (1) - 출력문, 변수, 데이터 유형, 시퀸스 타입 데이터
1. 출력문
- 정의 : 파이썬에 작성된 코드 상의 어떤 결과물을 출력해 사람이 직접 그 결과물을 볼 수 있도록 해주는 문법.
- 용도 : 코드 작성 결과 확인, 에러 수정, 점검, 데이터 시각화 등등
- 형태 : "print(출력할 내용)" # 출력하고자 하는 값, 소괄호 내부에 적힌 수행내용의 결과값이 나온다.
- 여러개의 값을 출력할 때는 쉼표를 통해 구분하여 출력한다. "print(값1, 값2)"
cf) "="의 의미 : 등호1개의 의미는 등호의 오른편에 위치한 내용을 왼편에 담는다는 의미 즉, 변수선언에 사용된다.
2. 변수
- 정의 : 어떠한 값 또는 내용을 담을 수 있는 존재, 사용 전에 선언되어야 한다.
- 변수 선언의 형태 : "변수명 = 담고자 하는 값 혹은 내용"
- 담겨있는 내용에 따라 '숫자열(int, float)', '문자열(str)', 'bool형', '리스트(List)' 등등의 데이터 타입을 갖게 된다.
- 변수의 데이터 유형을 확인하고자 할 때는 파이썬에 "type(변수명)"를 사용하면 그 유형이 출력된다. # class '자료유형'
2.1. 변수 유의사항
- 문자열 데이터는 "변수 = "데이터""와 같이 큰 따옴표, 작은 따옴표를 사용하거나 str()함수를 사용하여 변수에 자료유형을 선언할 수 있다.
- "문자열 변수 + 문자열 변수"를 출력문으로 출력하면 두 문자열이 합쳐져서 출력된다.
- 숫자열 데이터는 "변수 = 숫자"를 통해 선언하며 별도로 따옴표로 묶을 필요 없다. 혹은 int()함수를 사용하여 변수에 자료유형을 선언할 수 있다.
- 숫자열 변수끼리 사칙연산이 가능하다.[+,-,*,/,%(몫이 출력),//(나머지 값이 출력),**(제곱근)]
- 숫자열과 문자열 변수는 사칙연산 혹은 붙이기가 불가능하다! 즉, 데이터 유형을 통일해야 연산이 가능해진다.
cf) "abs(값)" # 절댓값 출력
"round(값)" # 반올림하여 그 값을 출력
- 숫자 유형 > "정수"는 "int(변수)"으로 "실수"는 "float(변수)"으로 선언이 가능하다. # 여기서 정수와 실수 변수들의 결과값은 실수형으로 나온다!
- bool형은 조건의 참 거짓 판별에 사용되는 유형으로 변수에 값(True, False) 자체를 선언하거나, 비교연산자를 활용한 내용을 담아서 변수에 선언할 수 있다.
- NaN(Not a Number, 결측값) : 데이터에서 결측치를 나타내는 특수한 값으로 주로 수치형 데이터에서 발생한다.
cf) "input(함수내용)"(입력문) : 사용자로부터 키보드로 입력을 받고자 할 때 쓰이는 프로그래밍 함수이다. [출력값에 함수 내용이 나오고 변수에 실시간으로 사용자가 값을 입력하여 선언할 수 있다.] 사용자가 입력한 내용은 숫자, 문자, 특수기호 상관없이 str()형태로 입력을 받는다!
3. 데이터 유형
- 파이썬에 사용되는 데이터 유형은 크게 4분류된다.
a. "Numeric type"(숫자 유형) : [“Integers"(정수), "Floats"(실수), "complex"(복소수, 실수와 허수의 합으로 표현한 숫자)]
b. "Dictionary"( 웹에서 자료를 송수신하는 표준 구조중 하나)
c. "Sequence Type"(순서대로 나열된 자료형) : ["List"(리스트), "Tuple"(튜플)]
d. "Set"(집합형 자료)
4. Sequence Type 데이터
- 항상 기억해야 하는 것은 이 유형의 데이터타입을 인덱싱, 특정값에 접근하고자 할 때는 "시퀸스명['특정값'or순서에 해당하는 숫자, '시작숫자:불러올 마지막 숫자 +1']"의 형식을 갖는다! 즉, 시퀸스 타입은 대괄호를 통해 인덱싱한다.
4.1. List
- 정의 : 여러 요소들을 적은 순서대로 담아두는 가변적인 유형의 데이터타입
- 형태 : "리스트 명 = ['값1', 값2]" # ['값1', 값2, .......]
a. List 인덱싱
- 리스트의 인덱싱은 리스트 내의 특정한 값이나 그 일부 범위에 해당하는 요소들을 추출하는 것을 의미한다.
- 방법 : "변수 = 리스트명[특정값 or 범위] # 여기서 "0~양의 정수"==해당 순서에 해당하는 요소, "-1~음의 정수" == 리스트의 맨 뒤부터 처음의 방향으로 해당하는 숫자의 요소를 추출한다.
b. List의 메서드
- 형태 : 기본적으로 "리스트명.메서드()"의 형태를 갖는다.
- 유의사항 : 리스트에 요소를 추가할 시 특정 순서를 지정하지 않는 한 맨 뒤 순서에 값이 추가된다.
- 메서드를 사용한 이후 리스트는 그 내용에 따라 계속 갱신된다! 즉, 원본 리스트의 내용을 메서드 기능과 그 수행내용에 따라 싹 갈아엎어 원본 리스트 명은 유지되지만 그 내용물만 바뀐다![새로운 리스트를 형성하는 것이 아니다!]
b.a. 메서드 종류 [항상 메서드를 사용하면 리스트의 내용이 갱신된다고 생각!]
"append(추가할 요소)“ : 리스트에 항목 추가 맨 마지막 순서에 값이 추가된다.
"extend(추가할 리스트)" : 리스트에 다른 리스트 모든 항목 추가
"insert(값의 삽입 위치, 값)" : 리스트의 특정 위치에 항목을 삽입
“remove(값)" : 리스트에서 특정 값(요소)을 삭제한다.
“pop(제거하고자 하는 값의 위치)" : 리스트에서 특정 위치의 값을 제거하고 반환까지 수행
- "변수명 = 리스트명.pop(값의 위치)"를 통해 사용하며 이 경우 원래 리스트가 갱신되는 것과 동시에 제거한 값도 변수명에 담아둔다.
"index(찾고자 하는 특정 값)" : 리스트에서 특정 값의 인덱스를 찾는다.
"count(카운팅 하고자 하는 특정 값)" : 리스트에서 특정 값의 개수를 세어준다.
“sort()" : 리스트의 항목들을 정렬한다.
[숫자형, 문자형으로 각각 정렬한다. 통일할 필요는 없으나 정렬은 숫자, 문자 유형의 리스트 요소들만 가능하다. 기본값은 오름차순으로 정렬하며 소괄호 내에 "reverse=True"를 적게되면 내림차순으로 정렬한다.]
“reverse()" : 리스트의 항목들을 역순으로 뒤집는다.
add) 리스트 값 삭제 : “del 리스트명[삭제하고자 하는 값의 위치]”는 특정 값을 삭제한다. “리스트명.clear()"는 리스트 내의 모든 요소를 삭제하여 빈 리스트를 만든다.
"리스트명[특정 값의 위치] = 바꾸고자 하는 값" : 리스트 내의 특정 위치의 값을 바꾸고자 하는 값으로 변경한다.
c. 슬라이싱
- 정의 : 리스트의 일부분을 출력하는 것
- 형식 : "새 리스트명 = 원본 리스트명[시작 번호:끝번호:출력 간격]" # 출력 간격은 없어도 되며, ":"는 반드시 있어야 한다. 끝 번호는 항상 출력하고자 하는 순서의 +1을 해줘야 한다. 간격을 설정할 시 첫 출력 순서의 번호+간격에 해당하는 순서의 요소가 출력된다.
add)음수를 사용 시 역순에 해당하는 순서의 요소가 출력되며 순서는 항상 가장 앞에서 뒤의 방향으로 간다. 즉, 시작 혹은 끝 순서의 리스트 요소만 지정할 뿐 출력되는 순서는 항상 가장 앞에서 뒤로 간다. 단, 출력간격 부분에 -1을 사용시 역순으로 출력하며 음수간격만큼 출력하게 된다!
4.2. Tuple
- 정의 : 여러 요소들을 순서대로 담아둔 자료형! 요소의 변경은 불가능하다![단, 튜플끼리의 결합 혹은 반복문을 통한 새로운 튜플 생성은 가능하다.]
- 형태 : "튜플명 = (요소1, 요소2)"의 형태로 생상한다. [튜플에 한해 요소들을 묶는 소괄호는 생략 가능하다.]
- 리스트 함수("list()")와 튜플 함수("tuple()")를 통해 리스트와 튜플로 각각 변경할 수 있다.
4.3. Dictionary
- 정의 : 키와 벨류로 이루어진 데이터 저장 구조이며, 중괄호로 둘러싸여있다. 각 키와 벨류 한쌍은 쉼표로 구분된다.
- 중요 : 각 키는 유일하며 중복되지 않으나, 벨류는 중복이 가능하다.
- 기본기능
"딕셔너리명={}" : 빈 딕셔너리 생성
"딕셔너리명['키1']" : 키에 해당하는 벨류를 인덱싱한다.
"딕셔너리명['키1'] = 새 벨류" : 키1에 해당하는 벨류를 수정 혹은 추가한다.
# 즉, 기존의 벨류가 없었으면 추가, 벨류가 있었으면 수정!
"del 딕셔너리명['키1']" : 키1의 벨류를 삭제한다.
- 딕셔너리 메서드
"변수명 = 딕셔너리명.keys()" : 딕셔너리 내의 모든 키를 변수명에 반환한다
. # 출력문으로 출력하면 모든 키가 출력된다.
"변수명 = 딕셔너리명.values()" : 딕셔너리 내의 모든 벨류를 변수명에 반환한다.
# 출력문으로 출력하면 모든 벨류가 출력된다.
"변수명 = 딕셔너리명.items()" : 딕셔너리 내의 모든 키와 벨류를 튜플로 구성사여 반환한다.
# 출력문으로 출력하면 모든 키와 벨류가 튜플형식으로 출력된다.
"변수명 = 딕셔너리명.get(키1)" : 지정된 키1과 밸류를 반환한다. 키가 존재하지 않으면 기본값을 반환한다.
"변수명 = 딕셔너리명.pop(키1)" : 지정된 키1과 벨류를 제거하여 변수명에 반환하고, 딕셔너리를 갱신한다.
"변수명 = 딕셔너리명.popitem() " : 딕셔너리 내의 가장 마지막 키와 벨류를 제거하여 변수명에 반환하고, 딕셔너리를 갱신한다.
cf) 오늘 공부한 것 중 함수와 관련해 유의하고자 하는 것을 적는다.
"def 함수명(변수명1, 변수명2, 변수명3)
if 변수명3 == 값1:
print(변수명1+변수명2)"
와
"def 함수명(변수명1, 변수명2, 변수명3)
if 변수명3 == 값1:
return 변수명1+변수명2"
의 경우. 둘 다 print(함수명(변수값1, 변수값2))를 사용해 출력 시
전자 # 변수값1+변수값2 후자 # 변수값1+변수값2
None
으로 나온다
즉, 전자는 조건에 부합할시 해당하는 변수1과 2에 값이 부여되어 출력되지만 변수3에는 출력값이 지정되지 않아None으로 표현된다.
반면, 후자의 경우 조건에 부합할 시 반환하는 값이 지정되어 있기에 변수값을 충족할 시 함수의 반환값이 출력되게 된다.
print는 조건에 부합할 시 새로운 출력 값을 만들뿐 조건에 해당할 시 반환하는 값을 지정하지 않는다.
return은 조건에 부합할 시 내용에 해당하는 것들을 수행한 반환값을 지정할 뿐 출력하지 않는다.
기억해두자.