Excel nan что это

Содержание

  1. Pandas read_excel возвращает nan для ячеек, имеющих простую формулу, если файл Excel создается программой
  2. 3 ответа
  3. Арифметические операции с плавающей запятой могут давать неточный результат в Excel
  4. Сводка
  5. Обзор
  6. Дополнительная информация
  7. Максимальные/минимальные ограничения
  8. Случаи, в которых мы придерживаемся стандарта IEEE 754
  9. Случаи, в которых мы не придерживаемся стандарта IEEE 754
  10. Точность
  11. Пример с использованием очень больших чисел
  12. Пример с использованием очень маленьких чисел
  13. Исправление ошибок точности
  14. Метод 1. Функция ROUND
  15. Метод 2. Точность как на экране
  16. Повторение двоичных чисел и вычислений с результатами, близкими к нулю
  17. Пример: добавление отрицательного числа
  18. Пример, когда значение достигает нуля
  19. Not a Number — все о NaN / pd 5
  20. Присваивание значения NaN
  21. Фильтрование значений NaN
  22. Заполнение NaN

Pandas read_excel возвращает nan для ячеек, имеющих простую формулу, если файл Excel создается программой

Я использую pd.read_excel для чтения файла Excel, который создается openpyxl и загружается с URL-адреса.

Анализируемый фрейм данных даст nan , если значение ячейки является формулой.

Я пытаюсь открыть его вручную с помощью MS Office, нажимаю кнопку «редактировать» и сохраняю, проблема решена.

Я хочу знать, есть ли решение, которое делает это программно? а если без использования MS Excel или win32com будет отлично. Спасибо

3 ответа

Недостаточно очков для комментариев, но это, вероятно, может вам помочь:

Вы можете использовать формулы

Следующий фрагмент, кажется, работает:

Будет записан файл «TEST_FORMULA.XLSX» (по какой-то причине заглавными буквами) с вычисленными значениями вместо формул. Важно отметить, что это не зависит от Excel.

Если вам нужно вникнуть в подробности, вот документация по формулам.

После нескольких поисков я обнаружил, что мой вопрос может дублироваться (или похож на):

И нашел больше объяснений от:

Некоторые примечания (выводы):

  • openpyxl может записывать, но не вычисляет формулу Excel, он просто считывает кэшированное значение из последнего вычисления MS Excel или других приложений, если это возможно, с аргументами data_only=True .
  • для решения этой проблемы вручную, например, упомянутого ответа @Orlando, откройте приложения Excel и сохраните его (автоматически вычислит / выдаст результаты формулы)
  • для решения этой проблемы программно (с установленным приложением Excel) вы просто используете win32com открыть и сохранить. (см. этот ответ)
  • для решения этой проблемы программно (без приложения Excel) вы должны вычислить результаты из строки формулы Excel самостоятельно или с помощью некоторого модуля, такого как формулы, затем верните вычисленное значение в ячейку ( Предупреждение : формула будет удалена). Если вы также хотите сохранить формулу со значением по умолчанию / кешированным значением, вы должны использовать XlsxWriter, который может записывать формулы в ячейка со значением по умолчанию / кешированным значением.

На мой взгляд, поскольку моя формула очень проста, я использую eval как:

Источник

Арифметические операции с плавающей запятой могут давать неточный результат в Excel

Сводка

В этой статье рассматривается, как Microsoft Excel хранит и вычисляет числа с плавающей запятой. Это может повлиять на результаты некоторых чисел или формул из-за округления или усечения данных.

Обзор

Microsoft Excel был разработан на основе спецификации IEEE 754 для определения способа хранения и вычисления чисел с плавающей запятой. IEEE — институт инженеров электротехники и электроники, международный орган, который, помимо прочего, определяет стандарты для компьютерного программного и аппаратного обеспечения. Спецификация 754 — это широко используемая спецификация, которая описывает, как числа с плавающей запятой должны храниться в компьютере, использующем двоичную систему счисления. Она популярна по той причине, что позволяет хранить числа с плавающей запятой в разумных объемах и выполнять вычисления относительно быстро. Стандарт 754 используется в модулях операций с плавающей запятой и арифметических сопроцессорах почти всех современных микропроцессоров на базе ПК, реализующих вычисления с плавающей запятой, включая процессоры Intel, Motorola, Sun и MIPS.

