【Python】Python读写.xlsx文件(基本操作、空值补全等)

这篇具有很好参考价值的文章主要介绍了【Python】Python读写.xlsx文件(基本操作、空值补全等)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Python】Python读写.xlsx文件(Pandas)

1. 介绍

本文介绍如何使用使用 pandas 库来读取xlsx文件中的数据。

  • 需要安装openpyxl库才可以读取xlsx文件,使用pip install openpyxl。
  • 当然也可以用其他的库,比如openpyxl、xlrd,可以参考:
    • https://blog.csdn.net/moasad/article/details/120120673
    • https://blog.csdn.net/liuyingying0418/article/details/101066630

2. Pandas读写xlsx文件

2.1 基本操作

2.1.1 实现任务
  • 读取前n行数据

  • 读取指定数据(指定行指定列)

  • 获取文件行号和列标题

  • 将数据转换为字典形式

  • 原数据:
    【Python】Python读写.xlsx文件(基本操作、空值补全等)

2.1.2 代码
import pandas as pd
#1.读取前n行所有数据
df1=pd.read_excel('d1.xlsx')#读取xlsx中的第一个sheet
data1=df1.head(10)#读取前10行所有数据
data2=df1.values#list【】  相当于一个矩阵,以行为单位
#data2=df.values()   报错:TypeError: 'numpy.ndarray' object is not callable
print("获取到所有的值:\n{0}".format(data1))#格式化输出
print("获取到所有的值:\n{0}".format(data2))
 
#2.读取特定行特定列
data3=df1.iloc[0].values#读取第一行所有数据
data4=df1.iloc[1,1]#读取指定行列位置数据:读取(1,1)位置的数据
data5=df1.iloc[[1,2]].values#读取指定多行:读取第一行和第二行所有数据
data6=df1.iloc[:,[0]].values#读取指定列的所有行数据:读取第一列所有数据
print("数据:\n{0}".format(data3))
print("数据:\n{0}".format(data4))
print("数据:\n{0}".format(data5))
print("数据:\n{0}".format(data6))
 
#3.获取xlsx文件行号、列号
print("输出行号列表{}".format(df1.index.values))#获取所有行的编号:0、1、2、3、4
print("输出列标题{}".format(df1.columns.values))#也就是每列的第一个元素
 
#4.将xlsx数据转换为字典
data=[]
for i in df1.index.values:#获取行号的索引,并对其遍历
    #根据i来获取每一行指定的数据,并用to_dict转成字典
    row_data=df1.loc[i,['id','name','class','data','score',]].to_dict()
    data.append(row_data)
print("最终获取到的数据是:{0}".format(data))
 
#iloc和loc的区别:iloc根据行号来索引,loc根据index来索引。
#所以1,2,3应该用iloc,4应该有loc
2.1.3 结果

【Python】Python读写.xlsx文件(基本操作、空值补全等)
【Python】Python读写.xlsx文件(基本操作、空值补全等)

2.2 进阶操作

准备工作(导入包、数据)

#导入必备数据分析库
import pandas as pd
import numpy as np

#导入excel数据文件
df = pd.DataFrame(pd.read_excel("TMao.xlsx")) 
#导入csv数据文件
# df = pd.DataFrame(pd.read_csv("Attributes.csv",header=1,sep=','))  #表示第一行为字段名
2.2.1 写操作

df2.to_excel(writer, ‘Sheet’, index=False)

#  任务:输出满足成绩大于等于90的数据
writer = pd.ExcelWriter('C:/Users/enuit/Desktop/out_test.xlsx')
temp = []
for i in range(len(df.index.values)):
    if df.iloc[i, 3] >= 90:
        temp.append(df.iloc[i].values)
df2 = pd.DataFrame(data=temp, columns=df.columns.values)
#  不写index会输出索引
df2.to_excel(writer, 'Sheet', index=False)
writer.save()
2.2.2 查看数据表的基本信息

根据需要对数据进行总体上的查看,建议不要全部执行,而是一条一条依次执行查看效果。

#维度查看:返回几行几列,注意不要加()
df.shape

#查看列名称:类似于SQL中的desc
df.columns

#数据表基本信息(维度、列名称、数据格式、所占空间等)
df.info

#查看每一列数据的格式
df.dtypes
#某一列数据的格式
df['订单付款时间'].dtype
df['订单金额'].dtype
2.2.2 空值的与缺失值(NAN、NAT)
  • 空值:在pandas中的空值是"",也叫空字符串;
  • 缺失值:在dataframe中为NAN或者NAT(缺失时间),在series中为none或者nan

