excel修改列名 pandas_P9:pythonpandas玩转excel文件
Python中pandas库的数据结构主要有两种:一个是Series ,一个是DataFrame。
DataFrame是一种数据结构,类似excel,是一种二维表;
series是一个一维数组,是基于NumPy的ndarray结构。Pandas会默然用0到n-1来作为series的index,但也可以自己指定index(可以把index理解为dict里面的key)。
一、先安装pandas、xlrd
pip3 install pandas
pip3 install xlrd
二、pandas-DataFrame()函数
1、新建excel文件:直接使用pandas的DataFrame函数创建
# -*- coding: utf-8 -*-import pandas as pd
df = pd.DataFrame({'id':[1,2,3],'name':['刘备','关羽','张飞']})
df.to_excel("D:/用python写代码/output.xlsx")
print("Done!")
结果:
2、创建excel时将索引设置成id
# -*- coding: utf-8 -*-import pandas as pd
df = pd.DataFrame({'id':[1,2,3],'name':['刘备','关羽','张飞']})
df = df.set_index('id')
df.to_excel("D:/用python写代码/output1.xlsx")
print("Done!")
结果:
3、读取excel文件
# -*- coding: utf-8 -*-import pandas as pd
renyuan = pd.read_excel('D:/用python写代码/test1/Day1-7/ryb.xlsx')
print(renyuan.shape) #行数、列数
结果:(20, 7)
print(renyuan.columns) #列名
结果:Index(['id', 'name', 'sex', 'sfz', 'birth_date', 'zhicheng', 'zcsj'], dtype='object')
print(renyuan.head(2)) #前两行
结果:
id name sex sfz birth_date zhicheng zcsj
0 1 刘备 男 58829919701006**** 1970.10 高级工程师 2008.08
1 2 曹操 男 21079819880119**** 1988.01 工程师 2015.12
print(renyuan.tail(1)) #最后一行
结果:
id name sex sfz birth_date zhicheng zcsj
19 20 貂蝉 女 11826119901008**** 1990.1 工程师 2009.11
# -*- coding: utf-8 -*-import pandas as pd
renyuan = pd.read_excel('D:/用python写代码/test1/Day1-7/ryb.xlsx',header=1)print(renyuan.columns) #列名
结果:
Index(['001', '刘备', '男', '58829919701006****', '1970.10', '高级工程师', '2008.08'], dtype='object')
注:
1)在read_excel方法中,header默认值为0(索引),我们可根据需要修改参数。
2)header为默认值时,如果首行为空,print(xx.columns)可自动跳过空行至首行标题行。
3)renyuan = pd.read_excel("D:/用python写代码/test1/Day1-7/ryb.xlsx",skiprows=3,usecols="C:F“),其中,skiprows=3代表跳过前三行空行,usecols="C:F“代表仅使用C:F列,即跳过A-B列。
4、给无首行标题栏的表格添加标题栏
# -*- coding: utf-8 -*-import pandas as pd
renyuan = pd.read_excel('D:/用python写代码/test1/Day1-7/ryb.xlsx',header=None)
renyuan.columns = ['id','name','sex','sfz','birth_date','zhicheng','zcsj']print(renyuan.columns) #列名renyuan.to_excel("D:/用python写代码/test1/Day1-7/ryb.xlsx")print("Done!")
结果:
Index(['id', 'name', 'sex', 'sfz', 'birth_date', 'zhicheng', 'zcsj'], dtype='object')
Done!
可将序号设置成id,从1开始,完善如下:
# -*- coding: utf-8 -*-import pandas as pd
renyuan = pd.read_excel('D:/用python写代码/test1/Day1-7/ryb.xlsx',header=None)
renyuan.columns = ['id','name','sex','sfz','birth_date','zhicheng','zcsj']
renyuan.set_index('id',inplace=True)print(renyuan.columns) #列名renyuan.to_excel("D:/用python写代码/test1/Day1-7/ryb.xlsx")print("Done!")
结果:
Index(['name', 'sex', 'sfz', 'birth_date', 'zhicheng', 'zcsj'], dtype='object')
Done!
注:
1)修改后,print(renyun.columns)看不到id了,只看到index。而读取时,又将id当作普通的列名,自动新增了索引号。
2)pandas 中 inplace 参数在很多函数中都会有,作用:是否在原对象基础上进行修改。inplace = True:不创建新的对象,直接对原始对象进行修改;inplace = False:对数据进行修改,创建并返回新的对象承载其修改结果。默认是False。
# -*- coding: utf-8 -*-import pandas as pd
renyuan = pd.read_excel('D:/用python写代码/test1/Day1-7/ryb.xlsx')print(renyuan.columns) #列名print(renyuan.head(2))
结果:
Index(['id', 'name', 'sex', 'sfz', 'birth_date', 'zhicheng', 'zcsj'], dtype='object')
id name sex sfz birth_date zhicheng zcsj
0 1 刘备 男 58829919701006**** 1970.10 高级工程师 2008.08
1 2 曹操 男 21079819880119**** 1988.01 工程师 2015.12
三、pandas-Series()函数
1、利用列表创建序列Series
# -*- coding: utf-8 -*-import pandas as pd
l1 = [100,200,300]
l2 = ['x','y','z']
s1 = pd.Series(l1,index=l2)
或者:s1 = pd.Series([100,200,300],index=['x','y','z'])print(s1)
结果:
x 100
y 200
z 300
dtype: int64
2、将序列Series转化成Dataframe
# -*- coding: utf-8 -*-import pandas as pd
s1 = pd.Series([1,2,3],index=[1,2,3],name='A')
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)
结果:
A B C
1 1 10 100
2 2 20 200
3 3 30 300
# -*- coding: utf-8 -*-import pandas as pd
s1 = pd.Series([1,2,3],index=[1,2,3],name='A')
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)
结果:
1 2 3
A 1 2 3
B 10 20 30
C 100 200 300
四、示例
1)字符串拼接、转换
读取excel,并将str型字段“birth_date”(如:1988.08)转换成日期格式yyyy-mm-dd.
原表格式如下:
代码1:
import pandas as pd
df = pd.read_excel("D:/用python写代码/test1/Day1-7/ryb.xlsx",index_col='id',dtype={'birth_date':str,'sfz':str})
birth1 = df['birth_date'].str[:4]
birth2 = df['birth_date'].str[-2:]
sfz = df['sfz'].str[12:14]print(birth1+"-"+birth2+"-"+sfz)
五、补充:
1、time模块--计算当前日期
import time
p_time = time.strftime('%Y-%m-%d',time.localtime(time.time()))print(p_time)
结果:
2020-09-01
2、datetime模块--strptime和strftime的区别strptime:p表示parse,表示分析的意思,所以strptime是给定一个时间字符串和分析模式,返回一个时间对象。strftime:
f表示format,表示格式化,和strptime正好相反,要求给一个时间对象和输出格式,返回一个时间字符串将str转换成datetime
import timeimport datetime
p_time = time.strftime('%Y-%m-%d',time.localtime(time.time()))pp_time = datetime.datetime.strptime(p_time,'%Y-%m-%d').date()print(pp_time)
结果:2020-09-01示例:根据str类型的“出生年月”,计算出实际年龄
import pandas as pdimport timeimport datetimedf = pd.read_excel("D:/用python写代码/test1/Day1-7/ryb.xlsx",index_col='id',dtype={'birth_date':str,'sfz':str})birth1 = df['birth_date'].str[:4]birth2 = df['birth_date'].str[-2:]sfz = df['sfz'].str[12:14]bir = (birth1+"-"+birth2+"-"+sfz).str[0:11]p_time = time.strftime('%Y-%m-%d',time.localtime(time.time())) #计算当前日期(元组)p2_time = datetime.datetime.strptime(p_time,'%Y-%m-%d').date() #将p_time转换成日期格式for i in range(1,20): p1_time = datetime.datetime.strptime(bir[i],'%Y-%m-%d').date() p = (p2_time-p1_time).daysprint(round(p/365,1))
结果:50.032.725.429.838.441.0
excel修改列名 pandas_P9:pythonpandas玩转excel文件相关推荐
- excel修改列名_听说你还在手动合并Excel,看看这个吧!?
Excel合并的应用场景 工作中,常常遇到将多个Excel进行合并的任务.例如,将各位参会人员的报名表合并成一张总的参会人员表,或是将不同客户的需求明细合并为一种总表. 常规的做法是新建一个空白的Ex ...
- python series转置储存到excel_P9:pythonpandas玩转excel文件
Python中pandas库的数据结构主要有两种:一个是Series ,一个是DataFrame. DataFrame是一种数据结构,类似excel,是一种二维表: series是一个一维数组,是基于 ...
- python填写excel-Python玩转Excel的读写改实例
摘要: 利用xlrd读取excel 利用xlwt写excel 利用xlutils修改excel 利用xlrd读取excel 先需要在命令行中pip install xlrd:读取xls文件的流程为: ...
- oracle行列转换关联union的方式_几行代码轻松玩转 Excel 行列转换
几行代码轻松玩转 Excel 行列转换 下面这种交叉式的 Excel 表是很常见的格式,用来填写和查看都比较方便: 但是,如果想做进一步的统计分析,这种格式就不方便了,需要行列转换,变成如下格式的明细 ...
- python处理excel教程实例-Python玩转Excel的读写改实例
摘要: 利用xlrd读取excel 利用xlwt写excel 利用xlutils修改excel 利用xlrd读取excel 先需要在命令行中pip install xlrd:读取xls文件的流程为: ...
- csv 20位数据 如何打开可以预览完整数字_干货Python Pandas 做数据分析之玩转 Excel 报表分析...
本篇文章选自作者在 GitChat 的分享,若有什么问题,可在公众号回复「小助手」添加小助手微信,邀请你进入技术交流群. 各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Ex ...
- 来吧!带你玩转 Excel VBA
来吧!带你玩转 Excel VBA(含CD光盘1张)(双色)(附带近500个VBA思考练习题,Exceltip.net出品) 罗刚君 杨嘉恺编著 ISBN 978-7-121-20627-6 201 ...
- 来吧 带你玩转 Excel VBA
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 来吧!带 ...
- pandas 取excel 中的某一列_干货Python Pandas 做数据分析之玩转 Excel 报表分析
本篇文章选自作者在 GitChat 的分享,若有什么问题,可在公众号回复「小助手」添加小助手微信,邀请你进入技术交流群. 各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Ex ...
最新文章
- 单例设计模式详解。。。。。。。。。。。
- 这回导师们颤抖了,这个网站能匿名评价其“人品”,已有大量“不良”导师被爆...
- hdu3706基础的单调队列
- 真的,太多人辜负了.NET5!
- JPA教程:实体映射-第3部分
- Android 将整形颜色值转换成String类型
- CentOS 7.x防火墙问题
- Java基础---继承
- Tomcat,Jboss,Weblogic通过jndi连接数据库
- 黑苹果opencore下HD4400打开百度云等软件出现花屏的解决方案
- YOLO v4 图片批量测试
- 前端学习从入门到高级全程记录之43 (PHP基础Ⅵ)
- sql还原数据库操作
- elementui el-tab添加badge,以及实时更新标记值
- nginx的安装以及简单代理域名
- AMD CPU 开启Android Studio emulator虚拟机
- 【转载!!】一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬
- 模拟器链接appium
- 网络带宽和速度的关系
- 2021 RoboCom 世界机器人开发者大赛-本科组(复赛)
热门文章
- python建模分析实操_R和Python在数据建模方面的风格差异分析(下)
- 6个班的计算机课平均分给,计算机六道题
- angular2页面抓取_angular2怎么获取目前高度?
- oracle数据库的诊断目标位置,刚安装的数据库卸载 指定数据库的诊断目标位置不存在...
- 4月11日 GCD 总结(二)
- 软件工程:第五章作业
- LAMP基于php模块实现个人博客搭建
- 杭州企业“被参与”互联网攻击致半个美国网络瘫痪
- 企业云桌面-03-安装第1个企业 CA-013-CA01
- 多文件,多目录下查询关键字脚本