!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')
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')

삼성은 상승과 하락의 비율이 비슷하다.
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')

LG는 전체적으로 상승 비율이 높다.
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')

SK는 전체적으로 상승비율이 높으나 상위 10개 중 약 3개의 기업은 상승과 하락의 비율이 비슷하다.
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')

카카오는 전체적으로 상승 비율이 높다.
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')

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