Python ValueError: File is not a recognized excel file
Python读取Excel类文件错误
我是在pandas读取xlsx文件时遇到的错误
ValueError: File is not a recognized excel file
ValueError:文件不是可识别的excel文件
这个错误的原因是xlsx文件本身的问题,可能是wps或是Excel保存格式出错无法被识别。
之后重新制作xlsx文件并完整保存
ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.
ImportError:缺少可选依赖项“xlrd”。安装xlrd>=1.0.0 for Excel支持使用pip或conda安装xlrd。
这里又出现了新问题,缺少xlrd,pip 安装 xlrd 模块即可
pip install xlrd
如果安装的是2.0以下版本的xlrd模块,此次的读取问题应该已经解决了。
但是如果安装的xlrd版本超过2.0,依旧会有错误
ValueError: Your version of xlrd is 2.0.1. In xlrd >= 2.0, only the xls format is supported. Install openpyxl instead.
ValueError:您的xlrd版本是2.0.1。在xlrd>=2.0中,仅支持xls格式。改为安装openpyxl。
这里的问题是由于xlrd2.0以上版本仅支持xls格式Excel,pip 安装 openpyxl 模块即可
pip install openpyxl
import xlrd
import openpyxl
导入模块之后就可以使用轻松使用各种读取Excel文件的方法了,当然也可以不导入模块,只需要将这两种模块加入到外部库就可以。
例如在PyCharm的设置中在project:interpreter选项看到有包含这两个模块就可以。
示例代码
PyCharm。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import xlrd
import openpyxl
path = 'Chapter5_test1.xlsx'
data = pd.read_excel(path);
tb = data.loc[:,['日期','猪肉价格']].head(10)
tb1 = data.loc[:,['日期','牛肉价格']].head(10)
tb2 = data.loc[:,['日期','猪肉价格']]
tb3 = data.loc[:,['日期','牛肉价格']]
x = np.arange(1, len(tb.iloc[:,0]) +1)
x2 = np.arange(1, len(tb2.iloc[:,0]) +1)
y1 = tb.iloc[:,1]
y2 = tb1.iloc[:,1]
y3 = tb2.iloc[:,1]
y4 = tb3.iloc[:,1]
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.figure('子图2')
plt.figure(figsize = (25,15))
plt.subplot(2,2,1)
plt.plot(x,y1,'r*--')
plt.xlabel('日期')
plt.ylabel('1.1-1.10 猪肉价格走势图')
plt.title('猪肉价格走势图')
plt.xticks([1,2,3,4,5,6,7,8,9,10],tb['日期'].values[[0,1,2,3,4,5,6,7,8,9,]],rotation = 90)
plt.subplot(2,2,2)
plt.plot(x,y2,'b*--')
plt.xlabel('日期')
plt.ylabel('1.1-1.10 牛肉价格走势图')
plt.title('牛肉价格走势图')
plt.xticks([1,2,3,4,5,6,7,8,9,10],tb1['日期'].values[[0,1,2,3,4,5,6,7,8,9,]],rotation = 90)
plt.subplot(2,2,3)
plt.plot(x2,y3,'r*--')
plt.xlabel('日期')
plt.ylabel('1.1-1.15 猪肉价格走势图')
plt.title('猪肉价格走势图')
plt.xticks([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],tb2['日期'].values[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]],rotation = 90)
plt.subplot(2,2,4)
plt.plot(x2,y4,'b*--')
plt.xlabel('日期')
plt.ylabel('1.1-1.15 牛肉价格走势图')
plt.title('牛肉价格走势图')
plt.xticks([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15],tb3['日期'].values[[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]],rotation = 90)
plt.savefig('子图2')