9uant betreibt quantitative Analyse und Datenwissenschaft im Finanzbereich. Wir machen auch Twitter, also wenn Sie interessiert sind, folgen Sie uns bitte!
Ich möchte es teilen, weil es schwierig war, die Tabellendaten zu erfassen, die dem Wertpapiercode und dem EDINET-Code entsprechen.
Der Wertpapiercode ist eine 4-stellige Nummer, mit der Aktieninformationen von börsennotierten Unternehmen abgerufen werden. Fügen Sie am Ende 0 hinzu, um 5 Stellen zu erhalten. Der EDINET-Code ist ein Alphabet + eine Zahl, die beim Erfassen von Unternehmensinformationen zu EDINET verwendet wird, einer Datenbank mit Informationen zu Finanzergebnissen.
Wir werden vorstellen, wie ein 4-stelliger Wertpapiercode in einen EDINET-Code konvertiert wird.
EDINET Taxomino und Codeliste Am Ende von 2 & dflg = 0 & iflg = 0) befindet sich eine "EDINET-Codeliste". Dieses Mal werden wir Python verwenden, um diese CSV-Daten abzurufen.
Sie müssen den Chrome-Treiber im Voraus herunterladen. Bitte laden Sie von chromedriver download site entsprechend Ihrer Chrome-Version herunter.
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):
'''
Laden Sie die CSV-Datei der EDINET-Codeliste in das angegebene Verzeichnis herunter
Prameter:
edinetcode_dir: str
Verzeichnis zum Herunterladen von CSV-Dateien der EDINET-Codeliste
Return:
edinet_code_list_path: str
Der Pfad, in dem die CSV-Datei der EDINET-Codeliste vorhanden ist
'''
'''
#Löschen Sie das Verzeichnis, falls es bereits vorhanden ist
if os.path.exists(edinetcode_dir):
shutil.rmtree(edinetcode_dir)
'''
#Laden Sie die Zip-Datei von Chrome mit Selen herunter
chromeOptions = webdriver.ChromeOptions()
prefs = {"download.default_directory" : edinetcode_dir} #Angabe des Speicherzielverzeichnisses
chromeOptions.add_experimental_option("prefs",prefs)
chromeOptions.add_argument('--headless') #Browser ausblenden
driver = webdriver.Chrome('Chromedriver Pfad', chrome_options=chromeOptions)
#Greifen Sie auf die EDINET-Codeliste von EDINET zu
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()
#Holen Sie sich den Pfad der heruntergeladenen Zip-Datei
list_of_files = glob.glob(edinetcode_dir+r'/*') #Platzhalter hinzufügen
latest_file = max(list_of_files, key=os.path.getctime) #Rufen Sie den Dateipfad mit dem Datum und der Uhrzeit der letzten Erstellung ab
#Extrahieren Sie die Zip-Datei in dasselbe Verzeichnis
zip_f = zipfile.ZipFile(latest_file)
zip_f.extractall(edinetcode_dir)
zip_f.close()
#Zip-Datei löschen
os.remove(latest_file)
list_of_files = glob.glob(edinetcode_dir+r'/*') #Platzhalter hinzufügen
return max(list_of_files, key=os.path.getctime) #Gibt den Pfad der extrahierten CSV-Datei zurück
Konvertieren Sie die Wertpapiercodesequenz in die EDINET-Codesequenz.
stockcode_to_edinetcode.py
import numpy as np
import pandas as pd
edinet_code_path=get_edinet_code_csv(r"EDINET-Codeliste CSV-Download-Zielverzeichnispfad")
edinet_code_df=pd.read_csv(edinet_code_path,encoding="cp932",header=1,usecols=['EDINET-Code', 'Name des Absenders', 'Wertpapiercode'])
def stockcode_to_edinetcode(codes):
'''
Holen Sie sich die EDINET-Codesequenz, die dem Wertpapiercode entspricht
Parameter:
codes: int or float or str or list
Wertpapiercode oder sein Array
Return:
edinet_codes: list
Array von EDINET-Code entsprechend der Reihenfolge der Argumente
'''
#Konvertieren Sie alle Argumente in ein Array
if type(codes) in (str, int, float):
codes = [int(codes)]
edinet_codes = []
for code in codes:
#Konvertieren Sie den 4-stelligen Wertpapiercode in einen 5-stelligen
if len(str(int(code)))==4:
code = str(int(code))+'0'
tmp = edinet_code_df[edinet_code_df['Wertpapiercode']==int(code)]['EDINET-Code']
if len(tmp)==0: #Np wenn der entsprechende EDINET-Code nicht existiert.Gibt nan zurück
edinet_codes.append(np.nan)
else:
edinet_codes.append(tmp.to_list()[0])
return edinet_codes
Recommended Posts