2. 데이터수집을 위한 기초 파이썬
파이썬 기초 문법 이해하기
변수와 자료형
숫자의 연산
a = 1
b = 5
print(a + b) // 결과값 : 6
c = a - b
print(c) // 결과값 : 4
c = b % 2 // % 연산자는 나머지를 계산
print(c) // 결과값 : 1
c = b // 2 // //연산자는 몫을 계
print(c) // 결과값 : 2
문자의 연산
- 파이썬은 문자의 연산도 가능하다.
- 자료형을 맞춰주어야 한다.
a = "Hello" b = "World" print(a + b) // 결과값 : HelloWorld // + 연산자를 사용하면 문자와 문자가 공백 없이 붙는다.
문자는 곱하기도 가능하다.
print("hello"*3) // 결과값 : hellohellohello
문자와 숫자 더하기
a = 100
b = "원"
# 이때, 100원을 출력하고 싶다면?
str(a) + b // 같은 자료형으로 맞춰준다.
// 숫자와 문자를 더하면 '에러'가 발생한다.
입력문
변수A = input("입력안내문")
- 실행창에서 유저에게 "입력안내문"을 보여주며 직접 데이터를 입력받는다
- 입력받은 데이터는 변수A에 저장된다.
- 이때, 입력받은 데이터로 숫자 연산을 하려면 `숫자로 형변환` 해줘야 한다.
# 입력 연습하기
name = input("이름을 입력해주세요 : ")
age = input("나이를 입력해 주세요 : ")
print("이름은", name)
print("나이는", age)
age = int(age) # age에 들어있는 값은 int 8이 아닌 str "8"이므로
# 자료형을 형변환 해주어야 한다.
g_age = age - 1
print("만 나이는",g_age)
문자열 기본 이해하기
파이썬은 문자열(String)을 제어할 수 있는 강력한 문법들이 많이 있다. 따라서 데이터 수집기를 만들때 매우 유용함.
인덱스
전체 텍스트에서 특정 문자 하나를 가지고 올때 주로 사용
- 문자열 데이터는
index(순서)
와value(값)
으로 저장된다.string1 = "브이넥 라이트 다운 베스트" string2 = " 25,990원 " print(string1) print(string2) print(string1[0]) print(string1[1]) print(string1[2]) ''' 이때 결과값은 ============= 브 이 넥 ============= '''
마이너스 인덱싱
- - 를 앞에 붙일 경우, 뒤에서부터 인덱싱이 가능하다.
print(string1[-1])
print(string1[-2])
print(string1[-3])
'''
이때 결과값은
=============
트
스
베
=============
'''
인덱싱 에러
이때 문자열의 인덱싱을 넘어가는 숫자를 인덱싱할 경우
IndexError: string index out of range
가 발생한다.
print(string1[20]) # 인덱스넘버 20는 변수 string1의 개수보다도 크다.
문자열의 슬라이싱(slicing)
문자열[index1 : index2]
잘라서 특정 문자열을 가져오고싶을 때 사용한다.
- 콜론( : )을 통해 원하는 특정 문자만 잘라낼 수 있는 문자열 슬라이싱이 가능하다.
- 이때, index1부터 index2 - 1까지의 문자만 나타낸다.
- 콜론의 앞을 비워놓으면 처음부터 index2 - 1까지를, 뒤를 비워놓으면 index1부터 끝까지를 슬라이싱할 수 있다.
- 마이너스(-) 슬라이싱도 가능하다.
- 이때, 절대값이 큰 숫자가 먼저 와야 한다.
다양한 문자열 함수 활용하기
문자열 변환함수 replace
문자열.replace("A", "B")
문자열의 A를 B로 바꾸는 기능
string1 = "브이넥 라이트 다운 베스트"
print(string1.replace("라이트", "헤비"))
print(string1)
'''
결과값
=========================
브이넥 헤비 다운 베스트
브이넥 라이트 다운 베스트
=========================
'''
- 하지만 이러한 replace함수를 쓴다고 해서 값이 변하지는 않는다.
- 바꾼 데이터를 지속하고 싶다면 다시 데입시켜주어야 한다.
string1 = string1.replace("라이트", "헤비")
print(string1)
'''
결과값
=========================
브이넥 헤비 다운 베스트
=========================
'''
공백 제거 함수 strip
문자열.strip()
- 공백을 제거해주는 함수
- 문자열의 앞 뒤에 있는 공백/줄바꿈을 모두 없애준다.
string2 = " 25,990원 " print(string2.strip()) print(string2) ''' 결과값 ========================= 25,990원 25,990원 ========================= '''
- 이때, 컴퓨터가 인식하기 쉽게 문자열에서 특정 문자(,)를 없애주고 싶다면?
```python
string2 = strip() # 공백 제거하기
string2 = string2.replace(",", "") # , 제거하기
string2 = string2[:-1] # '원' 제거하기
print(string2) # 결과값은 25990
- 이때, 제거하는 과정을 좀더 간략하게 하려면?
string2 = string2.strip().replace(",","")[:-1]
리스트의 기본과 활용
name1 = "인간1"
name2 = "인간2"
name3 = "인간3"
print(name1, name2, name3)
n개의 데이터에는 n개의 변수가 필요하게 된다.
이는 몹시 불편하다. n이 10만이 될 경우 10만개의 변수를 선언할 수는 없지 않은가?
그래서 리스트가 필요하다.
HumanList = ["인간0", "인간1", "인간2", "인간3", "인간4", "인간5", "인간6", "인간7", "인간8", "인간9", "인간10", "인간11"]
print(HumanList)
'''
결과창 ==========================
['인간0', '인간1', '인간2', '인간3', '인간4', '인간5', '인간6', '인간7', '인간8', '인간9', '인간10', '인간11']
================================
'''
- 이때, 사람 하나하나를 빼고 싶다면?
- 문자열에서 사용한 인덱싱 방법을 사용하면 된다.
print(HumanList[0]) print(HumanList[1]) ''' 결과창 ========================== 인간0 인간1 ================================ '''
- 인덱싱이 가능하므로 슬라이싱도 가능하다.
- 리스트에서의 슬라이싱은 긴 리스트를 작은 리스트로 바꿔준다.
HumanList = ["인간0", "인간1", "인간2", "인간3", "인간4", "인간5", "인간6", "인간7", "인간8", "인간9", "인간10", "인간11"]
SmallList = HumanList[1:3]
print(SmallList)
SmallList = HumanList[-4:-1]
print(SmallList)
SmallList = HumanList[3:]
print(SmallList)
SmallList = HumanList[:4]
print(SmallList)
'''
결과창 ==========================
['인간1', '인간2']
['인간8', '인간9', '인간10']
['인간3', '인간4', '인간5', '인간6', '인간7', '인간8', '인간9', '인간10', '인간11']
['인간0', '인간1', '인간2', '인간3']
================================
'''
리스트에 데이터를 넣어보기
리스트.append("추가할데이터")
- append를 통해 데이터를 추가할 경우, 추가된 데이터는 리스트의 가장 마지막 인덱스로 들어가게 된다.
HumanList = ["인간0", "인간1", "인간2", "인간3", "인간4", "인간5"] print(HumanList) HumanList.append("이방인1") print(HumanList) HumanList.append("이방인2") print(HumanList) ''' 결과창 ========================== ['인간0', '인간1', '인간2', '인간3', '인간4', '인간5'] ['인간0', '인간1', '인간2', '인간3', '인간4', '인간5', '이방인1'] ['인간0', '인간1', '인간2', '인간3', '인간4', '인간5', '이방인1', '이방인2'] ================================ '''
#### 데이터를 삭제해보기
> del 리스트[n]
- 리스트에서 n번째 인덱스에 해당하는 데이터가 삭제된다.
- 이는 내가 원하는 위치의 데이터를 삭제하기에 용이하다.
```python
HumanList = ["인간0", "인간1", "인간2", "인간3", "인간4", "인간5"]
print(HumanList)
del HumanList[0]
print(HumanList)
del HumanList[0]
print(HumanList)
'''
결과창 ==========================
['인간0', '인간1', '인간2', '인간3', '인간4', '인간5']
['인간1', '인간2', '인간3', '인간4', '인간5']
['인간2', '인간3', '인간4', '인간5']
================================
'''
데이터의 개수 알아보기
len(리스트)
- 리스트에 들어간 데이터의 개수를 알려준다.
HumanList = ["인간0", "인간1", "인간2", "인간3", "인간4", "인간5"] print(len(HumanList)) ''' 결과창 ========================== 6 ================================ '''
이때 다른 시도를 한번 해보자.
```python
HumanList = ["인간0", "인간1", "인간2", "인간3", "인간4", "인간5"]
print(len(HumanList[0]))
'''
결과창 ==========================
3
================================
'''
- 이는 HumanList의 인덱스 0에 해당하는 "인간0" 이라는 문자열의 길이를 출력한 것이다.
횟수로 반복하기
for i in range(a, b, c):
~
- a~(b-1)번만큼 c를 간격으로 ~를 반복하기
for abc in range(0, 10, 2):
print(abc)
print("반복문을 배워봅시다")
'''
결과창 ==========================
0
반복문을 배워봅시다
2
반복문을 배워봅시다
4
반복문을 배워봅시다
6
반복문을 배워봅시다
8
반복문을 배워봅시다
================================
'''
리스트로 반복하기
- 반복문을 활용해 리스트 안의 데이터를 쉽게 출력하기
HumanList = ["인간0", "인간1", "인간2", "인간3", "인간4"]
print("++++인간 명단+++++++")
print(HumanList[0])
print(HumanList[1])
print(HumanList[2])
print(HumanList[3])
print(HumanList[4])
'''
결과창 ==========================
++++인간 명단+++++++
인간0
인간1
인간2
인간3
인간4
================================
'''
반복문을 모른다면 리스트 안의 요소를 이렇게 일일이 출력할 수 밖에 없을 것이다.
하지만 반복문을 사용한다면?
HumanList = ["인간0", "인간1", "인간2", "인간3", "인간4"]
print("++++인간 명단+++++++")
for i in range(len(HumanList)):
print(HumanList[i])
print("명단 출력 끝")
'''
결과창 ==========================
++++인간 명단+++++++
인간0
인간1
인간2
인간3
인간4
명단 출력 끝
================================
'''
- 이때, 인덱스를 사용하여 리스트의 데이터를 출력하는 것이 아니라
- 리스트의 데이터를 바로 출력하고 싶다면?
HumanList = ["인간0", "인간1", "인간2", "인간3", "인간4"]
print("++++인간 명단+++++++")
for j in HumanList:
print(j)
print("명단 출력 끝")
'''
결과창 ==========================
++++인간 명단+++++++
인간0
인간1
인간2
인간3
인간4
================================
'''
반복문은 range문을 사용하는 경우와 리스트를 사용하는 경우가 있다.
range문을 사용하는 경우에는 range범위 안에 있는 숫자데이터가 하나씩 들어가면서 코드가 반복되고, 리스트를 직접 사용하는 경우에는 리스트의 데이터를 하나씩 가져오면서 반복이 된다.
출처
코알라: https://coalastudy.com
데이터수집 web 공개자료: https://book.coalastudy.com/data_crawling/
'Data_Analysis' 카테고리의 다른 글
[코알라univ]3_3. 파이썬으로 데이터 수집하기 (0) | 2019.10.29 |
---|---|
[코알라univ]3_2. 파이썬으로 데이터 수집하기 (0) | 2019.10.28 |
[코알라univ]3_1. 파이썬으로 데이터 수집하기 (0) | 2019.10.14 |
[코알라univ]1. 웹페이지의 이해 (0) | 2019.10.02 |
데이터분석 공부 시작 (0) | 2019.09.19 |