При хранении чисел соответствующее двоичное число может представлять каждое число или дробное число. Например, дробь 1/10 может быть представлена в десятичной системе счисления как 0,1. Однако то же самое число в двоичном формате становится следующим повторяющимся двоично-десятичным числом:

0001100110011100110011 (и т. д.)

Это число можно бесконечно повторять. Это число не может быть представлено в конечном (ограниченном) пространстве. Поэтому при хранении это число округляется примерно на -2.8E-17 в меньшую сторону.

Однако существуют некоторые ограничения спецификации IEEE 754, которые делятся на три общие категории:

  • Максимальные/минимальные ограничения
  • Точность
  • Повторяющиеся двоичные числа

Дополнительная информация

Максимальные/минимальные ограничения

Все компьютеры имеют максимальное и минимальное количество, которое может быть обработано. Поскольку количество битов памяти, в которых хранится число, является конечным, из этого следует, что максимальное или минимальное число, которое может храниться, также является конечным. Максимальное число, которое может храниться в Excel, — 1.79769313486232E+308, а минимальное положительное число — 2.2250738585072E-308.

Случаи, в которых мы придерживаемся стандарта IEEE 754

  • Потеря точности. Потеря точности возникает в том случае, если генерируется число, которое слишком мало для представления. В IEEE и Excel результат равен 0 (за исключением того, что в IEEE есть понятие -0, а в Excel — нет).
  • Переполнение. Переполнение возникает в том случае, если число слишком велико для представления. Excel использует свое специальное представление для этого случая (#NUM!).

Случаи, в которых мы не придерживаемся стандарта IEEE 754

Ненормализованные числа. Ненормализованное число содержит 0 в экспоненте. В этом случае все число хранится в мантиссе, которая не имеет неявной ведущей единицы. В результате теряется точность, и чем меньше число, тем больше теряется точность. Числа на малом конце этого диапазона имеют только одну цифру точности.

Пример: нормализованное число имеет неявную ведущую единицу. Например, если мантисса представляет собой 0011001, нормализованное число становится 10011001 из-за неявной ведущей единицы. Ненормализованное число не имеет неявной ведущей единицы, поэтому в нашем примере ненормализованное число 0011001 не изменяется. В данном случае нормализованное число имеет восемь значащих цифр (10011001), а ненормализованное — пять значащих цифр (11001), причем ведущие нули являются несущественными.

Ненормализованные числа — это, по сути, обходной путь, позволяющий хранить числа, которые меньше обычного нижнего предела. Корпорация Майкрософт не реализует эту необязательную часть спецификации, поскольку ненормализованные числа по своей природе имеют переменное количество значащих цифр. Это может привести к существенной ошибке в расчетах.

Положительная/отрицательная бесконечность: бесконечность возникает при делении на 0. Excel не поддерживает бесконечность и выдает ошибку #DIV/0! в таких случаях.

Не число (NaN): используется для представления недопустимых операций (таких как бесконечность/бесконечность, бесконечность-бесконечность или квадратный корень из -1). NaNs позволяют программе продолжать работу с недопустимой операцией. Вместо этого Excel немедленно выдает ошибку типа #NUM! или #DIV/0!.

Точность

Число с плавающей запятой хранится в двоичном формате в виде трех частей в 65-битном диапазоне: знак, экспонента и мантисса.

Знак Экспонента Мантисса
1 бит знака 11-битная экспонента 1 неявный бит + 52-битная дробь

Знак хранит знак числа (положительный или отрицательный), экспонента хранит степень 2, в которую возводится или на которую понижается число (максимальная/минимальная степень 2 равна +1.023 и -1.022), а мантисса хранит действительное число. Конечная область хранения мантиссы ограничивает то, насколько близкими могут быть два соседних числа с плавающей запятой (то есть точность).

Мантисса и экспонента хранятся как отдельные компоненты. В результате возможная точность зависит от размера числа (мантиссы), над которым выполняется операция. Хотя Excel может хранить числа от 1.79769313486232E308 до 2.2250738585072E-308, это возможно только в пределах 15 разрядов. Это ограничение является прямым результатом строгого следования спецификации IEEE 754 и не является ограничением Excel. Такой уровень точности встречается и в других программах электронных таблиц.

Числа с плавающей запятой представляются в следующей форме, где экспонента является двоичной экспонентой:

X = дробь * 2^(экспонента — смещение)

Дробь — это нормализованная дробная часть числа, нормализованная по той причине, что экспонента корректируется таким образом, чтобы ведущий бит всегда был равен 1. Таким образом, ее не нужно хранить, и вы получаете еще один бит точности. Вот почему существует неявный бит. Это похоже на экспоненциальное представление, где вы управляете экспонентой, чтобы слева от десятичной запятой располагалась одна цифра; за исключением двоичной системы счисления, вы всегда можете управлять экспонентой так, чтобы первый бит был 1, потому что имеются только 1 и 0.

Смещение — это значение смещения, используемое для предотвращения хранения отрицательных экспонент. Смещение для чисел одинарной точности равно 127 и 1,023 (десятичное) для чисел двойной точности. Excel хранит числа с двойной точностью.

Пример с использованием очень больших чисел

Введите следующие данные в новую рабочую книгу:

Результирующее значение в ячейке C1 будет 1.2E+200, то же значение, что и в ячейке A1. На самом деле, если сравнить ячейки A1 и C1 с помощью функции IF, например IF(A1=C1), результатом будет TRUE. Это вызвано тем, что спецификация IEEE предусматривает хранение только 15 значащих цифр точности. Для хранения приведенного выше расчета Excel потребуется точность не менее 100 разрядов.

Пример с использованием очень маленьких чисел

Введите следующие данные в новую рабочую книгу:

В результате значение в ячейке C1 будет равно 1.00012345678901 вместо 1.000123456789012345. Это вызвано тем, что спецификация IEEE предусматривает хранение только 15 значащих цифр точности. Для хранения приведенного выше расчета Excel потребуется точность не менее 19 разрядов.

Исправление ошибок точности

Excel предлагает два основных метода компенсации ошибок округления: функцию ROUND и параметр в рабочей книге Точность как на экране или Задать точность как на экране.

Метод 1. Функция ROUND

Используя предыдущие данные, в следующем примере функция ROUND используется для приведения числа к пяти цифрам. Это позволяет успешно сравнить результат с другим значением.

В результате получается 1.2E+200.

D1: =IF(C1=1.2E+200, TRUE, FALSE)

В результате получается значение TRUE.

Метод 2. Точность как на экране

В некоторых случаях можно предотвратить влияние ошибок округления на работу с помощью параметра Точность как на экране. Этот параметр заставляет значение каждого числа в рабочем листе быть отображаемым значением. Чтобы включить этот параметр, выполните следующие действия.

  1. В меню Файл нажмите Параметры, затем выберите категорию Дополнительно.
  2. В разделе При пересчете этой книги выберите необходимую книгу, а затем установите флажок Задать точность как на экране.

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

Повторение двоичных чисел и вычислений с результатами, близкими к нулю

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

000110011001100110011 (и т. д.)

Спецификация IEEE 754 не допускает особых ограничений для любого значения. Все, что можно сохранить, хранится в мантиссе, а остальное удаляется. Неточность в таком случае случае составляет около -2.8E-17 или 0,000000000000000028 при хранении.

Даже обычные десятичные дроби, например 0,0001, невозможно точно представить в двоичном формате. (0,0001 — это повторяющаяся двоичная дробь с периодом в 104 бита). Этот явление похоже на невозможность точно представить дробь 1/3 в десятичной системе (повторяющаяся дробь 0.33333333333333333333).

Например, рассмотрим следующий простой пример в Microsoft Visual Basic для приложений:

В таком случае в качестве выходных данных будет выведено значение 0,999999999999996. Небольшая неточность в представлении 0,0001 в двоичном формате распространяется на сумму.

Пример: добавление отрицательного числа

Введите следующие данные в новую рабочую книгу:

A1: =(43,1-43,2)+1

Щелкните правой кнопкой мыши ячейку A1 и выберите пункт Формат ячеек. На вкладке «Числовые форматы» выберите «Инженерный» в разделе «Категория». Установите значение Знаки после запятой на 15.

Вместо значения 0,9 Excel отображает 0,899999999999999. Так как сначала вычисляется (43,1-43,2), значение -0.1 временно сохраняется и к расчету добавляется неточность, возникшая при хранении -0.1.

Пример, когда значение достигает нуля

В Excel 95 или более ранней версии введите в новую книгу следующее:

A1: =1,333+1,225-1,333-1,225

Щелкните правой кнопкой мыши ячейку A1 и выберите пункт Формат ячеек. На вкладке «Числовые форматы» выберите «Инженерный» в разделе «Категория». Установите значение Знаки после запятой на 15.

Вместо 0 Excel 95 отображает -2,22044604925031E-16.

В Excel 97 добавлена оптимизация для устранения этой проблемы. Если в результате операции добавления или вычитания получается значение равно или близко к нулю, Excel 97 и более поздние версии компенсируют неточность, полученную в результате конвертации операнда в двоичную систему и обратно. При выполнении примера, указанного выше, в Excel 97 и более поздней версии в экспоненциальном представлении отображается правильное значение 0 или 0.000000000000000E+00.

Дополнительные сведения о числах с плавающей точкой и спецификации IEEE 754 см. на следующих веб-сайтах:

Источник

Not a Number — все о NaN / pd 5

В предыдущих разделах вы видели, как легко могут образовываться недостающие данные. В структурах они определяются как значения NaN (Not a Value). Такой тип довольно распространен в анализе данных.

Но pandas спроектирован так, чтобы лучше с ними работать. Дальше вы узнаете, как взаимодействовать с NaN , чтобы избегать возможных проблем. Например, в библиотеке pandas вычисление описательной статистики неявно исключает все значения NaN .

Присваивание значения NaN

Если нужно специально присвоить значение NaN элементу структуры данных, для этого используется np.NaN (или np.nan ) из библиотеки NumPy.

Фильтрование значений NaN

Есть несколько способов, как можно избавиться от значений NaN во время анализа данных. Это можно делать вручную, удаляя каждый элемент, но такая операция сложная и опасная, к тому же не гарантирует, что вы действительно избавились от всех таких значений. Здесь на помощь приходит функция dropna() .

Функцию фильтрации можно выполнить и прямо с помощью notnull() при выборе элементов.

В случае с Dataframe это чуть сложнее. Если использовать функцию pandas dropna() на таком типе объекта, который содержит всего одно значение NaN в колонке или строке, то оно будет удалено.

ball mug pen
blue 6.0 NaN 6.0
green NaN NaN NaN
red 2.0 NaN 5.0

Таким образом чтобы избежать удаления целых строк или колонок нужно использовать параметр how , присвоив ему значение all . Это сообщит функции, чтобы она удаляла только строки или колонки, где все элементы равны NaN .

ball mug pen
blue 6.0 NaN 6.0
red 2.0 NaN 5.0

Заполнение NaN

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

ball mug pen
blue 6.0 0.0 6.0
green 0.0 0.0 0.0
red 2.0 0.0 5.0

Или же NaN можно заменить на разные значения в зависимости от колонки, указывая их и соответствующие значения.

Источник

Here are the different error-codes that Excel knows about, stored in XML format:

<Cell><Data ss:Type="Error">#DIV/0!</Data></Cell>
<Cell><Data ss:Type="Error">#NUM!</Data></Cell>
<Cell><Data ss:Type="Error">#VALUE!</Data></Cell>
<Cell><Data ss:Type="Error">#N/A</Data></Cell>
<Cell><Data ss:Type="Error">#NAME?</Data></Cell>
<Cell><Data ss:Type="Error">#REF!</Data></Cell>
<Cell><Data ss:Type="Error">#NULL!</Data></Cell>

Only the first two are relevant for your question, but I added the others for the sake of completeness.

But occasionly the value I’m writing has either NaN, DIV/0, or INF

DIV/0 maps to #DIV/0!. I do not think there is a distinction between NaN or INF in Excel, they both seem to be expressed as #NUM!. For example, both of the following formulas resulted in #NUM!, even though the first one is an invalid number whereas the second one is just very large.

=ASIN(2)
=EXP(EXP(10))

Interesting, tough hardly useful: Excel allows you to enter these literal error values (including all punctuation) into cells on your worksheet without a problem. In a sense, these are built-in constants.

suzanne o'callaghan

  • Direct link to this question

 ⋮ 

  • Direct link to this question


  • excel.png

I have read 4 columns of data from an excel file. some columns have more data than others. Nan values have populated the blank cells. However I need to plot each column of data and the Nan values are preventing this. How do i either import the data without the nan values or once i have imported it how do I get rid of the nan values? I cant use code that removes rows or columns as otherwise i will lose valuable data. this some code i have been trying:

[~,sheet_name]=xlsfinfo(‘barchart_F1.xlsx’);

barchart=xlsread(‘barchart_F1.xlsx’);

barchart = importdata(‘barchart_F1.xlsx’);

barchart=rmmissing(barchart);

  4 Comments

Star Strider

Direct link to this comment

 ⋮ 

  • Link

    Direct link to this comment

First, use readmatrix or readtable to import the file.

What is to be done with the data once read and imported?

suzanne o'callaghan

Direct link to this comment

 ⋮ 

  • Link

    Direct link to this comment

the data in each column is to be printed on the one plot.

suzanne o'callaghan

Direct link to this comment

 ⋮ 

  • Link

    Direct link to this comment


  • output.png

hi star, i have tried readmatrix and readtable and NANs are still populating the table

Johannes Hougaard

Direct link to this comment

 ⋮ 

  • Link

    Direct link to this comment

In MATLAB your array is not made up of individual values/cells/columns/rows. MATLAB is focused around matrices not around values, whereas in excel each cell is separate and has no relation to neighboring cells.

If you wish to mimic that in MATLAB each cell from excel should be it’s own variable (and you don’t want that for the data you’ve got)

The matrix you read is of size 18×4 you can’t have a different number of rows in different columns.

Sign in to comment.


Answers (1)

chiyaan chandan

  • Direct link to this answer

 ⋮ 

  • Direct link to this answer

disp (‘Select User input excel file ‘);

[filename, pathname] = uigetfile(‘*.*’);

xfile1 = fullfile(pathname, filename);

Data(isnan(Data))=0; % replace the NaN with 0

once we replcae the NaN with 0 at the end of the coloumns then we plaot the barchart for for each coloumns in a different figures or we can plot in single barchart.

  1 Comment

Johannes Hougaard

Direct link to this comment

 ⋮ 

  • Link

    Direct link to this comment

NaN values are perfectly fine for making the bar chart, there is no need to replace them with 0.

The graphs will be identical whether you keep the NaN (missing values) or replace them with 0 (actual values) but all statistics (such as the mean, standard deviation etc.) will be wrong when replacing zeros.

ah.ColorOrder = jet(18);

mean_values = mean(tmp,1,«omitnan»)

mean_values = 1×4

8.0884 8.1448 8.1048 8.1167

ah.ColorOrder = jet(18);

mean_values = mean(tmp,1,«omitnan»)

mean_values = 1×4

2.6961 8.1448 8.1048 5.8620

Sign in to comment.

See Also

Categories

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

An Error Occurred

Unable to complete the action because of changes made to the page. Reload the page to see its updated state.

MathWorks - Domain Selector

Я делаю код VBA для импорта файлов txt (ascii) и выполнения вычислений на основе данных в этих файлах txt.

Эти текстовые файлы будут записаны в определенные столбцы. Когда один из этих файлов отсутствует, я хочу иметь возможность заполнить эти столбцы чем-то вроде NaN, чтобы я мог выполнять вычисления, но результат был бы NaN. Если столбцы пустые, обязательно выдаст ошибку.

Я попробовал xlErrNull, но он показывает ошибку несоответствия типов.

2 ответа

Лучший ответ

Пожалуйста, попробуйте следующий код. Он добавит строку «NaN» в любую пустую ячейку используемого диапазона:

Sub fillNaNInEmptyCells()
  Dim sh As Worksheet, rngE As Range
  
  Set sh = ActiveSheet 'use here your necessary sheet
  On Error Resume Next
   Set rngE = sh.UsedRange.SpecialCells(xlCellTypeBlanks)
  On Error GoTo 0
  If Not rngE Is Nothing Then
    rngE.value = "NaN"
  End If
End Sub

Если вы передумали и хотите удалить строку, используйте следующий код:

Sub replaceNaN()
   Dim sh As Worksheet
   
   Set sh = ActiveSheet
   sh.UsedRange.Replace "NaN", ""
End Sub


0

FaneDuru
10 Май 2021 в 11:57

Что вы можете сделать, так это сгенерировать #NA, например:

Sub x()

   Range("A1:A1").Value = CVErr(xlErrNA)

End Sub

В этом примере, если мы сделаем b1 = a1 * 2, например, он вернет #NA, тогда как если a1 заполнен числом n, b1 вернет 2n.


0

Jayvee
10 Май 2021 в 11:34

#python #excel #pandas #dataframe #numpy

Вопрос:

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

View post on imgur.com

Мне нужно извлечь значения из этих данных Excel и вывести их в виде графиков на python.

 import numpy as np   
import pandas as pd   
from IPython.display import display   

%matplotlib inline


pd.options.display.max_rows = 13
pd.set_option('display.max_columns',750)


file_name = 'C:last_amb_hour_time.xls'


df = pd.read_excel(file_name, header=6, index_col=0)   
dfdate = pd.read_excel(file_name, header=6, index_col=0, usecols='A')   
dfpm10 = pd.read_excel(file_name, header=6, index_col=0, usecols='C')   
dfpm25 = pd.read_excel(file_name, header=6, index_col=0, usecols='E')   
dfozon = pd.read_excel(file_name, header=6, index_col=0, usecols='G')   
dfno2 = pd.read_excel(file_name, header=6, index_col=0, usecols='I')   
dfco = pd.read_excel(file_name, header=6, index_col=0, usecols='K')   
dfso2 = pd.read_excel(file_name, header=6, index_col=0, usecols='M')   
 

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

View post on imgur.com

подобный этому

Я хочу заменить NaN в одном столбце на 0. Однако, если я использую dfpm10 = df.fillna(0) или заменяю синтаксис, выводятся все данные excel, а не только один столбец.

Я хочу знать, какую команду использовать для замены данных NaN на 0 в одном извлеченном столбце.

Это кажется простым вопросом, но так как я никогда не изучал python должным образом, я не могу решить его даже после нескольких часов попыток. Извините.

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

1. Просто подмножество dataframe df['colname'] = df['colname'].fillna(0)

2. Мне жаль, что я плохо понял. Должен ли я указывать имя столбца самого Excel так же, как col2? Или мне нужно заранее задать имена столбцов?

Ответ №1:

Вы должны добавить имя столбца, который хотите изменить, вот так

 dfpm10 = df    
dfpm10['COLUMN NAME HERE'] = dfPM10['COLUMN NAME HERE'].fillna(0)
 

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

1. Мне жаль, что я плохо понимаю. Я не уверен, как назвать столбцы. Как вы можете видеть на изображении Excel, трудно задать первую строку в качестве имени, потому что формат такой.

2. Вы можете попробовать использовать это: печать(«Столбцы фрейма данных:», df.столбцы), и после того, как вы увидели имя столбца, вы можете изменить его, если хотите, используя это: df = df.переименовать(столбцы={«СТАРОЕ ИМЯ»:»НОВОЕ ИМЯ»})

3. print("Dataframe columns:", df.columns) dfpm10 = df.rename(columns={"Unnamed: 2":"pm10"}) dfpm10['pm10'] = dfpm10['pm10'].fillna(0) Спасибо, я успешно ввел такой код, чтобы назвать столбцы. Однако, даже если следовать этому методу, когда я использую display(dfpm10) , печатаются все данные excel. Только в указанном столбце значения NaN заменяются на 0. Не могу ли я напечатать только один столбец, если я делаю display(dfpm10) это в соответствии с ранее введенным dfpm10 = pd.read_excel(file_name, header=6, index_col=0, usecols='C') форматом?

Версия для Python: Python 2.7.13 :: Anaconda custom (64-bit) версия Pandas: pandas 0.20.2

Привет,

У меня довольно простое требование. Я хотел бы прочитать файл excel и написать конкретный лист в файл csv. Пустые значения в исходном файле Excel должны обрабатываться/записываться как пустые при записи файла csv. Однако мои пустые записи всегда записываются как «nan» в выходной файл. (без кавычек)

Я прочитал файл Excel с помощью метода

read_excel (xlsx, sheetname = ‘sheet1’, dtype = str)

Я указываю dtype, потому что у меня есть несколько столбцов, которые являются числами, но должны рассматриваться как строка. (В противном случае они могут потерять ведущие 0 и т.д.), То есть я хотел бы прочитать точное значение из каждой ячейки.

Теперь я пишу вывод.csv файла через to_csv (output_file, index = False, mode = ‘wb’, sep = ‘,’, encoding = ‘utf-8’)

Тем не менее, файл csv моего результата содержит nan для всех пустых ячеек из файла excel.

Что мне не хватает? Я уже пробовал функцию.fillna(», inplace = True), но, похоже, ничего не делает для моих данных. Я также попытался добавить параметр na_rep = » в метод to_csv, но без успеха.

Спасибо за любую помощь!

Добавление: см. Здесь воспроизводимый пример.

Ниже приведен пример воспроизводимого примера кода. Сначала создайте новый файл Excel с двумя столбцами со следующим содержимым: COLUMNA COLUMNB COLUMNC 01 test 02 test
03 тест

(Я сохранил этот файл Excel в c:test.xls. Обратите внимание, что первая и третья строки для столбца B, а также вторая строка для столбца C пустая/пустая)

Теперь вот мой код:

import pandas as pd
xlsx = pd.ExcelFile('c:\test.xlsx')
df = pd.read_excel(xlsx, sheetname='Sheet1', dtype = str)
df.fillna('', inplace=True)
df.to_csv('c:\test.csv', index=False,mode='wb',sep=',',encoding='utf-8', na_rep ='')

Мой результат:
Колумна, COLUMNB, COLUMNC
01, нан, тест
02, тест, нан
03, нан, тест

Мой желаемый результат:
Колумна, COLUMNB, COLUMNC
01, тест
02, тест,
03, тест

Понравилась статья? Поделить с друзьями:
  • Excel named range worksheet
  • Excel named range not listed
  • Excel named range in formulas
  • Excel named cell ranges
  • Excel name range of cells