我目前有一个使用以下格式的Excel文件:

PS               PSX1         PSX2         PSX3        PSX4
              I   P   V    I   P   V    I   P   V    I   P   V
States
Idle          #   #   #    #   #   #    #   #   #    #   #   #
Data=Addr(R)  #   #   #    #   #   #    #   #   #    #   #   #
Data=Addr(W)  #   #   #    #   #   #    #   #   #    #   #   #
.             .   .   .    .   .   .    .   .   .    .   .   .
.             .   .   .    .   .   .    .   .   .    .   .   .


当我尝试将其导入为pandas数据框时,它会添加列名称以为每个名称命名,而不仅仅是四个PSX1,PSX2,PSX3和PSX4。它还会在空白处添加NaN。当我尝试对其进行图形处理时,这将成为一个问题,我收到一条错误消息:“空'DataFrame':没有要绘制的数字数据”。有没有一种方法可以跳过作为熊猫数据框的导入,而只是在将其读入Excel文件后直接将其绘制出来吗?

我希望图形为4条线(每个电源一个),并且我只关心x轴处于不同状态的P列。我是Matplotlib和python的新手。任何帮助表示赞赏。

最佳答案

使用熊猫清理数据。根据您的数据,可以通过不同的方式来实现。您可以使用熊猫内置函数:

your_dataframe_here.dropna(inplace=True)


这将删除所有NaN值,但是,这不是最佳方法。您应该用适当的值(异常值或最接近值的平均值)替换NaN值。

your_dataframe_here.fillna(value=-99999, inplace=True)


这会产生异常值,但是,如果存在大量的NaN值,则应将其替换为均值以获得最佳结果。

your_dataframe_here.fillna(value=df['target_here'].mean())


或针对非针对性对象:

your_dataframe_here.fillna(value=df.mean())


清理数据后,应分离特征并适当地绘制它们。另外,添加了列名称是因为熊猫的库需要它们。您可以将它们更改为适合自己的方式:

your_dataframe_here.columns = ['your_column_name', 'your_column_name']


确保列表的大小与数据框中的列数匹配。最后,要严格访问“ P”列,您可以对数据框进行子集化,例如:

your_P_set = your_data_frame['P']

10-04 22:22
查看更多