Панды, выдающие необычный результат при использовании read_csv () с header = None - PullRequest
0 голосов
/ 05 мая 2018

При импорте набора данных радужной оболочки для некоторого анализа, когда я просто пытаюсь читать read_csv () с header = None, все типы полей изменяются на строковые, изначально будучи плавающими. Но этого не происходит, когда header = None не используется.

enter image description here

1 Ответ

0 голосов
/ 05 мая 2018

Это ожидаемое поведение. Рассмотрим следующую демонстрацию:

CSV-файл:

col1,col2,col3
1,2,3
4,5,6
7,8,9

Демо-версия:

In [179]: pd.read_csv(filename)
Out[179]:
   col1  col2  col3
0     1     2     3
1     4     5     6
2     7     8     9

In [180]: pd.read_csv(filename).dtypes
Out[180]:
col1    int64
col2    int64
col3    int64
dtype: object

если вы передадите header=None - pd.read_csv(), первая строка будет рассматриваться как данные, а не имена столбцов (заголовок). Очевидно, что строки типа col1, col2 (имена столбцов) не могут быть преобразованы в числовой тип dtype, поэтому все столбцы будут иметь object dtype:

In [181]: pd.read_csv(filename, header=None)
Out[181]:
      0     1     2
0  col1  col2  col3
1     1     2     3
2     4     5     6
3     7     8     9

In [182]: pd.read_csv(filename, header=None).dtypes
Out[182]:
0    object
1    object
2    object
dtype: object

используя skiprows=1, вы можете указать пандам игнорировать (пропустить) первый ряд:

In [183]: pd.read_csv(filename, header=None, skiprows=1)
Out[183]:
   0  1  2
0  1  2  3
1  4  5  6
2  7  8  9

In [184]: pd.read_csv(filename, header=None, skiprows=1).dtypes
Out[184]:
0    int64
1    int64
2    int64
dtype: object

PS на самом деле вам не нужно игнорировать имена столбцов - большинство алгоритмов машинного обучения принимают панды DataFrames (с именами столбцов). Если вам нужно передать массив Numpy вместо pandas.DataFrame, тогда используйте df.values

In [185]: df = pd.read_csv(filename)

In [186]: df
Out[186]:
   col1  col2  col3
0     1     2     3
1     4     5     6
2     7     8     9

In [187]: df.values
Out[187]:
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]], dtype=int64)

In [188]: type(df.values)
Out[188]: numpy.ndarray
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...