首页 > 解决方案 > 使用 Pandas 绘图时重命名空白第一列并正确获取 x 轴标签

问题描述

我正在尝试使用熊猫绘制温度与时间图。我从中导入的 CSV 文件是制表符分隔的。将 CSV 读入数据框后,(如下所示)其中的第一列是日期和时间。该列没有名称。我尝试重命名该列,但看起来不可能。

此外,当我绘制图表温度与时间的关系时,x 轴上没有提到任何内容,但有一些刻度。在这方面也需要帮助。

我的数据框看起来像这样,如您所见,第一列是日期时间,列名应该是时间,但它是空白的!

                     reactorPressure   vacuumGauge   MFC1   MFC2 ...    rfFreq   crucTemp   vacPressure   \r
                                                                 ...                                        
2018-12-18 10:18:18             0.05  4.569000e-07   -0.4    0.0 ...    11.496      503.0                 \r
2018-12-18 10:18:28             0.12  4.616000e-07   -0.4    0.0 ...    11.481      509.0                 \r
2018-12-18 10:18:38             0.25  4.584000e-07   -0.4    0.0 ...    11.475      514.0                 \r
2018-12-18 10:18:48             0.20  4.622000e-07   -0.4    0.0 ...    11.481      519.0                 \r
2018-12-18 10:18:58             0.25  4.641000e-07   -0.4    0.0 ...    11.484      524.0                 \r

[5 rows x 12 columns]
Index(['reactorPressure', ' vacuumGauge', ' MFC1', ' MFC2', ' MFC3',
       ' rfVoltage', ' rfCurrent', ' rfPower', ' rfFreq', ' crucTemp',
       ' vacPressure', ' \r'],
      dtype='object')

为了解决重命名问题,我尝试了

df.rename(columns={'':'Time'}, inplace=True)

,但没有用,当我运行 #print(df.head() 命令时,我没有看到 Unnamed :0 。

我试过了

df.columns=['Time'] + df.columns.tolist()[1:]
print(df.columns)

,但这不是将名称添加到第 0 列,而是重命名第 1 列。

我尝试删除列,然后手动添加它们

df.read_csv('filename.csv',names=['Time', 'pressure',..])

也没有工作。它总是将第一列留空。我的代码如下!

import pandas as pd
from pandas import DataFrame
import matplotlib.pyplot as plt
import datetime
df = pd.read_csv('testfile3.csv',sep='\t',lineterminator='\n', index_col=0)
print(df.head())
df[' crucTemp'].plot()
plt.show()

感谢您的帮助!谢谢!我也可以在这里分享我的 csv 文件,但我不知道怎么做。如果您留下您的电子邮件地址,我可以通过电子邮件向您发送此文件,或者如果您告诉我如何上传,我可以上传文件!

[ https://i.stack.imgur.com/bpKgs.png][1]

图 crucTemp Vs(第一列日期和时间)的链接,在 x 轴上没有数字。老实说,我不关心没有第一列名称的数据框,但我需要用正确的数字打印 x 轴。

标签: pythonpandasdatetimematplotlibplot

解决方案


那里一切都很好。第一个“无头”列是您的索引,通常只是一个计数器列,但您通过写入index_col=0数据导入命令明确地将第一个数据列设置为索引pd.read_csv()

但是,这个索引的类型仍然是字符串,所以 pandas(或底层的 matplotlib)不知道这个索引的时间性质。

df.index = pd.to_datetime(df.index)

应该有帮助。


推荐阅读