202301 FDR_Data_공부

목록으로 돌아가기
  • 데이터 불러오기
!pip install -U finance-datareader
Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/
Collecting finance-datareader
  Downloading finance_datareader-0.9.50-py3-none-any.whl (19 kB)
Requirement already satisfied: requests>=2.3.0 in /usr/local/lib/python3.8/dist-packages (from finance-datareader) (2.25.1)
Requirement already satisfied: pandas>=0.19.2 in /usr/local/lib/python3.8/dist-packages (from finance-datareader) (1.3.5)
Requirement already satisfied: tqdm in /usr/local/lib/python3.8/dist-packages (from finance-datareader) (4.64.1)
Requirement already satisfied: lxml in /usr/local/lib/python3.8/dist-packages (from finance-datareader) (4.9.2)
Collecting requests-file
  Downloading requests_file-1.5.1-py2.py3-none-any.whl (3.7 kB)
Requirement already satisfied: python-dateutil>=2.7.3 in /usr/local/lib/python3.8/dist-packages (from pandas>=0.19.2->finance-datareader) (2.8.2)
Requirement already satisfied: numpy>=1.17.3 in /usr/local/lib/python3.8/dist-packages (from pandas>=0.19.2->finance-datareader) (1.21.6)
Requirement already satisfied: pytz>=2017.3 in /usr/local/lib/python3.8/dist-packages (from pandas>=0.19.2->finance-datareader) (2022.7)
Requirement already satisfied: chardet<5,>=3.0.2 in /usr/local/lib/python3.8/dist-packages (from requests>=2.3.0->finance-datareader) (4.0.0)
Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.8/dist-packages (from requests>=2.3.0->finance-datareader) (2.10)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.8/dist-packages (from requests>=2.3.0->finance-datareader) (2022.12.7)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /usr/local/lib/python3.8/dist-packages (from requests>=2.3.0->finance-datareader) (1.24.3)
Requirement already satisfied: six in /usr/local/lib/python3.8/dist-packages (from requests-file->finance-datareader) (1.15.0)
Installing collected packages: requests-file, finance-datareader
Successfully installed finance-datareader-0.9.50 requests-file-1.5.1
import FinanceDataReader as fdr
df_krx=fdr.StockListing('krx')
df_krx
Code ISU_CD Name Market Dept Close ChangeCode Changes ChagesRatio Open High Low Volume Amount Marcap Stocks MarketId
0 005930 KR7005930003 삼성전자 KOSPI 64600 1 700 1.10 64400 65000 63900 18760182 1212764792491 385647952730000 5969782550 STK
1 373220 KR7373220003 LG에너지솔루션 KOSPI 506000 2 -11000 -2.13 525000 526000 504000 459245 235054829000 118404000000000 234000000 STK
2 000660 KR7000660001 SK하이닉스 KOSPI 91500 2 -800 -0.87 91300 92800 90300 2553811 234318676392 66612216397500 728002365 STK
3 207940 KR7207940008 삼성바이오로직스 KOSPI 809000 1 14000 1.76 794000 811000 791000 83364 67041865000 57579766000000 71174000 STK
4 051910 KR7051910008 LG화학 KOSPI 685000 3 0 0.00 696000 696000 674000 186406 127932320000 48355754955000 70592343 STK
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
2689 308700 KR7308700004 테크엔 KONEX 일반기업부 577 1 18 3.22 577 577 577 1 577 2308000000 4000000 KNX
2690 215050 KR7215050006 비엔디생활건강 KONEX 일반기업부 912 0 0 0.00 0 0 0 0 0 1934959392 2121666 KNX
2691 267810 KR7267810000 앙츠 KONEX 일반기업부 1058 4 138 15.00 1058 1058 1058 5 5290 1890646000 1787000 KNX
2692 267060 KR7267060002 명진홀딩스 KONEX 일반기업부 181 0 0 0.00 0 0 0 0 0 1654666524 9141804 KNX
2693 322190 KR7322190000 베른 KONEX 일반기업부 108 1 3 2.86 117 120 104 15841 1767850 963921276 8925197 KNX

2694 rows × 17 columns

df_krx['Name'].unique()
    array(['삼성전자', 'LG에너지솔루션', 'SK하이닉스', ..., '앙츠', '명진홀딩스', '베른'],
          dtype=object)
df_krx.columns
    Index(['Code', 'ISU_CD', 'Name', 'Market', 'Dept', 'Close', 'ChangeCode',
           'Changes', 'ChagesRatio', 'Open', 'High', 'Low', 'Volume', 'Amount',
           'Marcap', 'Stocks', 'MarketId'],
          dtype='object')

삼성 상위 10개 기업의 stocks 지수 변화 그래프