1)查看所有值是否为空值

  • (所有值全部列出来,不实用的操作,这里简单介绍一下用法)
#查看是否为空值
df.isnull()
#某一列的空值
df["订单付款时间"].isnull()

2)判断是否存在空值

# 查看所有值中是否存在空值
df.isnull().any()

# 判断某列是否存在空值
df["订单付款时间"].isnull().any()  #或者.values

# 打印空值行的数据
if df["订单付款时间"].isnull().any():
     print(df[df.isnull().values==True])
     print(df[df.isna().values==True])

3)唯一值查看

#查看某一列的唯一值
df["订单金额"].unique()

#查看数据表的值
df.values

#查看前几行/后几行的数据
df.head()  #默认前5行
df.tail(10)  #指定数值10,查看后10行的数据
2.2.3 数据清洗

1)空值的处理

  • (1)删除含有空值的行或列:用dropna()时可以同时剔除Nan和NaT
    • axis:维度,axis=0表示index行,axis=1表示columns列,默认为0
    • how:"all"表示这一行或列中的元素全部缺失(为nan)才删除这一行或列,"any"表示这一行或列中只要有元素缺失,就删除这一行或列
    • thresh:一行或一列中至少出现了thresh个才删除。
    • subset:在某些列的子集中选择出现了缺失值的列删除,不在子集中的含有缺失值得列或行不会删除(有axis决定是行还是列)
    • inplace:刷选过缺失值得新数据是存为副本还是直接在原数据上进行修改。
# 准备工作
df.isnull().any()  #查看哪一列有空值,发现是<订单付款时间>列
print(df[df['订单付款时间'].isna().values==True])  #输出<订单付款时间>列存在空值的行

#清洗空值
df2 = df.dropna(axis=0,how='any',thresh=None,subset=None,inplace=False)  #删除含有空值的行或列 
df2['订单付款时间'].isna().any()  #查看是否还存在空值

#再次查看
df2.shape
  • (2)若发现dropna()后仍然存在空值,则有可能其中并不是空值,而是空字符串,这里就可以将空字符串替换成空值再进行dropna()操作
df.replace(to_replace=r'^\s*$',value=np.nan,regex=True,inplace=True)
df['订单付款时间'].dropna()
  • (3)填充含有空值的行或列(ffill / bfill)
    • value:需要用什么值去填充缺失值
    • axis:确定填充维度,从行开始或是从列开始
    • method:ffill:用缺失值前面的一个值代替缺失值,如果axis=1,那么就是横向的前面的值替换后面的缺失值,如果axis=0,那么则是上面的值替换下面的缺失值。backfill/bfill,缺失值后面的一个值代替前面的缺失值。注意这个参数不能与value同时出现
    • limit:确定填充的个数,如果limit=2,则只填充两个缺失值。
df.isna().any()  #查看原数据表是否存在空值
df3 = df.fillna(method='ffill',axis=0,inplace=False,limit=None,downcast=None)
df3.isna().any()  #查看填充后的数据表是否存在空值

#用均值填充空值(mean方法)
df['订单金额'].fillna(df[订单金额].mean())

2)格式转换

  • (1)清除空格字符strip:调用map函数对str对象进行空格去除,若去除逗号可以用map(str.strip(‘,’))
df['收货地址']=df['收货地址'].map(str.strip())  
  • (2)大小写转换lower/upper
df['编码']=df['编码'].strip().lower()  #大写同理,upper()
  • (3)更改数据格式astype
df['订单金额'].astype('int')  #int整数类型,同理float浮点型

3)更改列名即字段名

df.rename(columns={'实付金额':'实付'})  #把实付金额,改成 实付

4)保留一个重复值

df['收货地址'].drop_duplicates()  #删除列中后出现的值
df['收货地址'].drop_duplicates(keep='last')  #删除列中先出现的值,即保留最后一个值

5)数据替换
把收货地址中的 四川 改为 四川省

df['收货地址'].replace('四川', '四川省')  

3. 参考

【1】https://blog.csdn.net/RitaAndWakaka/article/details/108366203
【2】https://blog.csdn.net/Viewinfinitely/article/details/124728721文章来源地址https://www.toymoban.com/news/detail-411922.html

