Spyder, исследователь переменных, xpt

Я прихожу на Python с опытом SAS.

Я импортировал транспортный файл SAS версии 5 (XPT) в python, используя:

df = pd.read_sas(r'C:\mypath\myxpt.xpt')

Этот файл представляет собой простой транспортный файл SAS, преобразованный из набора данных SAS, созданного следующим образом:

DATA myxpt;
  DO i = 1 TO 10;
    y = "XXX";
    OUTPUT;
  END;
RUN;

Файл импортируется правильно, и я могу просмотреть содержимое, используя:

print(df)

снимок экрана, показывающий распечатку данных

Однако, когда я просматриваю файл с помощью проводника переменных, все символьные столбцы отображаются пустыми.

Снимок экрана, показывающий фрейм данных, просматриваемый через проводник

Я попытался прочитать это как набор данных sas вместо транспортного файла и импортировать его в Python, но у меня возникла та же проблема.

Я также попытался создать фрейм данных внутри Python, содержащий символьные столбцы, и это правильно отображается в проводнике переменных.

Любые предложения, что идет не так?

Заранее спасибо.

1 ответ

Решение

Столбец Y является столбцом двоичных строк. Вы должны сначала расшифровать его. Проводник переменных не может угадать правильную кодировку и, по-видимому, не показывает двоичные строки. Если вы не знаете кодировку, вам придется угадывать. Пытаться df['utf8']=df.Y.str.decode('utf8') и посмотрим, имеет ли информация смысл.

Как вы заметили, в функции импорта можно указать кодировку:

df = pd.read_sas(r'C:\mypath\myxpt.xpt', encoding='utf8')

Как примечание, вы всегда должны быть осведомлены и желательно четко указывать используемые кодировки, чтобы избежать серьезных головных болей.

Список всех доступных кодировок и псевдонимов смотрите здесь.

Другие вопросы по тегам