ใ ์ฃผํผํฐ ๋ ธํธ๋ถ์ ํ์ฉํ ๋ฐ์ดํฐ ์๊ฐํ ใ
[ ํ์ด์ฌ ๋ด์ฅ ํจ์ split()๋ฅผ ์ด์ฉํ ๋ฌธ์์ด ๋ถ๋ฆฌ ํ์ฉ ์์ ]
โ split() ํจ์๋ฅผ ํตํด ๋ฐ์ดํฐ์ ๋ , ์, ์ผ ๋ถ๋ฆฌํ๊ธฐ
# Jupyter Notebook
# str.split(sep=None, maxsplit=- 1)
# sep์ ๊ตฌ๋ถ์ ๋ฌธ์์ด๋ก ์ฌ์ฉํ์ฌ ๋ฌธ์์ด ๋ด ๋จ์ด๋ค์ ๋ฆฌ์คํธ๋ฅผ ๋ฐํ
# maxsplit : ์ต๋ ๋ถํ ํ์ ์ง์ , [๊ธฐ๋ณธ๊ฐ : -1 (์ ํx)]
date = '1907-10-01'
print(date.split('-'))
print(date.split('-')[0])
print(date.split('-')[1])
print(date.split('-')[2])
############ [์คํ ๊ฒฐ๊ณผ] ############
['1907', '10', '01']
1907
10
01
โก split() ํจ์๋ฅผ ํตํด ํน์ ์์ ์ต๊ณ ๊ธฐ์จ๋ง ์๊ฐํ
# Jupyter Notebook
import csv
f = open('seoul.csv')
data = csv.reader(f)
next(data) # csv ํ์ผ์ ํค๋ ์ถ์ถ
result = []
for row in data :
if row[-1] != '' : # ์ต๊ณ ๊ธฐ์จ์ด ์ ์์ ์ธ ๊ฐ์ผ ๊ฒฝ์ฐ ์ํ(''์ด ์๋ ๊ฒฝ์ฐ)
if row[0].split('-')[1] == '08' : # ์ฐ๋ ๊ตฌ๋ถ์์ด 8์ ์ต๊ณ ๊ธฐ์จ๋ง ์ ์ฅ
result.append(float(row[-1]))
import matplotlib.pyplot as plt
plt.plot(result, 'hotpink')
plt.show() # ๋ฐ์ดํฐ์ 8์ ์ต๊ณ ๊ธฐ์จ ๋ถํฌ๋ ์๊ฐํ
โข split() ํจ์๋ฅผ ํตํด ํน์ ์, ์ผ์ ์ต๊ณ ๊ธฐ์จ ์๊ฐํ
# Jupyter Notebook
import csv
f = open('seoul.csv')
data = csv.reader(f)
next(data)
result = []
for row in data :
if row[-1] != '' :
# 2์ 14์ผ์ ์ต๊ณ ๊ธฐ์จ ๋ฐ์ดํฐ๋ง result ๋ฆฌ์คํธ์ ์ ์ฅ
if row[0].split('-')[1] == '02' and row[0].split('-')[2] == '14' :
result.append(float(row[-1]))
import matplotlib.pyplot as plt
#plt.figure(dpi = 300)
plt.plot(result, 'hotpink')
plt.show() # 1907~2018๋
์ฌ์ด 2์ 14์ผ ์ต๊ณ ๊ธฐ์จ ๋ถํฌ๋ ์๊ฐํ
โฃ split() ํจ์๋ฅผ ํตํด ํน์ ๊ธฐ๊ฐ์ ์ต๊ณ /์ ๊ธฐ์จ ์๊ฐ ๋ฐ์ดํฐ ๋น๊ต
# Jypyter Notebook
import csv
f = open('seoul.csv')
data = csv.reader(f)
next(data)
high = []
low = []
for row in data :
if row[-1] != '' and row[-2] != '' :
# 1983~2018๋
์ฌ์ด 2์ 14์ผ์ ์ต๊ณ /์ต์ ๊ธฐ์จ ๋ฐ์ดํฐ ์ถ์ถ
if 1983 <= int(row[0].split('-')[0]) :
if row[0].split('-')[1] == '02' and row[0].split('-')[2] == '14' :
high.append(float(row[-1]))
low.append(float(row[-2]))
import matplotlib.pyplot as plt
#plt.figure(dpi = 300)
plt.plot(high, 'hotpink') # ์ต๊ณ ๊ธฐ์จ ๋ฐ์ดํฐ ์ ์์ ํซํํฌ ์ง์
plt.plot(low, 'skyblue') # ์ต์ ๊ธฐ์จ ๋ฐ์ดํฐ ์ ์์ ํ๋์ ์ง์
plt.show() # 1983~2018๋
์ฌ์ด 2์ 14์ผ์ ์ต๊ณ /์ต์ ๊ธฐ์จ ๋ฐ์ดํฐ ์๊ฐํ
โค plt.rc() ํจ์ ์ฌ์ฉ ์์
# Jupyter Notebook
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
high = [] # ์ต๊ณ ๊ธฐ์จ ๊ฐ์ ์ ์ฅํ ๋ฆฌ์คํธ high ์์ฑ
low = [] # ์ต์ ๊ธฐ์จ ๊ฐ์ ์ ์ฅํ ๋ฆฌ์คํธ low ์์ฑ
for row in data :
if row[-1] != '' and row[-2] != '' :
date = row[0].split('-') # date ๋ณ์์ ๋
๋๊ฐ ์ ์ฅ
# 1990 ~ 2010๋
์ฌ์ด 1์ 1์ผ์ ์ต๊ณ /์ต์ ๊ธฐ์จ ๋ฐ์ดํฐ ์ถ์ถ
if 1990 <= int(date[0]) <= 2010 :
if date[1] == '01' and date[2] == '01' :
high.append(float(row[-1])) # ์ต๊ณ ๊ธฐ์จ ๊ฐ์ high ๋ฆฌ์คํธ์ ์ ์ฅ
low.append(float(row[-2])) # ์ต์ ๊ธฐ์จ ๊ฐ์ low ๋ฆฌ์คํธ์ ์ ์ฅ
# plt.rcParams(group, **kwargs) : ํ์ฌ์ rcParams๋ฅผ ์ค์ ํ๋ ํจ์
plt.rcParams['axes.unicode_minus'] = False # ๋ง์ด๋์ค ๊ธฐํธ ๊นจ์ง ๋ฐฉ์ง
# plt.rc('lines', **kwargs) : ๊ทธ๋ํ ์ ์ ๋ณด๋ฅผ ์ค์ ๊ฐ๋ฅ
# plt.rc('font', **font) : ๊ธ์จ์ฒด, ๊ธ์จ ํฌ๊ธฐ, ๊ตต๊ธฐ ๋ฑ์ ์ค์ ๊ฐ๋ฅ
font = {'family' : 'Malgun Gothic',
'weight' : 'bold',
'size' : 13}
plt.rc('lines', lw=2, ls='dotted') # ์ ๊ตต๊ธฐ, ์ ์คํ์ผ ์ง์
plt.rc('font', **font) # ๋ง์ ๊ณ ๋์ ๊ธฐ๋ณธ ๊ธ๊ผด๋ก ์ค์
plt.title('1990~2010๋
์ฌ์ด 1์1์ผ์ ๊ธฐ์จ ๋ณํ') # ์ ๋ชฉ ์ค์
plt.plot(high, 'hotpink', label = 'high') # high ๋ฆฌ์คํธ์ ์ ์ฅ๋ ๊ฐ์ hotpink ์์ผ๋ก ๊ทธ๋ฆฌ๊ณ ๋ ์ด๋ธ์ ํ์
plt.plot(low, 'skyblue', label = 'low') # low ๋ฆฌ์คํธ์ ์ ์ฅ๋ ๊ฐ์ skyblue ์์ผ๋ก ๊ทธ๋ฆฌ๊ณ ๋ ์ด๋ธ์ ํ์
plt.legend() # ๋ฒ๋ก ํ์
plt.show() # ๊ทธ๋ํ ์๊ฐํ
[ matplotlib์ ๊ตฌ์กฐ ]
- plt.plot() ํจ์๋ฅผ ์คํ ์ํค๋ฉด ์๋ 3๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฌ๊ฒ ๋จ
- pyplot์ ์ด์ฉํ ๋ช ๋ น (์ฝ๋)
- ๊ฐ์ฒด๋ค์ ์์ฑ (Figure, Line, Axes)
- ๊ทธ๋ํ ์๊ฐํ
- 3๋ฒ์งธ ๋จ๊ณ์ธ ๊ทธ๋ํ ์๊ฐํ๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ matplotlib ์ด๋ค.
- matplotlib.pyplot์ ํธ์ถ์ ์ํ API๋ฅผ ์ ๊ณตํจ
- matplotlib์ ๊ทธ๋ํ ์๊ฐํ๋ฅผ ์ํด Runtime Configuration Parameters(rcParams)๋ผ๋ ๋์ ๋ฌ๋ ๊ฐ์ ์ฌ์ฉ
- ๊ฒฐ๋ก ์ ์ผ๋ก plt.rc() ํจ์๋ฅผ ํตํด rcParams ๋์ ๋๋ฆฌ ๊ฐ์ ๋ณ๊ฒฝํจ์ผ๋ก์จ ๋ค์ํ ํํ์ ๊ทธ๋ํ ์์ฑ ๊ฐ๋ฅ
[ ํ์คํ ๊ทธ๋จ ๊ทธ๋ํ ์ฌ์ฉ ์์ ]
# Jupyter Notebook
# 1907๋
~ 2018๋
๊น์ง์ ์ต๊ณ ๊ธฐ์จ ๊ทธ๋ํ
import csv
f = open('seoul.csv')
data = csv.reader(f)
next(data)
result = []
for row in data :
if row[-1] != '' :
result.append(float(row[-1]))
import matplotlib.pyplot as plt
plt.figure(figsize = (10,2), dpi = 300)
plt.plot(result, 'r')
plt.show() # figure์ ์ฌ์ด์ฆ๋ฅผ ํค์๋ ๋ฐ์ดํฐ์ ์์ด ๋๋ฌด ๋ง์ ๋น๊ต ๋ถ๊ฐ๋ฅ
๊ธฐ์กด ๊ทธ๋ํ๋ฅผ ์๊ฐํ ํ๊ฒ ๋๋ฉด ๋ฐ์ดํฐ์ ์์ด ๋๋ฌด ๋ง์ ์๊ฐ์ ์ผ๋ก ๋น๊ต ๋ถ๊ฐ๋ฅํจ
ํ์คํ ๊ทธ๋จ ๊ทธ๋ํ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์จ๊ฐ ๋น๊ต๋ฅผ ๋ณด๋ค ๋ช ํํ๊ฒ ๊ฐ๋ฅ
โ ํ์คํ ๊ทธ๋จ ๊ทธ๋ํ ์์ฑ ์์ 1
# Jupyter Notebook
import matplotlib.pyplot as plt
# plt.hist(x) : x(ํํ, ๋ฆฌ์คํธ ๋ฑ)์ ๊ตฌ์กฐ๋ฅผ ๊ณ์ฐํ๊ณ ํ์คํ ๊ทธ๋จ์ผ๋ก ์๊ฐํ
# ๊ฐ๋ก์ถ : ๊ณ๊ธ
# ์ธ๋ก์ถ : ๋์(ํ์ or ๊ฐ์ ๋ฑ)
plt.hist([1,1,2,3,4,5,6,6,7,8,10])
plt.show()
โก ํ์คํ ๊ทธ๋จ ๊ทธ๋ํ ์์ฑ ์์ 2
# random ๋ชจ๋๊ณผ plt.hist ์ฌ์ฉ ์์
import random
import matplotlib.pyplot as plt
list = []
for i in range(10) :
# randint(a, b) : a<= N <= b ๋ฒ์์ ๋์ N์ ๋ฐํ
list.append(random.randint(1,30)) # 1~30 ์ฌ์ด ๋์ 10๊ฐ ์์ฑ ํ ๋ฆฌ์คํธ์ ์ ์ฅ
list.sort() # list ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
print(list)
# hist(bins=(type)): ํ์คํ ๊ทธ๋จ์ ๊ฐ๋ก์ถ ๊ตฌ๊ฐ์ ๊ฐ์ ์ง์ [๊ธฐ๋ณธ๊ฐ : 10]
# bins type : int or sequence or str
# bins == sequence : ์ฒซ ๋ฒ์งธ ๋น์ ์ผ์ชฝ ๊ฐ์ฅ์๋ฆฌ์ ๋ง์ง๋ง ๋น์ ์ค๋ฅธ์ชฝ ๊ฐ์ฅ์๋ฆฌ๋ฅผ ํฌํจํ ๋น ๊ฐ์ฅ์๋ฆฌ ์ ์
# bins == str : one of the binning strategies supported by numpy.histogram_bin_edges
plt.hist(list, bins=10, label='bins:10') # ๊ฐ๋ก์ถ ๊ตฌ๊ฐ 10
plt.hist(list, bins=30, label='bins:30') # ๊ฐ๋ก์ถ ๊ตฌ๊ฐ 30
plt.legend()
plt.show()
โข 1907~2018๋ ์ฌ์ด ์์ธ ์ต๊ณ ๊ธฐ์จ ๋ฐ์ดํฐ ํ์คํ ๊ทธ๋จ ํ์
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
result = []
for row in data :
if row[-1] != '' :
result.append(float(row[-1]))
plt.figure(dpi = 300)
plt.hist(result, bins = 1000, color = 'r', histtype = 'stepfilled')
# plt.hist(result, bins = 300, color = 'r', histtype = 'stepfilled')
plt.show()
โฃ 1907~2018๋ ์ฌ์ด 1์๊ณผ 8์์ ์์ธ์ ์ต๊ณ ๊ธฐ์จ ๋น๊ต
import csv
import matplotlib.pyplot as plt
f = open('seoul.csv')
data = csv.reader(f)
next(data)
aug = []
jan = []
for row in data :
month = row[0].split('-')[1]
if row[-1] != '' :
if month == '08':
aug.append(float(row[-1])) # 8์์ ์ต๊ณ ๊ธฐ์จ aug ๋ฆฌ์คํธ์ ์ฝ์
if month == '01':
jan.append(float(row[-1])) # 1์์ ์ต๊ณ ๊ธฐ์จ jan ๋ฆฌ์คํธ์ ์ฝ์
plt.figure(dpi = 200)
plt.hist(aug, bins = 100, color = 'r', label = 'Aug')
plt.hist(jan, bins = 100, color = 'b', label = 'Jan')
plt.legend()
plt.show()
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ : https://jrc-park.tistory.com/274