Как пропустить строки с неправильными типами данных набора данных с помощью python

#python #pandas

Вопрос:

Работая над очисткой набора данных и обработкой данных для дальнейшего анализа, я использовал различные сценарии очистки.

Мой сценарий прерывается всякий раз, когда между столбцами набора данных появляются какие-либо нежелательные / обычные данные, выполнение сценария застревает, а остальные данные не обрабатываются.

Скрипт, который я пробовал использовать :

 import pandas as pd 
import numpy as np
pd.options.mode.chained_assignment = None 
df = pd.read_excel(open(r'data.xlsx', 'rb'), sheet_name='sheet1')
 

То, чего я ожидал :

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

Любой метод обработки исключений, который я могу использовать в этом.

Пожалуйста, предложите.

Комментарии:

1. Какие исключительные данные могут быть получены из электронной таблицы Excel?

2. @SergeBallesta — При обработке и очистке некоторых столбцов типы данных могут отличаться для того, что мы определили в сценарии, например. иногда мы обрабатываем типы данных int/float, но получаем ошибку при обнаружении строкового типа данных. Таким же образом это происходит с остальной частью столбца с типом данных diff и наоборот.

3. Но действительно ли ошибка возникла при read_excel вашей дальнейшей обработке или при ее дальнейшей обработке? В последнем случае вы должны показать код, который вызывает ошибку, вместе с примером данных.

4. @SergeBallesta — просто хочу спросить, есть ли способ обработки файла Excel, такого как error_bad_lines=False, который мы используем при чтении CSV-файла

5. Вы должны привести минимальный пример (часть) сценария, который вы используете для обработки фрейма данных, и достаточное количество входных данных для воспроизведения. Без этого на ваш вопрос невозможно ответить.

Ответ №1:

Мне кажется, я не совсем понимаю проблему.

У меня всегда просто так это делалось, никогда не было проблем..

 import pandas as pd
FileLocation = (r'Test.xlsx')
df = pd.read_excel(FileLocation, sheet_name='sheet1')
print(df.head)
 

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

Но если у вас возникли проблемы с программой чтения Excel, считывающей ее как плавающую, но вы хотите, чтобы она была строковой, вы можете сделать это:

 import pandas as pd
FileLocation = (r'Test.xlsx')
df = pd.read_excel(FileLocation, sheet_name='sheet1', converters={'COLUMN-NAME':str})
print(df.head)
 

Тогда вы получите нужный столбец в виде строки или чего угодно еще.