๋ฐ์—”์œผ๋กœ ์„ฑ์žฅ์ค‘ ๐ŸŒฑ

Python/[๊ธฐ์ดˆ ๊ฐ•์˜ ์ •๋ฆฌ]

Python ๊ธฐ์ดˆ 1

์จ๋ฐ 2023. 2. 13. 23:51

โœ๐Ÿป ๋ฐฐ์šด์ 

 

Python Programming ๊ธฐ์ดˆ๋ฅผ ๋ฐฐ์› ๋‹ค.

์ž๋ฃŒํ˜•, ์ถœ๋ ฅ๋ฌธ, ๋ฐ˜๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ, ์ค‘์š” ์ž๋ฃŒ๊ตฌ์กฐ(list, dictionary) ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•๋“ค์„ ์ตํžŒ ํ›„,

anaconda ์™€ jupyter notebook ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ํฌ๋กค๋ง์„ ํ†ตํ•ด ์‹ค์ œ ๋ฐ์ดํ„ฐ์—์„œ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

 


 

 

 

๋“ค์–ด๊ฐ€๋ฉฐ

 

ํŒŒ์ด์ฌ์˜ ์–ธ์–ด ์œ ๋ž˜์™€ ์—ญ์‚ฌ๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•ด ๊ฐ–์ถ”์–ด์•ผ ํ•  ๋Šฅ๋ ฅ์— "์ฝ”๋”ฉ, ํ†ต๊ณ„ ๋ฐ ์ˆ˜ํ•™, ๋„๋ฉ”์ธ ์ง€์‹" ์ด ์„ธ๊ฐ€์ง€๊ฐ€ ์ค‘์š”ํ•˜๋‹ค.

(ํŠนํžˆ ๋„๋ฉ”์ธ ์ง€์‹์„ ๋งŽ์ด ์š”๊ตฌํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.)

 

 

 

 

 

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