โ๐ป ๋ฐฐ์ด์
Python Programming ๊ธฐ์ด๋ฅผ ๋ฐฐ์ ๋ค.
์๋ฃํ, ์ถ๋ ฅ๋ฌธ, ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ, ์ค์ ์๋ฃ๊ตฌ์กฐ(list, dictionary) ๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ๋ค์ ์ตํ ํ,
anaconda ์ jupyter notebook ์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ํฌ๋กค๋ง์ ํตํด ์ค์ ๋ฐ์ดํฐ์์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด ๋ณผ ์ ์์๋ค.
๐ ๋ชฉ์ฐจ
1. Python ํฌ๋กค๋ง
2. float ํ ๋ง์
3. sequence ํ
4. ์ถ๋ ฅ๋ฌธ
5. list์ ๋ฐ๋ณต๋ฌธ
6. Dictionary
7. ์คํ๋ฒ ์ค ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ 1 : ์์ธ์ ์คํ๋ฒ ์ค ์ ๋ณด ํฌ๋กค๋ง
8. ์คํ๋ฒ ์ค ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ 2 : ์์ธ์ ์คํ๋ฒ ์ค ๋ฆฌ์ ๋ธ ๊ฐ๊ฒ ๊ฐ์ ๊ตฌํ๊ธฐ
9. ์คํ๋ฒ ์ค ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ 3 : ์์ธ์ ์คํ๋ฒ ์ค ์์น๊ตฌ๋ณ ๋งค์ฅ ๊ฐ์ ๊ตฌํ๊ธฐ
10. ์คํ๋ฒ ์ค ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ 4 : ์์ธ์ ์คํ๋ฒ ์ค ์คํ ์์ผ ๊ฐ์ ๊ตฌํ๊ธฐ
๋ค์ด๊ฐ๋ฉฐ
ํ์ด์ฌ์ ์ธ์ด ์ ๋์ ์ญ์ฌ๋ฅผ ๋ค์ ์ ์์๊ณ , ๋ฐ์ดํฐ ๋ถ์์ ์ํด ๊ฐ์ถ์ด์ผ ํ ๋ฅ๋ ฅ์ "์ฝ๋ฉ, ํต๊ณ ๋ฐ ์ํ, ๋๋ฉ์ธ ์ง์" ์ด ์ธ๊ฐ์ง๊ฐ ์ค์ํ๋ค.
(ํนํ ๋๋ฉ์ธ ์ง์์ ๋ง์ด ์๊ตฌํ๋ค๊ณ ํ๋ค.)
Python ํฌ๋กค๋ง
import requests
import pandas as pd
url = "https://finance.naver.com/item/sise_day.naver?code=005930&page={}"
head = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"}
df=pd.concat([pd.read_html(requests.get(url.format(x), headers=head).text)[0].dropna() for x in range(1,5)])
๋ค์ด๋ฒ ์ฃผ์ ํ์ด์ง์์ ํฌ๋กค๋ง์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ด๋ฅผ pandas ๋ฅผ ์ฌ์ฉํ ๋ฐ์ดํฐ ํ๋ ์์ผ๋ก ๋ง๋ค ์ ์๋ค.
df.iloc[::-1] # ๋ฐ์ดํฐ ์ญ์์ผ๋ก ๋ฐ๊พธ๊ธฐ
๋ํ, ์ด๋ ๊ฒ ์์ฑํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ญ์์ผ๋ก ๋ฐ๋๊ฒ ๋๋ค.
์๋ ์ํ์คํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํ ๋ ํ ๋ฒ ๋ ๋์ค๋ ๋ฐฉ์์ด๋ค.
(์์ฃผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ ์์๋์.)
float ํ ๋ง์
0.1 + 0.2
์ด ์์์ ํ์ด์ฌ์ ํตํด ๊ณ์ฐํ๋ฉด 0.3 ์ด ์๋, 0.3000000000004 ๋ก ์ถ๋ ฅ๋๋ค.
ํ์ด์ฌ์์๋ ์ค์๋ฅผ ๋ถ๋์์์ ๋ฐฉ์์ผ๋ก ํํํ๊ธฐ ๋๋ฌธ์ด๋ค. (์ฆ, ๋นํธ์ ์ฐ๊ด์ด ์๋ค.)
sequence ํ
index ๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ณ , ์ฃผ๋ก ์๋์ ๊ฐ์ ํํ ๋ฐฉ๋ฒ์ ๋ฐ๋ฅธ๋ค.
temp[start:end:step]
temp ๋ณ์์์ (start) index ๋ถํฐ (end - 1) index ๊น์ง๋ฅผ ์๋ฏธํ๋ค.
์ฌ๊ธฐ์, step์ ๋ง ๊ทธ๋๋ก '๋ช์นธ ์ฉ ๋์ธ๊ฑด์ง' ์ ํ๋ ์ญํ ์ ํ๋ค.
ํนํ, [::-1] ํํ์ ์ญ์์ผ๋ก ํํํ ๋ ์์ฃผ์ฐ์ด๋ฏ๋ก ๊ผญ ์์๋์.
๊ทธ ๋ฐ์๋, * ๋ก ๋ฌธ์์ด์ ๋ฐ๋ณตํ ์ ์๊ณ , + ๋ ๋ฌธ์์ด๋ผ๋ฆฌ ํฉ์น ์ ์๋ค.
์ถ๋ ฅ๋ฌธ
print(text.format(""))
format ํจ์๋ฅผ ํตํด ๋์ ๋งตํ์ด ๊ฐ๋ฅํ๋ค.
List ์ ๋ฐ๋ณต๋ฌธ
text = "์ ๋ {} ์
๋๋ค."
class_a = ["๊น๊น๊น", "์ด์ด์ด", "ํํํ", "๋ฐ๋ฐ๋ฐ", "์์์"]
for name in class_a:
print(text.format(name))
class_a๋ ๋ฆฌ์คํธ๋ก, ๋ฐ๋ณต๋ฌธ์์ ์ ์ฉํ๊ฒ ๋๋ฉด ์์์ ๋ถํฐ ํ๋์ฉ ๋ฝ์ name ์ด๋ผ๋ ๋ณ์์ ๋ฃ๊ฒ ๋๋ค.
format ํจ์์ ์ํด text์ { } ์์ ์์์ ์ ์ฅ๋ name ์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
์ฌ๊ธฐ์, format ์ฌ์ฉ๋ฒ์ ๋ํด ๋ ์์๋ณผ ์ ์๋ค.
# ํ์ด์ฌ 3.x ์ถ๋ ฅ ๋ฐฉ์
print("์ ๋ {} ์
๋๋ค. ".format(name))
# ํ์ด์ฌ 3.6 f-strings
print(f"์ ๋ {name} ์
๋๋ค.")
f-strings ๋ฐฉ์์ ํตํด ์ข ๋ ์ง๊ด์ ์ผ๋ก ์ดํดํ๊ธฐ ์ฝ๊ฒ ํํํ ์ ์๋ค.
Dictionary
์ค๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ key ๋ฐ value๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ์ฃผ๋ก json ํ์ผ์ด ๋์ ๋๋ฆฌ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
dict_a = {"์คํ๋ฒ
์ค" : "์ปคํผ"} # {key : value}
dict_a["์คํ๋ฒ
์ค"] # ์ปคํผ
key ๊ฐ์ ํตํด value ๊ฐ์ ์ป์ ์ ์๋ค.
์คํ๋ฒ ์ค ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ 1 : ์์ธ์ ์คํ๋ฒ ์ค ์ ๋ณด ํฌ๋กค๋ง
import requests
url = "https://www.starbucks.co.kr/store/getStore.do?r=GKYHQKU7D3"
payload = {"in_biz_cds" : "0",
"in_scodes" : "0",
"ins_lat" : "37.566535",
"ins_lng" : "126.9779692",
"search_text" : "",
"p_sido_cd" : "01",
"p_gugun_cd" : "",
"in_distance" : "0",
"in_biz_cd" : "",
"isError" : "true",
"searchType" : "C",
"set_date" : "",
"all_store" : "0",
"T03" : "0",
"T01" : "0",
"T27" : "0",
"T12" : "0",
"T09" : "0",
"T30" : "0",
"T05" : "0",
"T22" : "0",
"T21" : "0",
"T10" : "0",
"T36" : "0",
"T43" : "0",
"T48" : "0",
"P10" : "0",
"P50" : "0",
"P20" : "0",
"P60" : "0",
"P30" : "0",
"P70" : "0",
"P40" : "0",
"P80" : "0",
"whcroad_yn" : "0",
"P90" : "0",
"new_bool" : "0",
"iend" : "1000",
"rndCod" : "IZVHHSIFWC",}
r = requests.post(url, data=payload)
star = r.json()['list']
์คํ๋ฒ ์ค ํํ์ด์ง์์ ์์ธ์์ ์๋ ์คํ๋ฒ ์ค ๋งค์ฅ ๋ฐ์ดํฐ๋ฅผ ํฌ๋กค๋งํ๋ค.
์คํ๋ฒ ์ค ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ 2 : ์์ธ์ ์คํ๋ฒ ์ค ๋ฆฌ์ ๋ธ ๊ฐ๊ฒ ๊ฐ์ ๊ตฌํ๊ธฐ
cnt = 0
for store in star:
if store['s_name'][-1] == "R":
cnt = cnt + 1
print(store['s_name'])
์์ธ์ ์คํ๋ฒ ์ค ๋ฆฌ์ ๋ธ ๊ฐ๊ฒ์ ๊ฐ์๋ฅผ ๊ตฌํ ์ ์๋ค.
์คํ๋ฒ ์ค ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ 3 : ์์ธ์ ์คํ๋ฒ ์ค ์์น๊ตฌ๋ณ ๋งค์ฅ ๊ฐ์ ๊ตฌํ๊ธฐ
dict_a = {}
for store in star:
gu = store['gugun_name']
if gu in dict_a:
dict_a[gu] += 1
else:
dict_a[gu] = 1
์์ธ์์ ์์น๊ตฌ๋ณ ๋งค์ฅ ๊ฐ์๋ฅผ ๊ตฌํ ์ ์๋ค.
์คํ๋ฒ ์ค ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ 4 : ์์ธ์ ์คํ๋ฒ ์ค ์คํ ์์ผ ๊ฐ์ ๊ตฌํ๊ธฐ
master = dict(zip(range(0,7), "์ํ์๋ชฉ๊ธํ ์ผ"))
for x in range(100, 1001, 100):
date_ = datetime.datetime.strptime("20230213", "%Y%m%d") + datetime.timedelta(days=x)
date_str = str(datetime.datetime.now() + datetime.timedelta(days=x))
print(date_str.split()[0], master[date_.weekday()])
์์ธ์ ์คํ๋ฒ ์ค ์คํ ๋ ์ง๋ฅผ ํตํด, ๊ฐ์ฅ ์คํ์ด ๋ง์ ์์ผ์ ๊ตฌํ ์ ์๋ค.
'Python > [๊ธฐ์ด ๊ฐ์ ์ ๋ฆฌ]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
python ๊ธฐ์ด 6 (0) | 2023.02.26 |
---|---|
python ๊ธฐ์ด 5 (0) | 2023.02.26 |
python ๊ธฐ์ด 4 (1) | 2023.02.25 |
python ๊ธฐ์ด 3 (0) | 2023.02.24 |
Python ๊ธฐ์ด 2 (0) | 2023.02.15 |