9uant effectue des analyses quantitatives et de la science des données dans le domaine financier. Nous faisons aussi twitter, donc si vous êtes intéressé, suivez-nous!
Je voudrais le partager car il était difficile d'acquérir les données de table qui correspondent au code titres et au code EDINET.
Le code des valeurs mobilières est un numéro à 4 chiffres utilisé pour obtenir des informations boursières des sociétés cotées. En fait, ajoutez 0 à la fin pour obtenir 5 chiffres. Le code EDINET est un alphabet + numéro utilisé lors de l'acquisition d'informations sur l'entreprise sur EDINET, qui est une base de données d'informations sur les résultats financiers.
Nous présenterons comment convertir un code de titres à 4 chiffres en code EDINET.
[EDINET Taxomino et liste des codes](https://disclosure.edinet-fsa.go.jp/E01EW/BLMainController.jsp?uji.bean=ee.bean.W1E62071.EEW1E62071Bean&uji.verb=W1E62071InitDisplay&uji.verb=W1E62071InitDisplay&uji.verb=W1E62071InitDisplay&20WION=71000WID=1000WID=1000WD Au bas de 2 & dflg = 0 & iflg = 0), il y a une "liste de codes EDINET". Cette fois, nous utiliserons Python pour obtenir ces données csv.
Vous devez télécharger le pilote Chrome à l'avance. Veuillez télécharger depuis site de téléchargement chromedriver en fonction de votre version de chrome.
get_edinet_code_csv.py
import glob
import os
import shutil
import time
from selenium import webdriver
import zipfile
def get_edinet_code_csv(edinetcode_dir):
'''
Téléchargez le fichier csv de la liste de codes EDINET dans le répertoire spécifié
Prameter:
edinetcode_dir: str
Répertoire pour télécharger les fichiers csv de la liste de codes EDINET
Return:
edinet_code_list_path: str
Chemin où se trouve le fichier csv de la liste de codes EDINET
'''
'''
#Supprimer le répertoire s'il existe déjà
if os.path.exists(edinetcode_dir):
shutil.rmtree(edinetcode_dir)
'''
#Télécharger le fichier zip de Chrome avec du sélénium
chromeOptions = webdriver.ChromeOptions()
prefs = {"download.default_directory" : edinetcode_dir} #Spécification du répertoire de destination de l'enregistrement
chromeOptions.add_experimental_option("prefs",prefs)
chromeOptions.add_argument('--headless') #Masquer le navigateur
driver = webdriver.Chrome('chemin de chromedriver', chrome_options=chromeOptions)
#Accéder à la liste de codes EDINET d'EDINET
driver.get('https://disclosure.edinet-fsa.go.jp/E01EW/BLMainController.jsp?uji.bean=ee.bean.W1E62071.EEW1E62071Bean&uji.verb=W1E62071InitDisplay&TID=W1E62071&PID=W0EZ0001&SESSIONKEY=&lgKbn=2&dflg=0&iflg=0')
driver.execute_script("EEW1E62071EdinetCodeListDownloadAction('lgKbn=2&dflg=0&iflg=0&dispKbn=1');")
time.sleep(5)
driver.quit()
#Obtenez le chemin du fichier zip téléchargé
list_of_files = glob.glob(edinetcode_dir+r'/*') #Ajouter un caractère générique
latest_file = max(list_of_files, key=os.path.getctime) #Obtenez le chemin du fichier avec la dernière date et heure de création
#Extrayez le fichier zip dans le même répertoire
zip_f = zipfile.ZipFile(latest_file)
zip_f.extractall(edinetcode_dir)
zip_f.close()
#Supprimer le fichier zip
os.remove(latest_file)
list_of_files = glob.glob(edinetcode_dir+r'/*') #Ajouter un caractère générique
return max(list_of_files, key=os.path.getctime) #Renvoie le chemin du fichier csv extrait
Convertissez la séquence de codes de titres en séquence de codes EDINET.
stockcode_to_edinetcode.py
import numpy as np
import pandas as pd
edinet_code_path=get_edinet_code_csv(r"Liste de codes EDINET chemin du répertoire de destination de téléchargement csv")
edinet_code_df=pd.read_csv(edinet_code_path,encoding="cp932",header=1,usecols=['Code EDINET', 'Nom de l'expéditeur', 'Code des valeurs'])
def stockcode_to_edinetcode(codes):
'''
Obtenez la séquence de code EDINET correspondant à (la séquence de) le code de titres
Parameter:
codes: int or float or str or list
Code titre ou son tableau
Return:
edinet_codes: list
Tableau de code EDINET correspondant à l'ordre des arguments
'''
#Convertir tous les arguments en un tableau
if type(codes) in (str, int, float):
codes = [int(codes)]
edinet_codes = []
for code in codes:
#Convertir le code de titres à 4 chiffres en 5 chiffres
if len(str(int(code)))==4:
code = str(int(code))+'0'
tmp = edinet_code_df[edinet_code_df['Code des valeurs']==int(code)]['Code EDINET']
if len(tmp)==0: #Np si le code EDINET correspondant n'existe pas.Renvoie nan
edinet_codes.append(np.nan)
else:
edinet_codes.append(tmp.to_list()[0])
return edinet_codes
Recommended Posts