import pandas as pd
data=pd.DataFrame({'Code':[],'Name':[],'Market':[],'Amount':[],'Stocks':[]})
j=0
for i in df_krx['Name'].unique():
  if '삼성' in i :
    data=pd.concat([data,df_krx[df_krx['Name']==i][['Code','Name','Market','Amount','Stocks']]],ignore_index=True)
    j+=1
data=data[:10]
data=data.sort_values(by='Stocks',ascending=False,ignore_index=True)
data.sort_values(by='Stocks',ascending=False,ignore_index=True)
Code Name Market Amount Stocks
0 005930 삼성전자 KOSPI 1.212765e+12 5.969783e+09
1 005935 삼성전자우 KOSPI 7.552297e+10 8.228867e+08
2 032830 삼성생명 KOSPI 1.982899e+10 2.000000e+08
3 028050 삼성엔지니어링 KOSPI 2.453809e+10 1.960000e+08
4 028260 삼성물산 KOSPI 3.364601e+10 1.868871e+08
5 018260 삼성에스디에스 KOSPI 1.668860e+10 7.737780e+07
6 009150 삼성전기 KOSPI 7.336925e+10 7.469370e+07
7 207940 삼성바이오로직스 KOSPI 6.704186e+10 7.117400e+07
8 006400 삼성SDI KOSPI 1.805389e+11 6.876453e+07
9 000810 삼성화재 KOSPI 1.409532e+10 4.737484e+07
dic=dict()
i=0
for i in data['Name'].unique():
  if '삼성' in i :
    for x,y in enumerate(df_krx[df_krx['Name']==i]['Code']):
      dic[i]=y
print(dic)
    {'삼성전자': '005930', '삼성전자우': '005935', '삼성생명': '032830', '삼성엔지니어링': '028050', '삼성물산': '028260', '삼성에스디에스': '018260', '삼성전기': '009150', '삼성바이오로직스': '207940', '삼성SDI': '006400', '삼성화재': '000810'}
data[['Name','Code']]
Name Code
0 삼성전자 005930
1 삼성전자우 005935
2 삼성생명 032830
3 삼성엔지니어링 028050
4 삼성물산 028260
5 삼성에스디에스 018260
6 삼성전기 009150
7 삼성바이오로직스 207940
8 삼성SDI 006400
9 삼성화재 000810
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.gridspec as gridspec
grid=gridspec.GridSpec(2,5)#그래프를 그릴 도화지 개수 
plt.figure(figsize=(50,50))
plt.subplots_adjust(wspace=0.3,hspace=0.3) #그래프 간의 거리 조절

#서버플롯 그리기
for idx, feature in enumerate(dic.keys()):
  data=fdr.DataReader(dic[feature],'2023')
  ax=plt.subplot(grid[idx])
  sns.barplot(x=data.index,y='Change',data=data,palette='pastel',ax=ax)
  ax.set_title(f'2023 {feature} Distribution')

png

삼성은 상승과 하락의 비율이 비슷하다.


LG 상위 10개 기업의 stocks 지수 변화 그래프

import pandas as pd
data=pd.DataFrame({'Code':[],'Name':[],'Market':[],'Amount':[],'Stocks':[]})
j=0
for i in df_krx['Name'].unique():
  if 'LG' in i :
    data=pd.concat([data,df_krx[df_krx['Name']==i][['Code','Name','Market','Amount','Stocks']]],ignore_index=True)
    j+=1
data=data[:10]
data=data.sort_values(by='Stocks',ascending=False,ignore_index=True)
data.sort_values(by='Stocks',ascending=False,ignore_index=True)
Code Name Market Amount Stocks
0 032640 LG유플러스 KOSPI 1.024826e+10 436611361.0
1 034220 LG디스플레이 KOSPI 4.074276e+10 357815700.0
2 373220 LG에너지솔루션 KOSPI 2.350548e+11 234000000.0
3 066570 LG전자 KOSPI 8.055368e+10 163647814.0
4 003550 LG KOSPI 1.371246e+10 157300993.0
5 051910 LG화학 KOSPI 1.279323e+11 70592343.0
6 011070 LG이노텍 KOSPI 6.999296e+10 23667107.0
7 066575 LG전자우 KOSPI 1.688397e+09 17185992.0
8 051900 LG생활건강 KOSPI 7.692310e+10 15618197.0
9 051915 LG화학우 KOSPI 3.467882e+09 7688800.0
dic=dict()
i=0
for i in data['Name'].unique():
  if 'LG' in i :
    for x,y in enumerate(data[data['Name']==i]['Code']):
      dic[i]=y
