Python使用pandas读取excel

了解了Series和dataframe的基本数据结构和索引的相关概念之后,就可以练习基本的excel操作。pandas读取一个excel文件后会将其转化为DataFrame对象,每一列或行就是一个Series对象,本节课我们看下如何整体的了解一个excel,比如查看一个excel的行数、列数、表头、前几行、后几行。下面用代码依次展示。

1)获取行数:df.index

pandas会默认给一个excel文件的行设置数字索引,从0开始算;如果一个excel多个列的行数不同则按照行数最多的那一列计算。

\# -*- coding: utf-8 -*-

import pandas as pd

df = pd.read_excel('kwd.xlsx')

print(df.index) # 行索引

RangeIndex(start=0, stop=3747, step=1)
2)同时获取行数和列数:df.shape

输出元祖,分别为行数和列数,默认第一行是表头不算行数。

\# -*- coding: utf-8 -*-

import pandas as pd

df = pd.read_excel('kwd.xlsx')

print(df.shape)

(3747, 4)
3)获取表头:df.columns、df.keys()

默认是把excel的第一行当成表头来显示。注意:如果read_excel的sheet_name参数设为None,则df.keys()的结果是所有sheet名对象。

\# -*- coding: utf-8 -*-

import pandas as pd

df = pd.read_excel('kwd.xlsx')

print(df.keys())

print('---------------')

print(df.columns)

结果

Index([9, '上海', '地铁站', '富锦路租房'], dtype='object')

\---------------

Index([9, '上海', '地铁站', '富锦路租房'], dtype='object')
4)获取所有sheet:df.keys()
\# -*- coding: utf-8 -*-

import pandas as pd

\# 参数为None 代表读取所有sheet

df = pd.read_excel('kwd_city.xlsx',sheet_name=None)

\# 获取所有sheet名字

\# 如果read_excel参数不是None,则df.keys()为表头

sheet_names = list(df.keys())

print(sheet_names)

结果

['北京', '杭州', '天津', '上海', '南京', '苏州', '成都', '太原', '南宁', '郑州', '无锡', '武汉', '青岛', '长沙', '南昌', '常州']
5)前几行后几行

df.head(n) 数据框的前n行,会显示索引

df.tail(n) 数据框的后n行,会显示索引

\# -*- coding: utf-8 -*-

import pandas as pd

df = pd.read_excel('kwd.xlsx')

print(df.head(3))

print('----------------')

print(df.tail(3))
6)详细信息:df.info()

df.info()直接输出详细信息,返回值None。

\# -*- coding: utf-8 -*-

import pandas as pd

df = pd.read_excel('kwd.xlsx')

df.info()

结果

RangeIndex: 3747 entries, 0 to 3746

Data columns (total 4 columns):

9 3747 non-null int64

上海 3747 non-null object

地铁站 3747 non-null object

富锦路租房 3747 non-null object

dtypes: int64(1), object(3)

memory usage: 117.2+ KB
读取所有sheet并且读取行数和列数 不包含表头
import pandas as pd

df = pd.read_excel(r'C:\Users\Pert\Desktop\项目要求与资料提供\运动报告\运动指标.xlsx',sheet_name=None)
total_sheet=df.keys()
print('sheet个数:{}'.format(len(total_sheet)))

for sheet_name in total_sheet:
    structure=df[sheet_name].shape
    print('{}的行数为:{},列数为:{}'.format(sheet_name,structure[0],structure[1]))
实例demo
####读取excel
import pandas as pd
import numpy as np

#keep_default_na空字符读取出来就不是nan了,header=None第一行也读取 不作为表头
df = pd.read_excel('res.xlsx',sheet_name=None,header=None,keep_default_na=False)

#获取sheet名字的列表
total_sheet=df.keys()

#打印sheet页数
print('sheet个数:{}'.format(len(total_sheet)))

# data_np=[]

# for sheet_name in total_sheet:
#   ###打印每个sheet页的结构



#   structure=df[sheet_name].shape
#   # print('{}的行数为:{},列数为:{}'.format(sheet_name,structure[0],structure[1]))
  
#   #.values将DataFrame转为numpy  .tolist() 将numpy转为list
#   data_np.append(df[sheet_name].values.tolist())

###所有sheet页转为list,一个sheet页一个list,放在data_np这个大list里
data_list=[df[sheet_name].values.tolist() for sheet_name in total_sheet]

###第一页数据为空分隔不同系统的列
null_list=[index for index,value in enumerate(data_list[0]) if '' in value]

print(data_list[6])

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论

打赏作者

Pert-

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值