Matplotlib日周期绘图报错TypeError: invalid type promotion求助
解决Matplotlib绘制日周期时间数据时的TypeError问题
嘿,我之前也踩过一模一样的坑!你这个TypeError: invalid type promotion报错,核心原因就是你的DATE列还只是字符串(object)类型——年周期数据因为时间跨度大、格式相对简单,Matplotlib还能勉强“蒙混过关”,但到了带时分秒的日周期数据,它就没办法把字符串转换成可计算的时间格式了。
给你一套快速解决的步骤:
第一步:先确认数据类型
运行下面的代码看看DATE列的类型:print(df_diesel['DATE'].dtype)如果输出是
object,那百分百是字符串类型的问题。第二步:把字符串时间转成datetime类型
用Pandas的to_datetime方法转换,你的时间格式是标准的YYYY-MM-DD HH:MM:SS,直接转就行:import pandas as pd df_diesel['DATE'] = pd.to_datetime(df_diesel['DATE'])要是遇到特殊格式的时间,还可以加
format参数指定规则,比如pd.to_datetime(df_diesel['DATE'], format='%Y-%m-%d %H:%M:%S'),不过你的情况不用额外指定。第三步:重新运行绘图代码
转换完成后,再执行你的绘图代码就正常了,完整代码如下:from matplotlib import pyplot as plt %matplotlib inline import pandas as pd # 先处理时间类型转换 df_diesel['DATE'] = pd.to_datetime(df_diesel['DATE']) plt.title("Fuel in Australia") plt.xlabel("DATE") plt.ylabel("price") plt.scatter(df_diesel['DATE'], df_diesel['price']) plt.show()
简单说,Matplotlib绘制时间序列图的时候,必须要把时间列转换成datetime类型,这样它才能正确解析时间的先后顺序和间隔,不会触发类型不兼容的错误。
内容的提问来源于stack exchange,提问作者AAlex
相关产品推荐
相关产品推荐

