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