Excel文件和DataFrame没有数字数据来绘制错误

时间:2017-12-28 21:42:35

标签: python matplotlib

我试图将数据从xlsx文件中绘制成Pandas。经过一些小的格式化和数据质量检查后,我尝试使用matplotlib进行绘图,但得到以下错误:

TypeError: Empty 'DataFrame': no numeric data to plot

这不是一个新问题,我已经按照本网站上的许多页面处理了这个问题。遗憾的是,发布的建议对我没有用。

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

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

  1. df = df.astype(float)给出了以下错误ValueError: could not convert string to float: 'Site 1'(网站1是抽样地点)

  2. df = df.apply(pd.to_numeric, errors='ignore')给出了以下内容:dtypes: float64(13), int64(1), object(65),因此大多数数据仍然是对象,因此无法正常工作。日期条目是int64,我无法弄清楚为什么有些数据列是float64而有些仍然是对象

  3. df = df.apply(pd.to_numeric, errors='coerce')会删除整个DataFrame,可能是因为此操作使用NaN填充整个DataFrame?

  4. 我感到困惑,并希望有任何见解。

    修改

    我能够根据一些反馈解决自己的问题。这对我有用:

    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)
    

1 个答案:

答案 0 :(得分:1)

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

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