ํ์ด์ฌ์ ๊ณต๋ถํ๋ฉด์ ์์ฃผ ์ ํ๊ฒ ๋๋ ๊ฐ๋
์ค ํ๋๊ฐ ๋ ์ง(datetime)์ CSV ํ์ผ ์ฒ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ ์๊ฐํ์
๋๋ค.
์ด๋ฒ ํฌ์คํธ์์๋ ๋ค์๊ณผ ๊ฐ์ ํ๋ฆ์ผ๋ก ๊ฐ๋
์ ์ ๋ฆฌํ๊ณ , ๊ด๋ จ ์ฝ๋๋ฅผ ํจ๊ป ์ดํด๋ณด๊ฒ ์ต๋๋ค.
import datetime as dt
print(dt.datetime.today()) # ex) 2025-04-25 13:11:59.123456
dt.datetime.today().strftime('%Y%m%d') # '20250425'
date_str = '2025-04-25'
parsed = dt.datetime.strptime(date_str, '%Y-%m-%d')
print(parsed) # datetime.datetime(2025, 4, 25, 0, 0)
๐ strptime์ ํฌ๋งท์ ์๋ชป ์ง์ ํ๋ฉด ์๋ฌ๊ฐ ๋๊ธฐ ์ฌ์ฐ๋ฏ๋ก ์ฃผ์!
dt.datetime.today() + dt.timedelta(days=1)
for i in range(100):
print((dt.datetime.today() + dt.timedelta(days=i)).strftime('%Y%m%d'))
from pathlib import Path
import csv
path = Path('../the_csv_file_format/weather_data/death_valley_2021_full.csv')
lines = path.read_text().splitlines()
reader = csv.reader(lines)
header_row = next(reader)
for index, column_header in enumerate(header_row):
print(index, column_header)
๐ ์ด๋ ๊ฒ ํ๋ฉด ๊ฐ ์ด์ด ์ด๋ค ๋ฐ์ดํฐ์ธ์ง ์ฝ๊ฒ ํ์ธํ ์ ์์ด์.
csv.reader๋ ๊ฐ ์ค์ ๋ฌธ์์ด ๋ฆฌ์คํธ๋ก ๋ฐํํฉ๋๋ค. ์ซ์๋ก ๊ณ์ฐํ๋ ค๋ฉด ์ง์ int() ๋ณํ์ด ํ์ํฉ๋๋ค.
highs = []
for row in reader:
high = int(row[4]) # 4๋ฒ ์ด: ์ต๊ณ ๊ธฐ์จ
highs.append(high)
csv.DictReader๋ ํค๋๋ฅผ ํค๋ก ๊ฐ๋ ๋์
๋๋ฆฌ๋ฅผ ๋ฐํํฉ๋๋ค.
with open('../the_csv_file_format/weather_data/death_valley_2021_full.csv') as f:
reader = csv.DictReader(f)
for row in reader:
print(row['DATE']) # ์ด ์ด๋ฆ์ผ๋ก ๋ฐ๋ก ์ ๊ทผ
โ ๊ฐ๋ ์ฑ์ด ํจ์ฌ ์ข์์ ธ์!
| ํญ๋ชฉ | csv.reader | pandas.read_csv |
|---|---|---|
| ๋ฐ์ดํฐ ํ์ | ๋ฌธ์์ด (์๋ ํ๋ณํ ํ์) | ์ซ์ํ ์๋ ๋ณํ |
| ์ ๊ทผ ๋ฐฉ์ | ์ธ๋ฑ์ค (row[4]) | ์ด ์ด๋ฆ (df['TMAX']) |
| ๊ธฐ๋ฅ | ๋จ์ | ํต๊ณ, ๊ฒฐ์ธก์น ์ฒ๋ฆฌ, ์๊ฐํ ๊ฐ๋ฅ |
| ๋ฐํ | ๋ฆฌ์คํธ | DataFrame |
import pandas as pd
df = pd.read_csv('../the_csv_file_format/weather_data/death_valley_2021_full.csv')
print(df['TMAX'].values) # ์๋์ผ๋ก int ์ฒ๋ฆฌ๋จ
def load_date(filename):
import datetime as dt
import csv
with open(filename) as f:
reader = csv.reader(f)
next(reader) # Skip header
tdate, tmin, tmax = [], [], []
for line in reader:
try:
date = dt.datetime.strptime(line[2], '%Y%m%d')
t_min = int(line[4])
t_max = int(line[5])
except (ValueError, IndexError):
continue
else:
tdate.append(date)
tmin.append(t_min)
tmax.append(t_max)
return tdate, tmin, tmax
| ๊ธฐ๋ฅ | ๋ฐฉ๋ฒ |
|---|---|
| ๋ ์ง โ ๋ฌธ์์ด | strftime() |
| ๋ฌธ์์ด โ ๋ ์ง | strptime() |
| ๋ ์ง ๋ํ๊ธฐ | + timedelta(days=1) |
| CSV ์ฝ๊ธฐ | csv.reader() / csv.DictReader() |
| ์ด ํ์ธ | enumerate(header_row) |
| ๋ฌธ์์ด โ ์ซ์ ๋ณํ | int(row[4]) |
| pandas ์ฐจ์ด์ | ์๋ ํ๋ณํ, .values ์ง์ |
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
plt.plot(x, y, label='sin(x)')
plt.xlabel("x (radians)")
plt.ylabel("sin(x)")
plt.grid()
plt.legend()
plt.title("Sine Curve")
plt.show()
์ด ๊ธ์์๋ Python์ ์ด์ฉํด ๋ ์ง๋ฅผ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ, CSV ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ํ์ฑํ๋ ๋ฐฉ๋ฒ, pandas์์ ์ฐจ์ด, ๊ทธ๋ฆฌ๊ณ ๊ฐ๋จํ ์๊ฐํ๊น์ง ๋ค๋ค๋ดค์ต๋๋ค.
์ด๋ฐ ํ๋ฆ์ ์ตํ๋๋ฉด ๋ฐ์ดํฐ ๋ถ์, ๊ธฐ์ ์ ๋ณด ์๊ฐํ, ํต๊ณ ์ฒ๋ฆฌ ๋ฑ์ ํจ์ฌ ๋น ๋ฅด๊ฒ ์ ์ํ ์ ์์ด์!