使用python和matplotlib绘制excel表?

时间:2018-06-18 14:06:12

标签: python pandas matplotlib

我目前有一个这种格式的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。当我尝试绘制图形时,这会成为一个问题,我收到一条错误说“#34;空的' DataFrame':没有数字数据可以绘制"。有没有办法跳过导入作为熊猫数据框,并在将其作为excel文件读取后直接绘制?

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

1 个答案:

答案 0 :(得分:1)

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

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']