Код: Выделить всё
from datetime import datetime
import json
import numpy as np
import statsmodels.api as stats
import statsmodels.tsa.stattools as ts
from statsmodels.tsa.stattools import adfuller
import pandas as pd
import requests
import seaborn
import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)
def get_trade_stats(ticker: str, start_date: str, end_date: str):
url = f'https://iss.moex.com/iss/datashop/algopack/eq/tradestats/{ticker}.csv?from={start_date}&till={end_date}&iss.only=data'
df = pd.read_csv(url, sep=';', skiprows=2)
df['Datetime'] = pd.to_datetime(df['tradedate'] + ' ' + df['tradetime'])
df.set_index("Datetime", inplace=True)
df.drop(['tradedate', 'tradetime'], inplace = True, axis=1)
return df
def get_sec_info(market="TQBR"):
data = requests.get(f'https://iss.moex.com/iss/engines/stock/markets/shares/boards/{market}/securities.json').text
registry=json.loads(data)
return pd.DataFrame.from_dict(registry["securities"]["data"])
def get_all_tickers():
df = get_sec_info()
return list(df[0])
def get_close(df):
return df["pr_close"]
def get_historic_data(tickers: list, start_date: str, end_date: str):
tbl = pd.DataFrame(columns=tickers)
for ticker in tickers:
df = get_trade_stats(ticker, start_date, end_date)
tbl [ticker] = get_close(df)
return tbl
all_tickers = get_all_tickers()
print(all_tickers)
def get_viable_historic_data(start_date = '2023-11-20', end_date = '2023-11-30'):
df = get_historic_data(get_all_tickers(), start_date, end_date)
df.dropna(axis='columns', inplace=True) #dropping columns with NaNs
return df
df_viable = get_viable_historic_data()
tickers = df_viable.columns
print(tickers)
Я пробовал разные варианты, но ошибка не устранена. Пожалуйста, помогите.
ParserError: Ошибка токенизации данных. Ошибка C: Ожидалось 1 поле в строке 9, увидело 2
как это исправить?
полный текст ошибка
Не могу понять, в чем ошибка. При необходимости могу прислать ссылку на оригинальный файл.
Код: Выделить всё
ParserError Traceback (most recent call last)
in ()
1 # Найдем инструменты, среди которых будем искать коинтегрированные пары:
2
----> 3 df_viable = get_viable_historic_data()
4 tickers = df_viable.columns
5 print(tickers)
6 frames
/usr/local/lib/python3.10/dist-packages/pandas/io/parsers/c_parser_wrapper.py in read(self, nrows)
232 try:
233 if self.low_memory:
--> 234 chunks = self._reader.read_low_memory(nrows)
235 # destructive to chunks
236 data = _concatenate_chunks(chunks)
parsers.pyx in pandas._libs.parsers.TextReader.read_low_memory()
parsers.pyx in pandas._libs.parsers.TextReader._read_rows()
parsers.pyx in pandas._libs.parsers.TextReader._tokenize_rows()
parsers.pyx in pandas._libs.parsers.TextReader._check_tokenize_status()
parsers.pyx in pandas._libs.parsers.raise_parser_error()
ParserError: Error tokenizing data. C error: Expected 1 fields in line 9, saw 2
Подробнее здесь: https://stackoverflow.com/questions/791 ... ne-9-saw-2
Мобильная версия