pandas系列之xlsx文件的基本操作

811 阅读6分钟

使用read_excel()方法导入xlsx文件

import pandas as pd

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx')
print(df)

注意的几个问题:

1.依赖库安装

直接运行上述代码,报错: QQ拼音截图未命名.png

因本地没有使用Anaconda,而是直接使用pip命令的pandas,导致了很多其他模块需要自己安装。

此时需要安装openpyxl 安装截图:

QQ拼音截图未命名.png 再次运行:

      日期   分类      书名    作者
0  历史      史记   司马迁
1  小说     红楼梦   曹雪芹
2  散文    文化苦旅   余秋雨
3  历史  明朝那些事儿  当年明月
4  漫画   半小时漫画   混子曰
5  随笔    培根随笔    培根体重(kg)

2.文件路径

电脑中的文件路径默认使用\,此时需要在路径前面加r,避免路径里面的\被转义。或者可以把路径里面的所有\换成/。推荐加r。

这个规则在导入其他格式的文件时也适用。后面不再赘述。

3.sheet页的选择

数据分析测试表.xlsx表格内容如下:

1.png

2.png

3.1默认情形下导入第一个sheet页

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx')
print(df)

result:

   分类      书名    作者
0  历史      史记   司马迁
1  小说     红楼梦   曹雪芹
2  散文    文化苦旅   余秋雨
3  历史  明朝那些事儿  当年明月
4  漫画   半小时漫画   混子曰
5  随笔    培根随笔    培根

3.2 设定sheet_name参数来指定要导入的sheet页内容

3.2.1通过sheet页的名字来指定所导入的sheet页

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name="地区分类")
print(df)

result:

   区域  省份  城市
0  东北  辽宁  大连
1  西北  陕西  西安
2  华南  广东  深圳
3  华北  北京  北京
4  华中  湖北  武汉

3.2.1通过sheet页的顺序来指定所导入的sheet页

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
print(df)

result:

区域  省份  城市
0  东北  辽宁  大连
1  西北  陕西  西安
2  华南  广东  深圳
3  华北  北京  北京
4  华中  湖北  武汉

4.索引的指定

4.1指定行索引

将本地文件导入DataFrame时,行索引使用的从0开始的默认索引,可以通过设置设置index_col参数进行设置。该参数表示用.xlsx文件中的第几行做索引,从0开始计数

4.1.1采用表格中的第一列数据作为行索引

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1, index_col=0)
print(df)

result:

    省份  城市

区域        
东北  辽宁  大连
西北  陕西  西安
华南  广东  深圳
华北  北京  北京
华中  湖北  武汉

4.1.2采用表格中的第二列数据作为行索引

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1, index_col=1)
print(df)

result:

    区域  城市

省份        
辽宁  东北  大连
陕西  西北  西安
广东  华南  深圳
北京  华北  北京
湖北  华中  武汉

4.1.3采用默认从0开始的数作为行索引

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1, index_col=None)
print(df)

result:

 区域  省份  城市
0  东北  辽宁  大连
1  西北  陕西  西安
2  华南  广东  深圳
3  华北  北京  北京
4  华中  湖北  武汉

4.2 列索引的指定

将本地文件导入DataFrame时,列索引默认使用元数据表的第一行(说白了就是表头)作为列索引,可以通过设置设置header参数进行设置。header参数值默认为0,即用第一行作为列索引。也可以是其他行,只要传入具体的行对应的数字就可以。也可以使用默认从0开始的数作为索引

4.2.1采用表格中的第一列数据作为列索引

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1, header=0)
print(df)

result:

   区域  省份  城市
0  东北  辽宁  大连
1  西北  陕西  西安
2  华南  广东  深圳
3  华北  北京  北京
4  华中  湖北  武汉

4.2.2采用表格中的第二列数据作为列索引

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1, header=1)
print(df)

result:

   东北  辽宁  大连
0  西北  陕西  西安
1  华南  广东  深圳
2  华北  北京  北京
3  华中  湖北  武汉

4.2.3采用默认从0开始的数作为列索引

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1, header=None)
print(df)

result:

    0   1   2
0  区域  省份  城市
1  东北  辽宁  大连
2  西北  陕西  西安
3  华南  广东  深圳
4  华北  北京  北京
5  华中  湖北  武汉

5.读取数据

5.1读取行数据

5.1.1读取某一行的数据

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
data = df.loc[0].values
print(data)

这是读取了第一行的数据

result:

['东北' '辽宁' '大连']

5.1.2读取多行数据

此时要注意loc里面的参数必须是列表,切记。

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
data = df.loc[[1, 2, 3]].values
print(data)

这是读取了第二、三、四行的数据

result:

[['西北' '陕西' '西安']
 ['华南' '广东' '深圳']
 ['华北' '北京' '北京']]

5.1.3 随机获取任意几行的内容

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
data = df.sample(2).values
print(data)

result:

[['华北' '北京' '北京']
 ['西北' '陕西' '西安']]

5.1.4 读取前几行数据

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
print(df.head())

result:

   区域  省份  城市
0  东北  辽宁  大连
1  西北  陕西  西安
2  华南  广东  深圳
3  华北  北京  北京
4  华中  湖北  武汉

head()默认读取前5行数据

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
print(df.head(2))

result:

   区域  省份  城市
0  东北  辽宁  大连
1  西北  陕西  西安

head(2)读取前2行数据

5.2读取列数据

5.2.1读取单列数据

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
data = df['省份'].values
print(data)

result:

['辽宁' '陕西' '广东' '北京' '湖北']

tips:该方法无法同时读取多个列的内容,只能一次读取一行数据

5.2.2 读取指定的行列

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
data = df.loc[[1, 3, 4],{"省份"}].values
print(data)

这是读取了分别读取了第二行的省份数据、第四行的省份数据、第五行的省份数据

result:

[['陕西']
 ['北京']
 ['湖北']]

5.2.3 读取多行多列数据

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
data = df.loc[[1, 3, 4],{"省份", "城市"}].values
print(data)

这是读取了分别读取了第二行的省份和城市数据、第四行的省份和城市数据、第五行的省份和城市数据

result:

[['陕西' '西安']
 ['北京' '北京']
 ['湖北' '武汉']]

5.2.4 获取所有行的指定列数据

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
data = df.loc[:, {"省份", "城市"}].values
print(data)

这是读取了分别读取了表格中每一行的省份和城市数据

result:

[['辽宁' '大连']
 ['陕西' '西安']
 ['广东' '深圳']
 ['北京' '北京']
 ['湖北' '武汉']]

5.3获取行名输出

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
print(df.index.values)

result:

[0 1 2 3 4]

5.4 获取列名输出

df = pd.read_excel(r'C:\Users\admin\Desktop\数据分析测试表.xlsx', sheet_name=1)
print(df.columns.values)

result:

['区域' '省份' '城市']