๋ฐ์ํ
์๊ด๊ด๊ณ
import pandas as pd
import matplotlib.pyplot as plt
from pandas_datareader import data as pdr
import numpy as np
# plt ์คํ์ผ ์ง์
plt.style.use('seaborn-colorblind')
#์ฃผ์ ๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ
#index_col์ index๋ก ์ฌ์ฉํ column์ ์ ํํ ๋ ์ฌ์ฉ
#parse_dates=True๋ ๋ ์ง๋ฌธ์์ด์ ์๋์ผ๋ก
#DatetimeIndex๋ก ๋ณํ์์ผ์ฃผ๋ ์ต์
#๋ถ๋ฌ์ค๊ธฐ ๋ฐฉ์ 2
filename1 = '/content/drive/My Drive/project_news/no1.csv'
data1 = pd.read_csv(filename1,encoding='cp949')
data1['datetime'] = data1['date'].apply(lambda x:pd.to_datetime(str(x),format='%Y-%m-%d'))
# ๊ฒฐ์ธก์น, ๋ฐ ์๋ชป๋ ๋ ์ง ํํ ๋ฐ๊ฒฌ
data1[data1['date'].str.contains("๊ณต์์ฒ")]
# ํ ์ญ์
data1 = data1.drop([8423])
# ๋ค์ ๋ ์งํํ๋ก ์ ํ, ์ใ
;; ์ฑ๊ณต
data1['datetime'] = data1['date'].apply(lambda x:pd.to_datetime(str(x),format='%Y-%m-%d'))
# ์์์ ๊ฐ 1 ๋ฃ์ด์ ๊ณ์ฐ์ฉ์ด
data1['all_news_num'] = 1
#index๋ฅผ datetime index๋ก ์ค์ ํ๊ธฐ
data1.set_index(data1['datetime'], inplace=True)
#์ธ๋ชจ์๋ ์ด ์ ๊ฑฐ(ํ0 ์ด1)
data1 = data1.drop('datetime',1)
#ํ์ธ
data1.head()
#resampling
daily_data1 = data1.resample('1D')
#์ผ๋ณ๋ก ๊ธฐ์ค ์ฌ์ ๋ ฌํ๊ธฐ
series1 = pd.Series(data1['all_news_num'], index=data1.index)
series1
# resampling ํ๊ธฐ ์ํ ์ต์ข
daily_stock1_news_sum = series1.resample('1D').sum()
daily_stock1_news_sum
# ์ฃผ์ 3์ค๋ง ๊ทธ๋ํ ๋ณด์ด๊ธฐ
stock = '/content/drive/My Drive/project_news/stock/comp_065500.csv'
stock_df = pd.read_csv(stock, index_col='date', parse_dates=True)
# ์ข
๊ฐ + ๊ฑฐ๋๋ ๊ฒน์ณ์ ํํํ๊ธฐ
plt.figure(figsize=(15,12), facecolor='beige')
top_axes = plt.subplot2grid((6,4),(0,0),rowspan=3,colspan=4)
top_axes.title.set_text('Stock Price')
top_axes.get_xaxis().set_visible(False)
middle_axes = plt.subplot2grid((6,4),(3,0),rowspan=2,colspan=4)
middle_axes.title.set_text('News')
middle_axes.get_xaxis().set_visible(False)
bottom_axes = plt.subplot2grid((6,4),(5,0),rowspan=1,colspan=4)
bottom_axes.title.set_text('Trading Volume')
#๊ฑฐ๋๋ ๊ฐ์ผ๋ก์ ํฐ ๊ฐ์ด ๋ฐ์ํ ๋ ๊ทธ ๊ฐ์ ์ค์ผ๋ฌ ์์(e)์ ์ง์ ํํ๋ก ํํ๋์ง ์๊ฒํจ
bottom_axes.get_yaxis().get_major_formatter().set_scientific(False)
top_axes.plot(stock_df['close'], label = 'Close')
middle_axes.plot(daily_stock1_news_sum, label = "News", color = 'chocolate')
bottom_axes.plot(stock_df['trading_volume'], label = 'Volume',color = 'blueviolet')
#๋ด์ค ๋น๋์์ ์ฃผ์ ๋ณ๋์ฑ ์๊ด๋ถ์ ์ํ
import seaborn as sns
#var_corr1 = stock_df['trading_volume']
stock_df['trading_volume']
daily_stock1_news_sum
#merge ์๊ด ๊ด๊ณ ๋ถ์ํ๊ธฐ ์ํด, ๊ฑฐ๋๋+์ผ๋ณ๋ด์ค
df_left = stock_df['trading_volume']
df_right = daily_stock1_news_sum
# resample์ ํตํ ์๋ณ ๊ธฐ์ค์ผ๋ก ์ธํ
๋ค์ํ๊ธฐ
df_result1_month = df_result1.resample('M').sum()
df_result1_month
plt.figure(figsize=(12,10), facecolor='beige')
top_axes = plt.subplot2grid((4,4),(0,0),rowspan=3,colspan=4)
top_axes.title.set_text('Stock Price')
top_axes.get_xaxis().set_visible(False)
bottom_axes = plt.subplot2grid((4,4),(3,0),rowspan=1,colspan=4)
bottom_axes.title.set_text('Trading Volume')
#๊ฑฐ๋๋ ๊ฐ์ผ๋ก์ ํฐ ๊ฐ์ด ๋ฐ์ํ ๋ ๊ทธ ๊ฐ์ ์ค์ผ๋ฌ ์์(e)์ ์ง์ ํํ๋ก ํํ๋์ง ์๊ฒํจ
bottom_axes.get_yaxis().get_major_formatter().set_scientific(False)
top_axes.plot(df_result1_month['trading_volume'])
bottom_axes.plot(df_result1_month['all_news_num'],color = 'blueviolet')
plt.show()
df_result1 = pd.merge(df_left,df_right,left_index=True,right_index=True,how='left')
#๊ฒฐ์ธก์น ์ ๊ฑฐํ๊ธฐ(ํ:0)
df_result1 = df_result1.dropna(axis=0); df_result1
stock = '/content/drive/My Drive/project_news/stock/comp_065500.csv'
stock_df = pd.read_csv(stock, index_col='date', parse_dates=True)
plt.figure(figsize=(12,10), facecolor='beige')
top_axes = plt.subplot2grid((4,4),(0,0),rowspan=3,colspan=4)
top_axes.title.set_text('Stock Price')
top_axes.get_xaxis().set_visible(False)
bottom_axes = plt.subplot2grid((4,4),(3,0),rowspan=1,colspan=4)
bottom_axes.title.set_text('Trading Volume')
#๊ฑฐ๋๋ ๊ฐ์ผ๋ก์ ํฐ ๊ฐ์ด ๋ฐ์ํ ๋ ๊ทธ ๊ฐ์ ์ค์ผ๋ฌ ์์(e)์ ์ง์ ํํ๋ก ํํ๋์ง ์๊ฒํจ
bottom_axes.get_yaxis().get_major_formatter().set_scientific(False)
top_axes.plot(df_result1_month['trading_volume'])
bottom_axes.plot(df_result1_month['all_news_num'],color = 'blueviolet')
plt.show()
#๋ด์ค ๋น๋์์ ์ฃผ์ ๋ณ๋์ฑ ์๊ด๋ถ์ ์ํ
var_corr1 = df_result1_month[['trading_volume','all_news_num']].corr()
sns.heatmap(var_corr1,annot=True)
#ํผ์ด์จ ์๊ด๊ณ์ ๊ตฌํ๊ธฐ, ์คํผ์ด๋ง ์๊ด๊ณ์ ๊ตฌํ๊ธฐ
from scipy import stats
print(stats.pearsonr(df_result1_month['trading_volume'],df_result1_month['all_news_num']))
print(stats.spearmanr(df_result1_month['trading_volume'],df_result1_month['all_news_num']))
์ ์น ํ ๋ง์ฃผ์ ๋์ ํ๋ณด ๊ด๋ จ ๋ด์ค๊ฐ ์๊ด๊ด๊ณ๋ฅผ ์๊ฐํํ ๊ทธ๋ํ์ ๋๋ค.
์๊ฐํ๋ฅผ ๋ค์ํ๊ฒ ์งํํ๋๋ฐ, ์ด๋ฒ ์ฝ๋๋ ๊ทธ๋ํ๋ฅผ ๋ถ์ํ๋๋ฐ ์ฌ์ฉํ๋ ์ฝ๋์ ์ผ๋ถ์ ๋๋ค.
๋ฐ์๋ ๊ฐ ์ผ์๋ณ ๊ด๋ จ ๋์ ํ๋ณด ์ด์ฌ๋ช ์ ์ธ๊ธํ ๋ด์ค์ ๋น๋์์ด๋ฉฐ, ์์๋ ํน์ ๋์ ํ๋ณด ๊ด๋ จ ์ฃผ์์ ๊ทธ๋ํ์ ๋๋ค. ๊ฐ ๋์ ์ฃผ์๋ณ, ์ ์น ํ ๋ง์ฃผ๋ก ๋ถ๋ฅ๋ ํ์ฌ์ ๋ด์ค ๋น๋์์ ๊ฐ๊ฒฉ์ ์ถ์ด ๊ณก์ ์ ๋ถ์ํ์์ต๋๋ค.
์ ์น ํ ๋ง์ฃผ / ๋น ๋ฐ์ดํฐ ๋ถ์/ ํ์ด์ ์๊ฐํ
๋ฐ์ํ
'๐WEB & ML & DL ํ๋ก์ ํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฐ๋ฐ์๋ก์ ํฌํธํด๋ฆฌ์ค ์์ฑํ๋ ๋ฐฉ๋ฒ (0) | 2021.10.22 |
---|---|
HTML get์ผ๋ก ๋ณด์ฌ์ค์ผํ ๋์ ํ ๋ง์ฃผ ํ์ฌ ์ ๋ณด ์์ (0) | 2021.10.21 |
์ฝ๋ฉ ์ฑ ๊ต์ฌ ์ถ์ฒ(feat.์ ๋ฌธ์/๋น ๋ฐ์ดํฐ/db/sql) (0) | 2021.10.04 |
๊น ํ์ฉํ๋ ๋ฐฉ๋ฒ (0) | 2021.10.02 |
ํ ํ๋ฆฟ ๋ฌด๋ฃ๋ก ์ฌ์ฉํ๋ ๊ณณ (0) | 2021.09.30 |