python制作表格处理_使用python处理excel表格——pandas(1)
这里写目录标题
一.基本概念
二.内容
1.创建文件
A.创建空表格
B.创建非空表格
2.读取文件
A.读取整个表格
(1)读取有多个sheet的excel
(2).title在首行
(3)title不在首行
-title之前的行为空
-title之前的行非空
-无title
(4).已知index列
B.读取某一行、列
(1)读取整个行/列
(2)读取部分行(筛选)
3.生成行、列
A.创建series
-从directory转为series
-直接生成series
B.创建行、列
-创建列
“index-index一一对齐”
“index-index不对齐”
-创建行
4.导出文件
4.1导出为excel文件
4.1导出为csv文件
使用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!')
效果:
前面多出来的这一列为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!')
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)
结果:
(2).title在首行
表格样式(sheet1):
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
结果:
(3)title不在首行
pandas在读取数据的时候默认,会默认第0行为title。
-title之前的行为空
正常读取文件,pandas可以正常识别
-title之前的行非空
只要有一行是脏的,就需要
表格样式(sheet1):
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)
列名只有’数量’,‘名称’变为了索index
(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这一行的内容
结果:
(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)
结果:
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这个键值对
结果:
将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)
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)
“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)
在空值区会自动以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)
4.导出文件
4.1导出为excel文件
相关方法:
df.to_excel(self, excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)
常用参数:
excel_writer : 指定文件导出路径与文件名;
sheet_name : 指定Sheet名称;
index:设置是否使用自然数索引,默认使用;
columns : 指定要导出的列;
encoding : 指定编码格式,一般为“utf-8”
na_rep : 设置缺失值的填充;
inf_rep : 设置无穷值inf的填充值。默认为inf,表示无穷大(Excel中没有无穷大的本地表示)
engine : {‘openpyxl’,‘xlsxwriter’},可选,一般为xlsxwriter
案例:
import pandas as pd
people=pd.read_excel('D:/实验.xlsx')#读取数据
people.to_excel('D:/output.xlsx',index=False)#导出数据为.xlsx文件,不包含索引名
4.1导出为csv文件
相关方法:
df.to_csv(self, path_or_buf=None, sep=', ', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, mode='w', encoding=None, compression='infer', quoting=None, quotechar='"', line_terminator=None, chunksize=None, date_format=None, doublequote=True, escapechar=None, decimal='.')
常用参数:
path_or_buf : 路径名和文件名;
index : 是否使用自然数索引,一般为“False”不使用;
columns :指定要导出的列;
sep : 指定分隔符,默认使用逗号;
na_rep : 缺失值处理;
encoding :指定编码格式,一般使用utf-8或gbk。
案例:
import pandas as pd
people=pd.read_excel('D:/实验.xlsx')#读取数据
#导出数据为.csv文件,编码格式指定为gbk
people.to_csv('D:/output.csv',index=False,encoding='gbk')
python制作表格处理_使用python处理excel表格——pandas(1)相关推荐
- python制作音乐模块_用Python打造一个只属于你的专属音乐播放器,享受动手的快乐!...
平常我们总是用爬虫爬取网页上的音乐,今天我们换个玩法,用Python制作一个独一无二只属于你的音乐播放器,小伙伴们觉得如何?如果觉得提议还不错,那就立即动手吧! 一.需要的库 pygame tkint ...
- 如何用python制作三维动画_用Python制作3D动画
很多小伙伴可能不知道,在3D动画甚至电影制作的过程中,Python也在其中扮演了很重要的角色呢! 比如皮克斯的动画片一般使用Maya软件制作,并且流程中使用到了大量的Maya Python插件. 另外 ...
- python制作电脑软件_利用PYTHON制作桌面版爬虫软件(二)
今天继续新的专题.主要讲解[利用PYTHON制作桌面版爬虫软件]下的如何实现界面功能(一).该讲主要包括以下三个内容:掌握如何编写主函数,运行界面. 了解pywin32模块. 如何用python识别Q ...
- python制作表白神器_用Python个女神做一个表白神器
用Python给女神表白 情人节刚刚过去,但男同胞们对女神的暗恋愈加热烈,想尽一切办法表白,今天,咱们就用Python制作一个表白神器. 程序介绍 运用pygame制作一个小游戏,当女神用鼠标点击&q ...
- python制作阴阳师脚本_利用python制作一个阴阳师小游戏
利用python制作一个阴阳师小游戏 发布时间:2020-11-27 13:59:49 来源:亿速云 阅读:84 这期内容当中小编将会给大家带来有关利用python制作一个阴阳师小游戏,文章内容丰富且 ...
- python制作手机壁纸_用Python生成自己独一无二的手机壁纸
已经12月份了,马上就要过年了,要不要换一个喜气洋洋.洋洋洒洒.洒扫应对.对牛弹琴的手机壁纸呢? 今天小编给大家表演的节目是:用Python生成自己独一无二的手机壁纸. 首先我们需要选择一个现成的手机 ...
- python制作手机壁纸_用Python生成自己专属的手机春节壁纸
↑ 关注 + 置顶 ~ 有趣的不像个技术号 马上就要过年了,要不要换一个喜气洋洋.洋洋洒洒.洒扫应对.对牛弹琴的手机壁纸呢? 今天小五给大家表演的节目是:用Python生成自己独一无二的手机壁纸. 首 ...
- python制作电脑软件_利用PYTHON制作桌面版爬虫软件(一)
抱歉,对长沙房地产数据的挖掘与分析[三],想了蛮久,觉得对自己的分析结果不是很理想.等我完善好了,我再发出来吧.今天继续开启新的一专题.主要讲解如何用PYTHON实现简单的桌面软件的制作. 题外话,我 ...
- python制作图片墙_利用python生成照片墙的示例代码
PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...
- 用python制作3d动画_-用 Python 做科学计算--Visual-制作3D演示动画
# Visual-制作3D演示动画 [Visual](http://vpython.org) 是Python的一个简单易用的3D图形库,使用它可以快速创建3D场景.动画.和TVTK相比它更加适合于创建 ...
最新文章
- 树状数组 + 扫描线 ---- BZOJ1818[内部白点][树状数组+扫描线]
- tensorflow.transpose的理解
- 题目1:学生成绩档案管理系统(实验准备)
- AI嵌入式开发:NVIDIA Jetson Xavier NX刷机(2)
- J - 青蛙的约会(扩展欧几里得)
- 可视化排班管理_小白经理的思考日记-可视化看板和走动管理
- ebnf范式_使用Scala基于词法单元的解析器定制EBNF范式文法解析
- 解决pycharm 提示no tests were found的问题
- mysql检查约束字母_SQL中用check约束一列的首字母为's'
- Cocos2dx ParticleEditor粒子编辑器
- vs哪个版本好用_5个版本17款白金爱他美,究竟选哪个?德国版/澳洲版/卓萃/英国.....
- 【数字IC】深入浅出理解UART协议
- 红米5 Plus刷开发版/小米手机刷开发版
- 给钱,才是真的对你好
- String类的intern方法学习
- Unity Andriod调试
- sql server导入备份文件
- python中keys的用法_在Python中用keys()方法返回字典键的教程
- 高薪程序员面试题精讲系列82之说一下SQL查询语句的执行顺序详解-原理篇(下)
- 有效防御DDOS的八规则