从Excel向MATLAB中导入数据出现了nan怎么处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Excel向MATLAB中导入数据出现了nan怎么处理相关的知识,希望对你有一定的参考价值。

是因为数据过大过小导致?

  1、在matlab中生成数据,并且写入到excel文件中。具体代码如下图所示:

  2、下面来看一下生成的myExample.xlsx文件里面是否含有matlab所生成的数据。有图中可以看出,生成的数据已经全部写入了myExample.xlsx文件。

  3、从excel的第一个worksheet中读取数据,代码如下图所示:

  4、从上一步生成的excel文件myExample.xlsx中读取局部的数据,具体代码及结果如下图所示:

  5、读取一列数据,从excel文件myExample.xlsx中读取一整列的数据,具体代码及结果如下图所示:

  6、从excel文件myExample.xlsx中分别读取数值型、文本型和未处理的数据,具体代码及结果如下图所示:

  

参考技术A 可以帮你看一下,我估计是有部分的文字,所有才有nan = not a number 参考技术B 问题很久前的了但还是回答一下吧。。。。我遇到过很多次这个毛病哈哈。但最后都是因为数据有问题,第一次是因为有些数据结尾多打了空格“ ”会导致读入程序中显示NAN, 这个可以通过全选excel,格式“靠右”来检查有没有多打空格。第二次就是现在,发现有些数字可以正确读取,但大多数都是NAN,这个有些数字小数点后只有4位,但大多数都是8位,原来是因为有的数字过长(谜之无语) 参考技术C 可能那些单元格根本就不是数值类型吧。。本回答被提问者采纳

如何用以前的值填充数据框? [复制]

【中文标题】如何用以前的值填充数据框? [复制]【英文标题】:how to fill dataframe with former value? [duplicate] 【发布时间】:2019-11-09 03:28:31 【问题描述】:

我从 excel 文件中导入数据。但是excel文件中合并单元格的格式在python中不匹配。因此,我不得不修改python中的数据。

例如:我在python中导入的数据是这样的

0   aa
1   NaN
2   NaN
3   NaN
4   b
5   NaN
6   NaN
7   NaN
8   NaN
9   ccc
10  NaN
11  NaN
12  NaN
13  dd
14  NaN
15  NaN
16  NaN

我想要的结果是:

0   aa
1   aa
2   aa
3   aa
4   b
5   b
6   b
7   b
8   b
9   ccc
10  ccc
11  ccc
12  ccc
13  dd
14  dd
15  dd
16  dd

我尝试使用 for 循环来解决问题。但这花了很多时间,而且我有一个庞大的数据集。不知道有没有更快的方法。

【问题讨论】:

您正在将数据加载到 pandas 数据框,对吧? 数据类型应该是字符串而不是浮点数,抱歉 如果您对问题有补充,最好编辑问题并将其添加到那里,而不是在评论中。 @Itamar Mushkin 是的 转换类型-df = df.astype(str) 【参考方案1】:

看起来像 .fillna() is your friend – 引用文档::

我们还可以向前或向后传播非空值。

>>> df
     A    B   C  D
0  NaN  2.0 NaN  0
1  3.0  4.0 NaN  1
2  NaN  NaN NaN  5
3  NaN  3.0 NaN  4
>>> df.fillna(method='ffill')
    A   B   C   D
0   NaN 2.0 NaN 0
1   3.0 4.0 NaN 1
2   3.0 4.0 NaN 5
3   3.0 3.0 NaN 4

【讨论】:

啊,打败我了 :-) @AKX 你能帮我重新修改问题格式吗?【参考方案2】:

这正是pandas.fillna()函数的使用

【讨论】:

【参考方案3】:

您可以借助applyfillna 方法获得您想要的结果:-

import pandas as pd
import numpy as np

df = pd.DataFrame(data = 'A':['a', np.nan, np.nan, 'b', np.nan])

l = []
def change(value): 
    if value == "bhale":
        value = l[-1]
        return value
    else:        
        l.append(value)
        return value

# First converting NaN values into any string value like `bhale` here
df['A'] = df['A'].fillna('bhale')  
df["A"] = df['A'].apply(change)   # Using apply method.
df

希望对你有帮助。

【讨论】:

以上是关于从Excel向MATLAB中导入数据出现了nan怎么处理的主要内容,如果未能解决你的问题,请参考以下文章

带通滤波中数据中间出现nan值怎么处理

如何用以前的值填充数据框? [复制]

从Excel中导入数据时,提示“未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序”的解决办法

01从DataGrid中导入到Excel

用 Matlab 神经网络工具箱拟合复杂非线性函数

SQLite从Excel文件中导入数据