Как я могу напечатать имя Dataframe и проверить строку и столбец в Dataframe в Python? - PullRequest
0 голосов
/ 03 мая 2020

У меня проблема с отображением имени Dataframe и проверкой строки и столбца в Dataframe в Python.

Вот мои кадры данных со строками и столбцами.

print("x_train: ",x_train.shape)
print("x_test: ",x_test.shape)
print("y_train: ",y_train.shape)
print("y_test: ",y_test.shape)

Вывод показано ниже.

x_train:  (30, 455)
x_test:  (30, 114)
y_train:  (455,)
y_test:  (114,)

Я написал фрагмент кода, показанный ниже, чтобы показать имя Dataframe, а также строки и столбцы Dataframe. Выдает tuple out of range, потому что y_train и y_test не имеют столбца.

    def showRowsandColumns(value):
    name =[x for x in globals() if globals()[x] is value][0]
    if not isinstance(value, pd.DataFrame):
        value = value.to_frame()
    if not value.shape[0] and  value.shape[1]:
        value_count_row = value.shape[0]  # gives number of row count
        value_count_col = value.shape[1]  # gives number of col count
    elif value.shape[0] and not value.shape[1]:
        value_count_row = value.shape[0]  # gives number of row count
        value_count_col = 0
    elif not value.shape[0] and value.shape[1]:
        value_count_row = 0  # gives number of row count
        value_count_col = value.shape[1]
    else:
        value_count_row = value.shape[0]  # gives number of row count
        value_count_col = value.shape[1]  # gives number of col count
    print("{} : {} rows and {} columns "
          .format(name,value_count_row,value_count_col))

showRowsandColumns(x_train)
showRowsandColumns(x_test)
showRowsandColumns(y_train)
showRowsandColumns(y_test)

ошибка:

AttributeError: 'numpy.ndarray' object has no attribute 'to_frame'

Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

Ваш метод выдает ошибку для y_train и y_test, потому что они не являются фреймами данных, а находятся в серии документов. Вы видите это по их форме. Если вы хотите, вы можете сделать print (type (y_test))), и это покажет, что они находятся в серии документов, а не в DataFrames.

Один из самых простых способов - просто преобразовать y_test и y_train в DataFrame перед передачей. это к вашему методу:

 y_test = y_test.to_frame()
 showRowsandColumns(y_test)

Вы делаете это только для серии (в вашем случае y_test, y_train)

Обратите внимание, что они изменены на DataFrme, поэтому вам нужно обработать его соответственно вниз по линии.

Вот пример:

y = df['col5']
print(y.shape)
print(type(y))
print(y.ndim)

(4,)
<class 'pandas.core.series.Series'>
1

Я конвертирую эту серию в DF:

y = y.to_frame()
y.shape

Я вызываю вашу функцию:

showRowsandColumns(y)

4 rows and 1 columns
0 голосов
/ 03 мая 2020

Если вы ищете количество строк и столбцов, то pandas .DataFrame.shape возвращает кортеж, содержащий (строки, столбцы)

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