x = 5.0
print(x)
print(x*2)
5.0
10.0
x
5.0
# 출력하기
print("hello 파이썬")
hello 파이썬
a = 5
type(a)
int
a = "foo"
type(a)
str
a = 4.5
type(a)
float
# 연산은 동일한 타입끼리 해야 한다.
a = 1
'5' + a
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-7-cf388df7cb81> in <module>
1 # 연산은 동일한 타입끼리 해야 한다.
2 a = 1
----> 3 '5' + a
TypeError: can only concatenate str (not "int") to str
# 가능
a = b = c = 5
c
5
b
5
a, b, c = 5
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-11-86bbac0260b1> in <module>
----> 1 a, b, c = 5
TypeError: cannot unpack non-iterable int object
a,b,c = 5,5,5
strContents = """303고지 학살(三百三高地虐殺, 영어: Hill 303 massacre)은 한국 전쟁 와중이었던 1950년 8월 17일에 대한민국 경상북도 칠곡군 왜관읍 근교의 자고산에서 조선인민군이 미군 전쟁 포로 41명을 총살한 전쟁 범죄이다.
대구 전투가 벌어지는 동안 미 육군 제1기병사단 제5기병연대 제2대대는 자고산에서 낙동강을 도하하는 인민군에게 포위되었다. 미군 병사 대부분은 탈출하였으나, 1개 박격포소대가 인민군을 국군의 증원군으로 착각하는 바람에 붙잡히고 말았다. 인민군은 미군 포로들을 고지에서 내려보내 낙동강을 도로 건너서 후방의 포로수용소로 보내려 했지만 다른 미군들의 공격이 거세어 실패했다. 미군은 인민군의 전진을 막아냈고, 인민군은 전장을 이탈하기 시작했다. 바로 그 때 인민군 장교 중 하나가 후퇴 속도가 느려지지 않도록 포로들을 총살하라고 명령했다.
미군 측 사령부는 인민군 사령부 측에 학살 행위의 책임을 물을 것을 요구하는 라디오 방송을 내보내고 삐라를 뿌렸다. 북측에서는 자기 쪽 병사가 포로로 잡혔을 경우의 보복을 걱정하여 병사들에게 포로 취급에 관하여 보다 엄격한 지침을 내려보냈다. 현재 자고산에는 피해자 추모비가 세워져 있다."""
print(strContents)
303고지 학살(三百三高地虐殺, 영어: Hill 303 massacre)은 한국 전쟁 와중이었던 1950년 8월 17일에 대한민국 경상북도 칠곡군 왜관읍 근교의 자고산에서 조선인민군이 미군 전쟁 포로 41명을 총살한 전쟁 범죄이다.
대구 전투가 벌어지는 동안 미 육군 제1기병사단 제5기병연대 제2대대는 자고산에서 낙동강을 도하하는 인민군에게 포위되었다. 미군 병사 대부분은 탈출하였으나, 1개 박격포소대가 인민군을 국군의 증원군으로 착각하는 바람에 붙잡히고 말았다. 인민군은 미군 포로들을 고지에서 내려보내 낙동강을 도로 건너서 후방의 포로수용소로 보내려 했지만 다른 미군들의 공격이 거세어 실패했다. 미군은 인민군의 전진을 막아냈고, 인민군은 전장을 이탈하기 시작했다. 바로 그 때 인민군 장교 중 하나가 후퇴 속도가 느려지지 않도록 포로들을 총살하라고 명령했다.
미군 측 사령부는 인민군 사령부 측에 학살 행위의 책임을 물을 것을 요구하는 라디오 방송을 내보내고 삐라를 뿌렸다. 북측에서는 자기 쪽 병사가 포로로 잡혔을 경우의 보복을 걱정하여 병사들에게 포로 취급에 관하여 보다 엄격한 지침을 내려보냈다. 현재 자고산에는 피해자 추모비가 세워져 있다.
a = "파이썬"
b = "데이터 분석"
a + b
'파이썬데이터 분석'
print(a+b)
파이썬데이터 분석
txt = " 첫 줄 \n 다음줄"
txt
' 첫 줄 \n 다음줄'
print(txt)
첫 줄
다음줄
# 기본형식
"{0} {1}".format(a , b)
'파이썬 데이터 분석'
# 숫자 포멧
"{0} {0:f} {0:.2f}".format(3)
'3 3.000000 3.00'
# 천단위
"{0:,}".format(1234567890)
'1,234,567,890'
이름 = '홍길동'
트위터 = '@HongGildong'
프로필 = '이름: {0}, 트위터: {1}'.format(이름, 트위터)
print(프로필)
이름: 홍길동, 트위터: @HongGildong
# true를 int로 바꾸면.
int(True)
1
int(False)
0
# 공백을 부울린으로 바꾸면...
bool('')
False
bool('ddd')
True
# 리스트
로또 = [1,2,3,6,21,45,51]
type(로또)
list
## 튜플
로또 = (1,2,3,6,21,45,51)
type(로또)
tuple
# 튜플 + 튜플
(1,2) + (3,4)
(1, 2, 3, 4)
# 문자열 + 문자열
"12" + "34"
'1234'
# 튜플의 곱하기
(1,2) * 3
(1, 2, 1, 2, 1, 2)
# 문자열의 곱하기
"파이썬" * 3
'파이썬파이썬파이썬'
로또[3]
6
# 튜플은 값을 바꿀수 없다.
로또[3] = 8
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-45-d3a9c85cf931> in <module>
1 # 튜플은 값을 바꿀수 없다.
----> 2 로또[3] = 8
TypeError: 'tuple' object does not support item assignment
nums = (1,2,3)
a, b, c = nums
# a, b, c = nums 의 결과는 아래와 같다.
a = nums[0]
b = nums[1]
c = nums[2]
# 리스트의 선언
nums = [1,2,3,4]
# 타입
type(nums)
list
# 색인으로 가져오기
nums[3]
4
# 리스트에서 값의 추가
nums.append(5)
nums
[1, 2, 3, 4, 5]
# 변경
nums[0] = 99
nums
[99, 2, 3, 4, 5]
# 마지막 항목 제거
val = nums.pop()
val
5
nums
[99, 2, 3, 4]
# 연산
lst = [1,2] + [3,4]
lst
[1, 2, 3, 4]
# in 연산자. --> a in b
## : a가 b에 있는지 여부를 리턴.
5 in nums
False
99 in nums
True
set([1,2,2,3,2,4,5,4,5])
{1, 2, 3, 4, 5}
{2,2,2,1,3,3}
{1, 2, 3}
{'다','가', '나', '다'}
{'가', '나', '다'}
## 집합
a = {0,1,2,4,5}
b = {3,4,5,7,8}
## 합집합.
c = a|b
c
{0, 1, 2, 3, 4, 5, 7, 8}
# 교집합
a&b
{4, 5}
## 차집합
a-b
{0, 1, 2}
## 대칭차집합(xor) : 중복 원소만 제거
a^b
{0, 1, 2, 3, 7, 8}
# list 선언
nums = [1,2,3,4,5,6,7,8,9]
# index가 0~2까지인 데이터를 선택 : a:b --> a <= 고 <b 은 인덱스를 가져온다.
nums[0:2]
[1, 2]
nums[3:7]
[4, 5, 6, 7]
# 2 색인분 끝까지
nums[2:]
[3, 4, 5, 6, 7, 8, 9]
# 끝에서 2번째 항목부터 끝까지.
nums[-2:]
[8, 9]
# 슬라이스에 인덱스 범위가 벗어나는 경우.
nums[2:100]
[3, 4, 5, 6, 7, 8, 9]
# 색인은????
nums[20]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-23-6e3b2a0f6da5> in <module>
1 # 색인은????
----> 2 nums[20]
IndexError: list index out of range
다음 문자열에서 1부터 8까지 선택
숫자들 = '0123456789'
nums = [0,1,2,3,4,5,6,7,8,9]
숫자들 = '0123456789'
nums = [0,1,2,3,4,5,6,7,8,9]
숫자들[1:-1]
'12345678'
nums[1:-1]
[1, 2, 3, 4, 5, 6, 7, 8]
nums[1:9]
[1, 2, 3, 4, 5, 6, 7, 8]
## 자료구조의 길이
len(숫자들)
10
len(nums)
10
## 사전은 이름:값 쌍으로 이루어지는 자료구조이다.
프로필 = {"이름" : "홍길동" , "트위트" : "@Honggildong"}
type(프로필)
dict
# 사전은 색인으로 값을 찾을 수 없다.
# 색인으로 값을 찾는 경우 에러 발생
프로필[0]
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-33-8913270be6b3> in <module>
1 # 사전은 색인으로 값을 찾을 수 없다.
2 # 색인으로 값을 찾는 경우 에러 발생
----> 3 프로필[0]
KeyError: 0
프로필["트위트"]
'@Honggildong'
# 사전에 존재하지 않는 이름으로 값을 설정하면 새로 추가가 된다.
프로필['이메일'] = 'stonwin@korea.com'
프로필
{'이름': '홍길동', '트위트': '@Honggildong', '이메일': 'stonwin@korea.com'}
# in 연산자 --> 이름 이 있는지 여부를 확인 가능
'이름' in 프로필
True
# 사전의 get 함수(이름, 기본값) --> 사전에서 찾는 이름이 없으면 두번째 인자가 리턴된다.
프로필.get('이메일', '없음')
'stonwin@korea.com'
프로필.get('전화번호', '없음')
'없음'
# items() 함수 : 사전의 이터레이터(Iterator)를 반환: 각 항목은 이름, 값 형식으로 반환.
프로필.items()
dict_items([('이름', '홍길동'), ('트위트', '@Honggildong'), ('이메일', 'stonwin@korea.com')])
# items 사용한 for 문
for 키, 값 in 프로필.items():
양식 = "{0}은 {1} 입니다."
출력 = 양식.format(키, 값)
print(출력)
menu = {"라떼":100, "모카":200}
menu
이름은 홍길동 입니다.
트위트은 @Honggildong 입니다.
이메일은 stonwin@korea.com 입니다.
{'라떼': 100, '모카': 200}
nums = [0, 99, 11, 1, 2, 55, 3, 4, 5, 21, 8, 9]
## 정렬
sortnums = sorted(nums)
sortnums
[0, 1, 2, 3, 4, 5, 8, 9, 11, 21, 55, 99]
nums
[0, 99, 11, 1, 2, 55, 3, 4, 5, 21, 8, 9]
txt = "파이썬 안녕하세요"
sorted(txt, reverse=True)
['하', '파', '이', '요', '안', '썬', '세', '녕', ' ']
# 도움말을 볼때는 끝에 물음표. sorted?
# 현재 자료구조의 역순으로 배치 : 메모리 최적화로 인해 바로 리스트화 되지 않는다.
revText = reversed(txt)
revText
<reversed at 0x1ccbcfe5ba8>
list(revText)
['요', '세', '하', '녕', '안', ' ', '썬', '이', '파']
text = '핫둘셋넷'
nums = [2,1,4,3]
arrInt = (3,1,4,2)
tmp = zip(nums, text)
tmp
<zip at 0x1ccbd005d08>
두쌍 = list(tmp)
두쌍
[(2, '핫'), (1, '둘'), (4, '셋'), (3, '넷')]
for a, b in 두쌍:
print("{0} : {1}".format(a, b))
2 : 핫
1 : 둘
4 : 셋
3 : 넷
사전 = {}
for i, t in 두쌍:
사전[str(i)] = t
사전
{'2': '핫', '1': '둘', '4': '셋', '3': '넷'}
# if 조건
x = 1
if x < 0:
msg = '음수'
elif x == 0:
msg = '빵!'
else:
msg = '양수'
print(msg)
양수
# for 반복문
for n in [1,2,3]:
n2 = n+1
print(n2)
print('반복끝')
2
3
4
반복끝
# while 반복문
물 = 0
while 물 < 500:
물 += 100
print(물)
500
for n in [1,2,3,4,5,6,7,8,9,10]:
n2 = n+1
print(n2)
2
3
4
5
6
7
8
9
10
11
for _ in range(10):
print(_ + 1)
1
2
3
4
5
6
7
8
9
10
# range는 선언시점에 메모리에 할당되지 않는다. range변수 하나를 선언한것과 동일한 메모리 공간을 차지 한다.
range(10)
# range의 리스트화
list(range(10))
# --> 10개의 항목을 가진 리스트 생성.
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
## 1억개의 레인지 생성 --> 변수 1개 생성과 동일.
range(10**8)
range(0, 100000000)
def 홀짝(숫자):
if 숫자 % 2 == 1:
return "홀수"
else:
return "짝수"
홀짝(7)
'홀수'
홀짝(10)
'짝수'
# nums의 각 항목을 홀짝 판정.
판정 = {}
for n in nums:
판정[str(n)] = 홀짝(n)
판정
{'2': '짝수', '1': '홀수', '4': '짝수', '3': '홀수'}
def 주문하기(메뉴):
메뉴판 = {"라떼":100}
가격 = 메뉴판.get(메뉴, -1)
return 메뉴, 가격
주문하기("라떼")
('라떼', 100)
주문하기("주스")
('주스', -1)
메뉴, 가격 = 주문하기("라떼")
메뉴
'라떼'
# 매개변수에 기본 값 지정하기 : 기본값이 지정된 인자는 생략하거나 입력하거나 할 수 있다.
def 내함수(x,y,z=1.5):
if z > 1:
print(z*(x+y))
else:
print(z/(x+y))
내함수(5,6)
16.5
내함수(5,6,7)
77
def 지역함수():
a = []
for i in range(5):
a.append(i)
print(a)
지역함수()
[0, 1, 2, 3, 4]
# 함수 안에서 전역변수에 값 대입 ????
a = []
def 지역함수2():
for i in range(5):
a.append(i)
print(a)
지역함수2()
[0, 1, 2, 3, 4]
지역함수2()
[0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
## 익명함수 : lambda 함수
def 간단함수(x):
return x*2
간단함수(3)
6
익명함수 = lambda x: x*2
익명함수(3)
6
# 위 함수는 아래와 동일한 코드이다.
def to_listfun2(sum_list, f):
lt= []
for x in sum_list:
lt.append(f(x))
return lt
# 람다함수는 어떻게 사용 ? --> 함수에서 함수를 인자로 받을 필요가 있는 경우 : 나중에 pandas 등의 활용시 그룹함수등에서 많이 사용.
def to_listfun(sum_list, f):
return [f(x) for x in sum_list]
lst = [4, 6, 0, 5, 1, 9]
## 지정된 리스트의 각각의 원소 값을 두배로 계산해서 반환하세요.
to_listfun(lst, 간단함수)
[8, 12, 0, 10, 2, 18]
## 지정된 리스트의 각각의 원소 값을 1.5배로 계산해서 반환하세요.
to_listfun(lst, lambda x: x*1.5)
[6.0, 9.0, 0.0, 7.5, 1.5, 13.5]
## 지정된 리스트의 각각의 원소 값을 1.5배 한뒤 +1을 계산해서 반환하세요.
to_listfun(lst, lambda x: x*1.5 + 1)
[7.0, 10.0, 1.0, 8.5, 2.5, 14.5]
to_listfun(lst, lambda x: x>4)
[False, True, False, True, False, True]
if __name__ == "__main__":
print("main")
main
파이썬(Python) - 분석 실습 영화평점분석 (0) | 2020.12.29 |
---|---|
파이썬(Python) 분석실습 -웹로그 분석 (0) | 2020.12.29 |
파이썬(Python) 분석실습 - URL을 통한 HTML 데이터 수집 및 분석 (0) | 2020.12.29 |
파이썬(Python) 분석실습 - 웹페이지 복사 로딩 후 분석 (0) | 2020.12.28 |
파이썬(Python) 고급자료구조 (0) | 2020.12.28 |