欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用python处理excel表格——pandas(1)

程序员文章站 2021-12-29 11:52:37
1.模块应用pandas模块来处理excel文件2.基本概念excel文件打开之后,该文件叫工作簿(workbook)。每个工作簿中包含多张表单(worksheet),正在操作的表单被成为活跃的表单(active worksheet)。每一张表单中,有行(row),列(column)。行号:1,2,3;列号A,B,C。特定的行和列构成单元格(cell)3.代码(1)创建文件创建空表格import pandas as pddf=pd.dataframe()#创建表格,datafr...


使用pandas包,可以同时处理xls和xlsx两种excel文件。

一.基本概念

  • excel文件打开之后,该文件叫工作簿(workbook)
  • 每个工作簿中包含多张表单(worksheet),正在操作的表单被成为活跃的表单(active worksheet)。
  • 每一张表单中,有行(row)列(column)。行号:1,2,3;列号A,B,C。
  • 特定的行和列构成单元格(cell)
  • 表单中还会含有索引(index)

二.内容

1.创建文件

A.创建空表格

import pandas as pd
#创建表格,dataframe()空括号表示创建的是空表格
#dataframe为数据帧
df=pd.DataFrame()
#保存路径
df.to_excel('D:/output.xlsx')
print('Done!')

B.创建非空表格

import pandas as pd
#创建表格,dataframe()空括号表示创建的是空表格
#dataframe为数据帧
df=pd.DataFrame({'ID':[1,2,3],'NAME':['Wang','Zhang','Lee']})
#保存路径
df.to_excel('D:/output.xlsx')
print('Done!')

效果:
使用python处理excel表格——pandas(1)
前面多出来的这一列为dataframe的索引,因为我们没有给他指定索引,所以其自动生成。如果我们想要拿ID这一列做索引,则:

import pandas as pd
#创建表格,dataframe()空括号表示创建的是空表格
#dataframe为数据帧
df=pd.DataFrame({'ID':[1,2,3],'NAME':['Wang','Zhang','Lee']})
df=df.set_index('ID')
#保存路径
df.to_excel('D:/output.xlsx')
print('Done!')

使用python处理excel表格——pandas(1)

2.读取文件

【演示文件情况】
该文件内容全为虚构,没有任何含义,仅作演示使用
共三个sheet:sheet1、sheet2、sheet3
其中(不包含标题行):
sheet1——(5,2)、sheet2——(6,4)、sheet3——(7,3)

A.读取整个表格

(1)读取有多个sheet的excel

  • pandas读取的常用格式pd.read_excel(file, sheet_name),其中sheetname可以使用数字进行替代,从0开始,默认为0
  • pandas写入的格式为data.to_excel(‘filename’,sheet_name=‘A’)
import pandas as pd
import pandas as pd
path = 'D:\python学习\表格/people.xlsx'
#读取数据,设置None可以生成一个字典,字典中的key值即为sheet名字
#此时使用DataFram,会报错
data = pd.read_excel(path,None)
print(data.keys())#查看sheet的名字
for sh_name in data.keys():
    print('sheet名字:',sh_name)
    #获得每一个sheet中的内容
    sh_data = pd.DataFrame(pd.read_excel(path,sh_name))
    print(sh_data)

结果:
使用python处理excel表格——pandas(1)

(2).title在首行

表格样式(sheet1):
使用python处理excel表格——pandas(1)

import pandas as pd
people=pd.read_excel('D:/people.xlsx')#读取文件
print(people.shape)#读取行列数
print(people.columns)#读取列名
print(people.head(3))#查看表格内容—head,默认为5行
print('=========================')#分割行
print(people.tail(3))#查看表格内容—tail

结果:使用python处理excel表格——pandas(1)

(3)title不在首行

pandas在读取数据的时候默认,会默认第0行为title。

-title之前的行为空

正常读取文件,pandas可以正常识别

-title之前的行非空

只要有一行是脏的,就需要
表格样式(sheet1):使用python处理excel表格——pandas(1)

import pandas as pd
people=pd.read_excel('D:/people2.xlsx',header=1)#读取文件
print(people.columns)#读取列名
-无title
import pandas as pd
people=pd.read_excel('D:/people2.xlsx',header=None)#读取文件
people.columns=['名称','数量']#人为设定列名
#将‘名称’列设为索引,且在原表上进行修改
people.set_index('名称',inplace= True)
print(people.columns)#读取列名
people.to_excel('D:/output.xlsx')#输出为output.xlsx
print('DONE!')