到了这里,关于【Python】Python读写.xlsx文件(基本操作、空值补全等)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【100天精通python】Day19:文件及目录操作_基本文件操作

    目录 专栏导读  1 文件的创建打开和关闭 2.1 使用内置函数open(),close()创建打开和关闭

    2024年02月14日
    浏览(53)
  • Python基础语法(五)—— 文件基本操作(打开、写入、关闭、查找)

    我们平时所创建的变量都是保存在内存中的,我们知道如果重启应用或者重启机器,内存中的数据就会丢失。 如果想让数据能够持久化存储,就可以把数据保存到文件或者是数据库中。 比如windows上,通过后缀名可以看到常见的文件类型有: 可执行文件(exe) 文本文件(t

    2024年02月01日
    浏览(39)
  • Python---文件、基本操作:打开open,写入write,关闭close,读取read/readlines,移动光标seek,mode模式

    文件: 内存中存放的数据在计算机关机后就会消失。 要长久保存数据 ,就要使用硬盘、光盘、U 盘等设备。 为了便于数据的管理和检索,引入了 “文件 ”的概念。 像移动硬盘,内存卡,网盘等等。 一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予

    2024年02月03日
    浏览(54)
  • python 读写 json,csv,txt,docx,xlsx,xls文件大全

    最近再处理数据的时候,总会用到读写json,csv,xlsx和xls文件代码 这里就做个总结记录一下 扩展: json.loads(line)和 json.load(line) 通用写法: 1.2.1 list类型写入 1.2.2 dict类型写入 注意:json.dump()将Python对象序列化为JSON格式,并将其写入文件中。 扩展:json.dumps()和 json.dump() 2.2.1

    2024年02月06日
    浏览(44)
  • 五、文件系统组成和基本操作

    1、Linux文件系统结构 Linux:是一个单根倒树状的文件系统结构 Windows:是多根多树状的文件系统结构 文件系统从根目录开始,表示为一个单独的 ‘ / ’ 字符 文件命名大小写敏感 路径以 ‘ / ’ 为分隔 2、 Linux重要目录 /root:超级用户root的家目录(用户文件默认存放的位置)

    2024年02月05日
    浏览(45)
  • Rsync 文件同步(一):系统基本操作

    Rsync (remote sync) UNIX 及类 UNIX 平台下一款数据镜像备份软件 很神奇 不同于 FTP 或其他文件传输服务进行全量备份,它可以根据数据的变化进行差异备份 可以使用它进行本地数据或远程数据的复制 可以使用 SSH 安全隧道进行加密数据传输 Rsync 服务端定义源数据,客户端仅在

    2024年02月02日
    浏览(43)
  • Android文件基本操作(创建文件(夹)、复制文件(夹)、设置文件访问权限)

    将src目录下的info.txt复制到dst目录并重命名为info_dst.txt 1、 方法一:调用java.nio.file.Files.copy() 2、方法二:使用输入输出流 1、删除文件 只需要调用File的delete方法即可删除指定文件 2、删除文件夹 如果文件夹不为空,调用delete方法是无法删除文件夹的。需要先删除文件夹中包含

    2024年02月01日
    浏览(85)
  • 【Linux】基本指令-入门级文件操作(二)

    目录 基本指令 7 cp指令(重要) 8  mv指令(重要) 9 nano指令  10 cat指令 11 echo指令与重定向(重要) 12 more指令 13 less指令 功能:复制文件或目录(copy) 语法:cp [选项] 源文件或目录 目标文件或目录 常用选项: -f        强制复制源文件或目录到目标文件,不管目标文件

    2024年02月08日
    浏览(50)
  • 【Linux】基本指令-入门级文件操作(一)

    目录 前言 ⭕linux的树状文件结构 ⭕绝对路径和相对路径 ⭕当前路径和上级路径 ⭕隐藏文件 基本指令(重点) 1 pwd 指令 2 mkdir 指令  3 touch 指令 4 ls 指令 4.1 ls只加选项不加文件/目录名,默认查看当前目录下的文件 4.1.1 ls -a:查看所有文件包括隐藏文件 4.1.2 ls -l / ll:

    2024年02月08日
    浏览(42)
  • Python基本操作

    啦啦啦,现在开始,打算做一期Python基础教程,欢迎大家来看哦! 这期文章真的是Python基础中的基础,相信有一定编程基础的小伙伴们都一定能看懂的… 本文共分为以下几个部分: 数与运算符 基本输入输出 注释 模块基本操作 小彩蛋 本文内容导图 — 数与运算符 算数运算符

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包