解决方案 ValueError: view limit minimum XXX is less than 1 and is an invalid Matplotlib date value.

invalid Matplotlib 是无效的时间格式

数据实例

import matplotlib.pyplot as plt #绘图包
import pandas as pd #表格包
date = pd.read_csv("date.csv",encoding = 'gbk') #打开文件 读取数据
date #在jupyter lab中可以直接显示

结果:
解决方案 ValueError: view limit minimum XXX is less than 1 and is an invalid Matplotlib date value._第1张图片

两种方法将时间序列变成索引

第一种方法 (转换后的时间序列为时间类型)

#index_col=0 将索引值为第一列,parse_dates=[0]并将第一列转换为时间序列
date = pd.read_csv('data_stock3.csv',index_col=0,parse_dates=[0],encoding='gbk') #把时间序列作为索引
print(date.index) #查看索引值,并查看索引类型
date #显示数据

结果:
解决方案 ValueError: view limit minimum XXX is less than 1 and is an invalid Matplotlib date value._第2张图片

#绘图  绘图可以显示  不会报错
plt.figure(figsize=(8,4),dpi=600) #对绘图进行大小与分辨率进行设置
plt.plot(date['price']) #绘图 传入数据
plt.show() #显示

结果:
解决方案 ValueError: view limit minimum XXX is less than 1 and is an invalid Matplotlib date value._第3张图片

第二种方法(转换后的时间索引为object类型的 可能会出现绘图问题)

date = pd.read_csv('data_stock3.csv',encoding='gbk') #读取文件数据
date.index = date.datetime #将date的index为数据列的datetime
date_new = date.loc["1960-01-01":"1961-04-01",['price','back']] #"1960-01-01"到"1961-04-01"的数据行,price与back数据列组合成新的表
print(date_new.index) #其中index的数据类型为object
date_new

结果

解决方案 ValueError: view limit minimum XXX is less than 1 and is an invalid Matplotlib date value._第4张图片

#绘图
plt.figure(figsize=(8,4),dpi=600) #对绘图进行大小与分辨率进行设置
plt.plot(date_new['price'],'dodgerblue',date_new['back'],'limegreen') #绘图 传入数据
plt.show() #显示

结果可能出错:如
在这里插入图片描述

解决方法 一

#对索引重新生成index 时间序列 periods为生成的条数  将索引列变成时间格式  freq为每条时间的间隔
date_new.index = pd.date_range('1960/7/1',periods=6,freq='3MS') 
print(date_new.index) #打印索引的时间序列
date_new #打印表格

结果:
解决方案 ValueError: view limit minimum XXX is less than 1 and is an invalid Matplotlib date value._第5张图片

解决方法 二

#直接对时间序列进行转换
date_new.index = pd.to_datetime(date_new.index) #直接使用pandas包中的转换函数转换
print("方法二",date_new.index)
date_new

结果
解决方案 ValueError: view limit minimum XXX is less than 1 and is an invalid Matplotlib date value._第6张图片

这样绘图就没有问题了

你可能感兴趣的:(python,python)