Python Excel文件和数据框没有要打印的数字数据错误

Python Excel文件和数据框没有要打印的数字数据错误,python,matplotlib,Python,Matplotlib,我试图绘制从xlsx文件读入熊猫的数据。经过一些小的格式和数据质量检查后,我尝试使用matplotlib进行绘图,但出现以下错误: TypeError: Empty 'DataFrame': no numeric data to plot 这不是一个新问题,我已经关注了这个网站上处理这个问题的许多页面。不幸的是,这些建议对我来说并不奏效 我的数据集包括字符串(采样点的位置,仅限于第一列)、日期(我已使用pd.to_datetime将其转换为正确格式)、许多NaN条目(由于我们正在进行图形分析,

我试图绘制从xlsx文件读入熊猫的数据。经过一些小的格式和数据质量检查后,我尝试使用matplotlib进行绘图,但出现以下错误:

TypeError: Empty 'DataFrame': no numeric data to plot
这不是一个新问题,我已经关注了这个网站上处理这个问题的许多页面。不幸的是,这些建议对我来说并不奏效

我的数据集包括字符串(采样点的位置,仅限于第一列)、日期(我已使用
pd.to_datetime
将其转换为正确格式)、许多
NaN
条目(由于我们正在进行图形分析,无法将其转换为零),以及表示各种分析参数的列标题

根据我在这个网站上读到的一些建议,我尝试了以下代码

  • df=df.astype(float)
    这给了我以下错误
    ValueError:无法将字符串转换为float:'Site 1'
    (Site 1是采样位置)

  • df=df.apply(pd.to_numeric,errors='ignore')
    这给了我以下信息:
    dtypes:float64(13)、int64(1)、object(65)
    ,因此,由于大部分数据仍然作为对象,因此似乎无法工作。日期条目是int64,我无法理解为什么有些数据列是float64,而有些保留为对象

  • df=df.apply(pd.to_numeric,errors='concurve')
    删除整个数据帧,可能是因为此操作将整个数据帧填充为
    NaN

  • 我被困住了,希望能有任何见解

    编辑

    根据一些反馈,我能够解决自己的问题。以下是对我有效的方法:

    df = "path"
    
    header = [0]    # keep column headings as first row of original data
    skip = [1]      # skip second row, which has units of measure
    na_val = ['.','-.','-+0.01']    # Convert spurious decimal points that have 
                                    # no number associated with them to NaN
    convert = {col: float for col in (4,...,80)}   # Convert specific rows to 
                                                   # float from original text
    parse_col = ("A","C","E:CC")    # apply to specific columns 
    
    df = pd.read_excel(df, header = header, skiprows = skip, 
    na_values = na_val, converters = convert, parse_columns = parse_col)
    

    没有数据样本很难回答,但如果您确定数字列是100%数字,这可能会起作用:

    for c in df.columns:
    try:
        df[c] = df[c].astype(int)
    except:
        pass
    

    这个答案是正确的,但有一些评论:-OP的方法2是正确的,但正试图将其应用于整个框架而不是单个列。这很重要,要弄清楚应该是。astyle(float)基于最初的问题-try except是一种非常粗略的方法来实施@ocop方法-我很欣赏这一评论,但不幸的是,我发现它不够具体,没有帮助。你是对的,我正试图将浮点校正应用于整个数据集,以便于可视化。在你的建议中应该如何应用astyle(float)?应该用astype(float)代替Ezer K的astype(int)。“astyle”部分是我的错别字。谢谢。您还提到,try-except是实现该方法的一种非常粗略的方法。有更好/更干净的建议吗?@Ezer K-只是尝试了你的建议,但没有奏效。看起来excel文件中的数据都是以文本形式存储的,并且在使用
    pd.read\u excel
    时会转换为pandas中的对象。