print(dic)
    {'LG유플러스': '032640', 'LG디스플레이': '034220', 'LG에너지솔루션': '373220', 'LG전자': '066570', 'LG': '003550', 'LG화학': '051910', 'LG이노텍': '011070', 'LG전자우': '066575', 'LG생활건강': '051900', 'LG화학우': '051915'}
data[['Name','Code']]
Name Code
0 LG유플러스 032640
1 LG디스플레이 034220
2 LG에너지솔루션 373220
3 LG전자 066570
4 LG 003550
5 LG화학 051910
6 LG이노텍 011070
7 LG전자우 066575
8 LG생활건강 051900
9 LG화학우 051915
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.gridspec as gridspec
grid=gridspec.GridSpec(2,5)#그래프를 그릴 도화지 개수 
plt.figure(figsize=(50,50))
plt.subplots_adjust(wspace=0.3,hspace=0.3) #그래프 간의 거리 조절

#서버플롯 그리기
for idx, feature in enumerate(dic.keys()):
  data=fdr.DataReader(dic[feature],'2023')
  ax=plt.subplot(grid[idx])
  sns.barplot(x=data.index,y='Change',data=data,palette='pastel',ax=ax)
  ax.set_title(f'2023 {feature} Distribution')

png

LG는 전체적으로 상승 비율이 높다.


SK 상위 10개 기업의 stocks 지수 변화 그래프

import pandas as pd
data=pd.DataFrame({'Code':[],'Name':[],'Market':[],'Amount':[],'Stocks':[]})
j=0
for i in df_krx['Name'].unique():
  if 'SK' in i :
    data=pd.concat([data,df_krx[df_krx['Name']==i][['Code','Name','Market','Amount','Stocks']]],ignore_index=True)
    j+=1
data=data[:10]
data=data.sort_values(by='Stocks',ascending=False,ignore_index=True)
data.sort_values(by='Stocks',ascending=False,ignore_index=True)
Code Name Market Amount Stocks
0 000660 SK하이닉스 KOSPI 2.343187e+11 728002365.0
1 017670 SK텔레콤 KOSPI 5.676284e+10 218833144.0
2 402340 SK스퀘어 KOSPI 2.073002e+10 141467571.0
3 096770 SK이노베이션 KOSPI 8.618066e+10 92465564.0
4 326030 SK바이오팜 KOSPI 6.950175e+09 78313250.0
5 302440 SK바이오사이언스 KOSPI 4.051631e+10 76784046.0
6 034730 SK KOSPI 4.698633e+10 74149329.0
7 361610 SK아이이테크놀로지 KOSPI 4.402923e+10 71297592.0
8 011790 SKC KOSPI 2.060931e+10 37868298.0
9 285130 SK케미칼 KOSPI 9.663268e+09 17253783.0
dic=dict()
i=0
for i in data['Name'].unique():
  if 'SK' in i :
    for x,y in enumerate(data[data['Name']==i]['Code']):
      dic[i]=y
print(dic)
    {'SK하이닉스': '000660', 'SK텔레콤': '017670', 'SK스퀘어': '402340', 'SK이노베이션': '096770', 'SK바이오팜': '326030', 'SK바이오사이언스': '302440', 'SK': '034730', 'SK아이이테크놀로지': '361610', 'SKC': '011790', 'SK케미칼': '285130'}
data[['Name','Code']]
Name Code
0 SK하이닉스 000660
1 SK텔레콤 017670
2 SK스퀘어 402340
3 SK이노베이션 096770
4 SK바이오팜 326030
5 SK바이오사이언스 302440
6 SK 034730
7 SK아이이테크놀로지 361610
8 SKC 011790
9 SK케미칼 285130
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.gridspec as gridspec
grid=gridspec.GridSpec(2,5)#그래프를 그릴 도화지 개수 
plt.figure(figsize=(50,50))
plt.subplots_adjust(wspace=0.3,hspace=0.3) #그래프 간의 거리 조절

#서버플롯 그리기
for idx, feature in enumerate(dic.keys()):
  data=fdr.DataReader(dic[feature],'2023')
  ax=plt.subplot(grid[idx])
  sns.barplot(x=data.index,y='Change',data=data,palette='pastel',ax=ax)
  ax.set_title(f'2023 {feature} Distribution')

png

SK는 전체적으로 상승비율이 높으나 상위 10개 중 약 3개의 기업은 상승과 하락의 비율이 비슷하다.


카카오 기업의 stocks 지수 변화 그래프

import pandas as pd
data=pd.DataFrame({'Code':[],'Name':[],'Market':[],'Amount':[],'Stocks':[]})
j=0
for i in df_krx['Name'].unique():
  if '카카오' in i :
    data=pd.concat([data,df_krx[df_krx['Name']==i][['Code','Name','Market','Amount','Stocks']]],ignore_index=True)
    j+=1
