Отображение первых пяти строк нового набора данных с отображением всех строк NaN в столбце с использованием .isnull в pandas

У меня есть набор данных о погоде, который я удалил, чтобы найти только те строки в столбце, которые показывают значение NaN с использованием .isnull. Я хотел бы показать первые пять строк этого нового набора данных, используя .head, но система показывает первые пять строк всей таблицы (даже те, у которых есть значение). Как я могу работать с этим вновь созданным набором данных, отображающим первые пять строк этих строк, показывающих NaN в качестве значения? Сначала я дал таблице excel имя «лондон», используя london = read_csv('London_2014.csv'). Затем я использовал код london[london['Max Gust SpeedKm/h'].isnull(), чтобы показать только значения "NaN" для столбца "Max Gust SpeedKm/h". Когда я пытаюсь переименовать вновь созданный набор данных следующим образом : londonNew=london[london['Max Gust SpeedKm/h'].isnull()] и затем попробуйте londonNew=london[london['Max Gust SpeedKm/h'].head()] система выдала мне следующую ошибку: KeyError Traceback (последний последний вызов) в 1 londonNew=london[london['Max Gust SpeedKm/h'].isnull()]----> 2 londonNew[londonNew['Max GustSpeedKm/h'].head() ]/usr/local/lib/python3.6/distpackages/pandas/core/frame.py в getitem(self, key)2804, если is_iterator(key)2805 key = list(key)- > 2806 indexer =self.loc._get_listlike_indexer(key, axis=1, raise_missing=True)[1]2807 2808 # take(не принимает логические индексаторы/usr/local/lib/python3.6/dist-packages/pandas/ core/indexing.py в _get_listlike_indexer(self, key, axis, raise_missing) – 1551 1552 self._validate_read_indexer(-> 1553 keyarr, indexer,o._get_axis_number(ось), raise_missing=raise_missing1554 )1555 вернуть keyarr, indexer/usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py in_validate_read_indexer(self, key, indexer, axis, raise_missing) 1638 если отсутствует == len( indexer):1639 axis_name = self.obj._get_axis_name(axis-> 1640 raiseKeyError(f"Ни один из [{key}] не находится в [{axis_name}]")1641 1642 # Мы (временно) допускаем некоторые отсутствующие ключи с .loc, кроме inKeyError: "Ни один из [Float64Index([nan, nan, nan, nan, nan], dtype='float64')] не находится в [столбцах]" –

Я не уверен, что я делаю неправильно.

Большое спасибо за вашу помощь! Инга


person Inga    schedule 04.06.2020    source источник
comment
Можете ли вы опубликовать некоторые примеры данных + код, чтобы мы могли точно увидеть, что вы пытаетесь сделать и что вы пробовали?   -  person Bertil Johannes Ipsen    schedule 04.06.2020
comment
Привет, Бертиль, большое спасибо, что вернулся ко мне. У меня есть таблица с данными о погоде. В столбце Max Gust SpeedKm/h у меня есть некоторые значения NaN, и я отфильтровал их, чтобы видеть только те строки, которые содержат NaN, используя код: london[london['Max Gust SpeedKm/h'].isnull( ). Я хотел работать с этим новым набором данных, чтобы отображать только первые 5 строк этого нового набора данных, где все значения Max Gust SpeedKm/h равны NaN. Но когда я ввожу: london[london.head()] я получаю первые пять строк исходного набора данных. Как я могу создать новый набор данных из отфильтрованных данных?   -  person Inga    schedule 07.06.2020
comment
Можно ли сюда прикрепить скриншоты или листы excel? Тогда я мог бы отправить вам файл, на который я ссылаюсь. Извините, я новичок на сайте. В настоящее время я прохожу курс Python Coding, и эта задача уже несколько дней занимает мою голову. Так что ваша помощь очень ценится! :-)   -  person Inga    schedule 07.06.2020
comment
Вам необходимо предоставить минимальный воспроизводимый пример в текстовой форме, а не в виде изображения. Отредактируйте свой вопрос, чтобы отобразить это, а также весь код, относящийся к вашему вопросу.   -  person Bertil Johannes Ipsen    schedule 07.06.2020


Ответы (1)


Я думаю, что все, что происходит, это то, что вы забываете присвоить новое представление переменной. Попробуй это:

new_london = london[london['Max Gust SpeedKm/h'].isnull()]
new_london.head()

Или, если вы хотите изменить фрейм данных london, чтобы он работал только с этими новыми данными:

london = london[london['Max Gust SpeedKm/h'].isnull()]
london.head()
person Bertil Johannes Ipsen    schedule 07.06.2020
comment
Спасибо Бертиль! Я попробовал это, и он возвращается с ошибкой имени: NameError Traceback (последний последний вызов) ‹ipython-input-2-292161984840› в ‹module› ----› 1 new_london=london[london['Max Gust SpeedKm/ h'].isnull()] 2 new_london.head() NameError: имя "лондон" не определено - person Inga; 07.06.2020
comment
Это означает, что у вас нет переменной фрейма данных с именем Лондон, как указано в вашем комментарии. - person Bertil Johannes Ipsen; 07.06.2020
comment
Спасибо Бертиль. Это очень странно! В самом начале моего исследования я использовал london = read_csv('London_2014.csv'), чтобы назвать свою таблицу excel london. С тех пор я выполнял всю свою кодировку, используя лондон в качестве имени, и это работало. У вас есть другая идея, которую я мог бы попробовать? - person Inga; 09.06.2020
comment
Я также попытался назвать новую базу данных londonNew и написать код следующим образом: londonNew=london[london['Max Gust SpeedKm/h'].isnull()] и затем londonNew=london[london['Max Gust SpeedKm/h'] .head()], но это выдает следующую ошибку: - person Inga; 09.06.2020
comment
KeyError Traceback (последний последний вызов) ‹ipython-input-86-338f0b8a3d4f› в ‹module› 1 londonNew=london[london['Max Gust SpeedKm/h'].isnull()] ----› 2 londonNew=london [london['Max Gust SpeedKm/h'].head()] /usr/local/lib/python3.6/dist-packages/pandas/core/frame.py в __getitem__(self, key) 2804 if is_iterator(key ): 2805 ключ = список(ключ) - person Inga; 09.06.2020
comment
-> 2806 indexer = self.loc._get_listlike_indexer(key, axis=1, raise_missing=True)[1] 2807 2808 # take() не принимает логические индексаторы /usr/local/lib/python3.6/dist-packages/ pandas/core/indexing.py в _get_listlike_indexer(self, key, axis, raise_missing) 1551 1552 self._validate_read_indexer(-> 1553 keyarr, indexer, o._get_axis_number(axis), raise_missing=raise_missing 1554) - person Inga; 09.06.2020
comment
1555 вернуть keyarr, indexer /usr/local/lib/python3.6/dist-packages/pandas/core/indexing.py в _validate_read_indexer(self, key, indexer, axis, raise_missing) 1638 если отсутствует == len(indexer): 1639 axis_name = self.obj._get_axis_name(axis) -> 1640 поднять KeyError(fНи один из [{key}] не находится в [{axis_name}]) 1641 1642 # Мы (временно) разрешаем некоторые отсутствующие ключи с .loc, кроме в KeyError: ни один из [Float64Index([66.0, 50.0, 69.0, 39.0, nan], dtype='float64')] не находится в [столбцах]. Я не уверен, что делать. - person Inga; 09.06.2020
comment
Только что попробовал с этим londonNew=london[london['Max Gust SpeedKm/h'].isnull()] londonNew[londonNew['Max Gust SpeedKm/h'].head()] Я понял, что не использовал londonNew после переименования набор данных, но он все равно выдает мне ключевую ошибку! - person Inga; 09.06.2020
comment
KeyError Traceback (последний последний вызов)‹ipython-input-281-3e8749fd3f44› в ‹module›1 londonNew=london[london['Max Gust SpeedKm/h'].isnull()]----›2 londonNew[londonNew ['Max GustSpeedKm/h'].head()]/usr/local/lib/python3.6/distpackages/pandas/core/frame.py в __getitem__(self, key)2804, если is_iterator(key)2805 key = list(key)-> 2806 indexer =self.loc._get_listlike_indexer(key, axis=1, raise_missing=True)[1]2807 2808 # take(не принимает логические индексаторы/usr/local/lib/python3.6/dist -packages/pandas/core/indexing.py в _get_listlike_indexer(self, key, axis, raise_missing) - person Inga; 09.06.2020
comment
1551 1552 self._validate_read_indexer(-> 1553 keyarr, indexer,o._get_axis_number(axis), raise_missing=raise_missing1554 )1555 return keyarr, indexer/usr/local/lib/python3.6/dist-packages/pandas/core/indexing. py in_validate_read_indexer(self, key, indexer, axis, raise_missing) 1638 если отсутствует == len(indexer):1639 axis_name = self.obj._get_axis_name(axis-› 1640 raiseKeyError(fNone of [{key}] is in [{ axis_name}])1641 1642 # Мы (временно) разрешаем некоторые отсутствующие ключи с .loc, за исключением inKeyError: Ни один из [Float64Index([nan, nan, nan, nan, nan], dtype='float64')] не находится в [столбцы] - person Inga; 09.06.2020
comment
Извините, мне все же пришлось сделать это в двух частях, так как я не могу сделать код короче, не удаляя из него какие-либо фактические слова/цифры. Я не знаю, что для тебя важно, а что нет. Извиняюсь! - person Inga; 09.06.2020
comment
Нет, вы должны отредактировать исходный вопрос с помощью написанного вами кода, а не только трассировки. - person Bertil Johannes Ipsen; 09.06.2020
comment
Извините, Бертиль, я снова посмотрел на то, что я ввел, и теперь мне удалось это решить. Проблема заключалась во второй строке кода, которую я написал как londonNew=london[london['Max Gust SpeedKm/h'].head()] вместо londonNew.head(). Я предполагаю, что если бы я просто хотел отобразить столбец Max Gust SpeedKm/h в новой таблице, мне нужно было бы написать londonNew=london[london['Max Gust SpeedKm/h']] и взять его оттуда. Большое спасибо за вашу помощь. Прошу прощения за путаницу. Я только учусь программировать и очень благодарен за помощь эксперта. - person Inga; 09.06.2020
comment
Большой! Если я ответил на ваш вопрос, вы можете щелкнуть серую галочку слева от этого ответа, чтобы отметить его как принятый :-) - person Bertil Johannes Ipsen; 09.06.2020