(如果不认为的设定,则自动生成0,1,2,3,为title)
使用python处理excel表格——pandas(1)
列名只有’数量’,‘名称’变为了索index使用python处理excel表格——pandas(1)

(4).已知index列

在使用pandas进行excel数据表读取的时候,如不特定指明第一列为index,则其会默认加一列索引。所以,如若已知某列为index,则需指明。

import pandas as pd
#读取文件,且指定‘名称’列为索引
df=pd.read_excel('D:/output.xlsx',index_col='名称')
df.to_excel('D:/output2.xlsx')#生成新的excel文件
print('Done!')

B.读取某一行、列

(1)读取整个行/列

import pandas as pd
path = 'D:\python学习\表格/people.xlsx'
data = pd.DataFrame(pd.read_excel(path))#读取数据
print('行的索引名称:',data.index)#获取行的索引名称
print('列的索引名称:',data.columns)#获取列的索引名称
print('======================')#分割线
print(data['名称'])#获取列名为姓名这一列的内容
print('======================')#分割线
print(data.loc[0])#获取行名为0这一行的内容

结果:
使用python处理excel表格——pandas(1)

(2)读取部分行(筛选)

筛选使用的是 data.loc[列名称 = 提取的信息]

import pandas as pd
path = 'D:\python学习\表格/people.xlsx'
data = pd.DataFrame(pd.read_excel(path))#读取数据
#获取列名为名称,内容为“上海市”的内容
result = data.loc[data['名称'] == '上海市']
print(result)

结果:使用python处理excel表格——pandas(1)

3.生成行、列

行列视为序列(seties),则单元格就是不同的序列中的元素。

A.创建series

-从directory转为series

【基础知识】字典-键值对

import pandas as pd
d={'x':100,'y':200,'z':300}#生成字典,由基本键值对构成
print(d.keys())#字典keys集合
print(d.values())#字典values集合
print(d['x'])#查看x:100这个键值对

结果:
使用python处理excel表格——pandas(1)
将directory转变为series,则keys变为indexs,将values转变为data。
则生成series:

import pandas as pd
d={'x':100,'y':200,'z':300}#生成字典
s1=pd.Series(d)
print(s1)
print(s1.index)

-直接生成series

import pandas as pd
L1=(100,2,30)
L2=('x','y','z')
s1=pd.Series(L1,index=L2)
#或者s1=pd.Series((100,2,30),index=('x','y','z'))
print(s1)

使用python处理excel表格——pandas(1)

B.创建行、列

将series按照不同的方法加入dataframe中,就可以创建不同的行和列:
以list的形式将序列加入dataframe,则把不同的序列看为一行,序列的名字看为行号;以dictory的形式将序列加入dataframe,则把不同的序列看为一列,序列的名字看为列名。

-创建列

  • 以directory加入
  • 每个list的index与dataframe中的index呈对齐关系。
“index-index一一对齐”
import pandas as pd
s1=pd.Series([1,2,3],index=[1,2,3],name='A')#index特指行号
s2=pd.Series([10,20,30],index=[1,2,3],name='B')
s3=pd.Series([100,200,300],index=[1,2,3],name='C')
df=pd.DataFrame({s1.name:s1,s2.name:s2,s3.name:s3})
print(df)

使用python处理excel表格——pandas(1)

“index-index不对齐”
import pandas as pd
s1=pd.Series([1,2,3],index=[1,2,3],name='A')#index特指行号
s2=pd.Series([10,20,30],index=[1,2,3],name='B')
s3=pd.Series([100,200,300],index=[2,3,4],name='C')
df=pd.DataFrame({s1.name:s1,s2.name:s2,s3.name:s3})
print(df)

使用python处理excel表格——pandas(1)
在空值区会自动以NaN填充(NaN:not a number)

-创建行

以list形式

import pandas as pd
s1=pd.Series([1,2,3],index=[1,2,3],name='A')#index特指行号
s2=pd.Series([10,20,30],index=[1,2,3],name='B')
s3=pd.Series([100,200,300],index=[1,2,3],name='C')
df=pd.DataFrame([s1,s2,s3])
print(df)

使用python处理excel表格——pandas(1)

本文地址:https://blog.csdn.net/mmmmmyyyy/article/details/107641294