data=data[:10]
data=data.sort_values(by='Stocks',ascending=False,ignore_index=True)
data.sort_values(by='Stocks',ascending=False,ignore_index=True)
Code Name Market Amount Stocks
0 323410 카카오뱅크 KOSPI 5.261706e+10 476730637.0
1 035720 카카오 KOSPI 1.670275e+11 445423689.0
2 377300 카카오페이 KOSPI 6.393973e+10 133002827.0
3 293490 카카오게임즈 KOSDAQ GLOBAL 2.814815e+10 82289947.0
dic=dict()
i=0
for i in data['Name'].unique():
  if '카카오' in i :
    for x,y in enumerate(data[data['Name']==i]['Code']):
      dic[i]=y
print(dic)
    {'카카오뱅크': '323410', '카카오': '035720', '카카오페이': '377300', '카카오게임즈': '293490'}
data[['Name','Code']]
Name Code
0 카카오뱅크 323410
1 카카오 035720
2 카카오페이 377300
3 카카오게임즈 293490
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.gridspec as gridspec
grid=gridspec.GridSpec(2,2)#그래프를 그릴 도화지 개수 
plt.figure(figsize=(10,10))
plt.subplots_adjust(wspace=0.3,hspace=0.3) #그래프 간의 거리 조절

#서버플롯 그리기
for idx, feature in enumerate(dic.keys()):
  data=fdr.DataReader(dic[feature],'2023')
  ax=plt.subplot(grid[idx])
  sns.barplot(x=data.index,y='Change',data=data,palette='pastel',ax=ax)
  ax.set_title(f'2023 {feature} Distribution')

png

카카오는 전체적으로 상승 비율이 높다.


: 현대 상위 10개 기업의 stocks 지수 변화 그래프

import pandas as pd
data=pd.DataFrame({'Code':[],'Name':[],'Market':[],'Amount':[],'Stocks':[]})
j=0
for i in df_krx['Name'].unique():
  if '현대' in i :
    data=pd.concat([data,df_krx[df_krx['Name']==i][['Code','Name','Market','Amount','Stocks']]],ignore_index=True)
    j+=1
data=data[:10]
data=data.sort_values(by='Stocks',ascending=False,ignore_index=True)
data.sort_values(by='Stocks',ascending=False,ignore_index=True)
Code Name Market Amount Stocks
0 005380 현대차 KOSPI 2.060007e+11 213668187.0
1 004020 현대제철 KOSPI 1.249554e+10 133445785.0
2 000720 현대건설 KOSPI 3.932127e+10 111355765.0
3 064350 현대로템 KOSPI 1.258771e+11 109142293.0
4 012330 현대모비스 KOSPI 7.284671e+10 94285094.0
5 329180 현대중공업 KOSPI 4.161352e+10 88773116.0
6 267250 HD현대 KOSPI 1.260597e+10 78993085.0
7 010620 현대미포조선 KOSPI 3.342243e+10 39942149.0
8 086280 현대글로비스 KOSPI 1.261585e+10 37500000.0
9 005387 현대차2우B KOSPI 2.340005e+10 36485451.0
dic=dict()
i=0
for i in data['Name'].unique():
  if '현대' in i :
    for x,y in enumerate(data[data['Name']==i]['Code']):
      dic[i]=y
print(dic)
    {'현대차': '005380', '현대제철': '004020', '현대건설': '000720', '현대로템': '064350', '현대모비스': '012330', '현대중공업': '329180', 'HD현대': '267250', '현대미포조선': '010620', '현대글로비스': '086280', '현대차2우B': '005387'}
data[['Name','Code']]
Name Code
0 현대차 005380
1 현대제철 004020
2 현대건설 000720
3 현대로템 064350
4 현대모비스 012330
5 현대중공업 329180
6 HD현대 267250
7 현대미포조선 010620
8 현대글로비스 086280
9 현대차2우B 005387
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.gridspec as gridspec
grid=gridspec.GridSpec(3,4)#그래프를 그릴 도화지 개수 
plt.figure(figsize=(30,30))
plt.subplots_adjust(wspace=0.3,hspace=0.3) #그래프 간의 거리 조절

#서버플롯 그리기
for idx, feature in enumerate(dic.keys()):
  data=fdr.DataReader(dic[feature],'2023')
  ax=plt.subplot(grid[idx])
  sns.barplot(x=data.index,y='Change',data=data,palette='pastel',ax=ax)
  ax.set_title(f'2023 {feature} Distribution')

png

현대로텀의 stock이 0.1보다 상위로 가장 높은 상승을 보였고, 현대는 전체적으로 상승과 하락의 비율이 비슷하다.


author-profile
Written by Jins

댓글