概况
现尝试自己用pandas读取所需数据,记录步骤和错误
pandas库本身的安装可以在settings的python编译器里搜索安装包进行安装,也可以找镜像源在终端通过pip管理工具安装,因为已经安装好,直接开始导入
图片:https://pandas.pydata.org/docs/getting_started/intro_tutorials/02_read_write.html
在pandas的文档里有这样一个表图片,它体现了pandas能够读取哪些数据,也提供了方法,即在读取时可以用 pd.read_xx,并通过 pd.to_xx进行文件格式的转换(此处的xx均为文件格式,如 excel、csv、html、sql、json 等等)
开始导入:
语法:data =pd.read_excel (r'C:\xxx\xxx.xlsx',sheet_name=['sheet1','sheet2']) :
常用参数:
- sheet_name:指定所要读取的sheet,为 str 时指定的是sheet的名称,为 int 时指定的是sheet对应的索引,索引从 0 开始,为 None 时读取全部 sheet
- header:设置表的头部信息,读取默认是 header=None 将第0行作为表头,也可以通过设定 header=整数 指定以哪一行为表头
- names:name=['列名1','列名2',...] 指定每列的名称
-
usecols:useclos['列1','列2',...]可以指定想要读取的子列
-
index_col:指定某一列作为索引,为None时不指定索引,可以组合索引
注:使用时间作为索引时可能需要使用数据类型转换
- dtype:形如 dtype={"column_name":dtype},指定数据类型,如001可以对0进行保留
-
skiprows[id1,id2,...]、skipfooter=(int):不选取的行/倒数行
-
parse_date:设定某列为日期,与 date_parser 联用,指定日期格式
import pandas as pd
data1 = pd.read_excel(r'C:\Users\yysc\Desktop\月度\4月\会员\4月会员数据.xlsx',sheet_name='客单(不含专柜)',skipfooter=(2))
print(data1) # 运行成功
查看数据概况:导数之前已经将数据处理了一下
data1.info()
# 查看该DataFrame的概况,内容有列名、非空的行数、数据类型、内存使用情况等等
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4268 entries, 0 to 4267
Data columns (total 11 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 日期 4268 non-null datetime64[ns]
1 星期 4268 non-null object
2 门店号 4268 non-null int64
3 码洋 4268 non-null float64
4 天气 332 non-null object
5 实洋 4268 non-null float64
6 客流量 4268 non-null int64
7 客单数 4268 non-null int64
8 交易数量 4268 non-null int64
9 月份 4268 non-null int64
10 门店 4267 non-null object
dtypes: datetime64[ns](1), float64(2), int64(5), object(3)
memory usage: 366.9+ KB
print(data1.head(3))
print(data1.tail(3)) # 查看首、尾3行
print(data2.describe()) # 查看基本统计信息,会忽视文本类型的数据
日期 星期 门店号 码洋 天气 实洋 客流量 客单数 交易数量 月份 门店
0 2023-01-31 二 1 10 NaN 10 1500 600 3000 1 龙华店
1 2023-01-31 二 2 20 NaN 20 900 300 1200 1 石岩店
2 2023-01-31 二 3 30 NaN 30 230 150 880 1 观澜店
日期 星期 门店号 码洋 天气 实洋 客流量 客单数 交易数量 月份 门店
4265 2023-04-01 六 3008 38576.63 NaN 33978.0 1998 420 1165 4 惠州店
4266 2023-04-01 六 3009 42442.33 NaN 38670.2 3482 523 1339 4 佛山店
4267 2023-04-01 六 3010 11544.10 NaN 11005.0 1085 127 261 4 福州店
日期 门店号 ... 交易数量 月份
count ...
mean ...
min ...
25% ...
50% ...
75% ...
max ...
std ...
print(data2[data2['客流量']>1500].head)
日期 星期 门店号 码洋 天气 实洋 客流量 客单数 交易数量 月份 门店
0 2023-01-31 二 1001 8105.611548 NaN 8105.611548 1577 859 2004 1 龙华店
2 2023-01-31 二 1003 9369.565960 NaN 9369.565960 1661 949 1258 1 观澜店
3 2023-01-31 二 1004 2778.225608 NaN 2778.225608 1997 748 795 1 香蜜湖店
6 2023-01-31 二 1008 8649.888791 NaN 8649.888791 1679 930 2166 1 宝安店
9 2023-01-31 二 1012 8500.474101 NaN 8500.474101 1718 864 2832 1 天虹店
至此,数据的导入就基本完成了
报错:
1、在导数之前遇到了缺少 openpyxl 库的问题,这是在python中读取和写入 Excel 文件(.xlsx、.xls)的库。按照这里的办法安装这个库就ok了,非常容易:https://blog.csdn.net/qq_49097653/article/details/124666442
2、SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
语法报错:(unicode错误)“UnicodeScape”编解码器无法解码位置2-3中的字节:截断\uxxxxxxx
data = pd.read_excel('C:\Users\xxx\xxx',sheet_name='xxx')
print(data)
data.info()
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
报错原因:与windows不同,"\"号在python里有转义字符的作用,如 \n 用于换行等,所以在这里Python编译的时候将我们的路径解读成了转义字符
解决方法:在路径字符串前加上 "r" 使字符表示原来的意思(也可以将反斜杠 "\" 直接替换为正斜杠"/")
3、PermissionError: [Errno 13] Permission denied: 'C:\\Users\\xxx\\Desktop\\xxx'
权限错误:[Erno 13]权限被拒绝: 'C:\\Users\\xxx\\Desktop\\xxx'
PermissionError: [Errno 13] Permission denied: 'C:\\Users\\xxx\\Desktop\\xxx'
报错原因:原本以为确实是什么权限问题,不过后来发现是自己粗心没有指定文件,导致访问的一个目录,所以出现这种问题应该检查,看看文件是否被其他程序占用,或尝试以管理员身份运行文件