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文件相关推荐

  1. excel修改列名_听说你还在手动合并Excel,看看这个吧!?

    Excel合并的应用场景 工作中,常常遇到将多个Excel进行合并的任务.例如,将各位参会人员的报名表合并成一张总的参会人员表,或是将不同客户的需求明细合并为一种总表. 常规的做法是新建一个空白的Ex ...

  2. python series转置储存到excel_P9:pythonpandas玩转excel文件

    Python中pandas库的数据结构主要有两种:一个是Series ,一个是DataFrame. DataFrame是一种数据结构,类似excel,是一种二维表: series是一个一维数组,是基于 ...

  3. python填写excel-Python玩转Excel的读写改实例

    摘要: 利用xlrd读取excel 利用xlwt写excel 利用xlutils修改excel 利用xlrd读取excel 先需要在命令行中pip install xlrd:读取xls文件的流程为: ...

  4. oracle行列转换关联union的方式_几行代码轻松玩转 Excel 行列转换

    几行代码轻松玩转 Excel 行列转换 下面这种交叉式的 Excel 表是很常见的格式,用来填写和查看都比较方便: 但是,如果想做进一步的统计分析,这种格式就不方便了,需要行列转换,变成如下格式的明细 ...

  5. python处理excel教程实例-Python玩转Excel的读写改实例

    摘要: 利用xlrd读取excel 利用xlwt写excel 利用xlutils修改excel 利用xlrd读取excel 先需要在命令行中pip install xlrd:读取xls文件的流程为: ...

  6. csv 20位数据 如何打开可以预览完整数字_干货Python Pandas 做数据分析之玩转 Excel 报表分析...

    本篇文章选自作者在 GitChat 的分享,若有什么问题,可在公众号回复「小助手」添加小助手微信,邀请你进入技术交流群. 各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Ex ...

  7. 来吧!带你玩转 Excel VBA

    来吧!带你玩转 Excel VBA(含CD光盘1张)(双色)(附带近500个VBA思考练习题,Exceltip.net出品) 罗刚君  杨嘉恺编著 ISBN 978-7-121-20627-6 201 ...

  8. 来吧 带你玩转 Excel VBA

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 来吧!带 ...

  9. pandas 取excel 中的某一列_干货Python Pandas 做数据分析之玩转 Excel 报表分析

    本篇文章选自作者在 GitChat 的分享,若有什么问题,可在公众号回复「小助手」添加小助手微信,邀请你进入技术交流群. 各位朋友大家好,非常荣幸和大家聊一聊用 Python Pandas 处理 Ex ...

最新文章

  1. 单例设计模式详解。。。。。。。。。。。
  2. 这回导师们颤抖了,这个网站能匿名评价其“人品”,已有大量“不良”导师被爆...
  3. hdu3706基础的单调队列
  4. 真的,太多人辜负了.NET5!
  5. JPA教程:实体映射-第3部分
  6. Android 将整形颜色值转换成String类型
  7. CentOS 7.x防火墙问题
  8. Java基础---继承
  9. Tomcat,Jboss,Weblogic通过jndi连接数据库
  10. 黑苹果opencore下HD4400打开百度云等软件出现花屏的解决方案
  11. YOLO v4 图片批量测试
  12. 前端学习从入门到高级全程记录之43 (PHP基础Ⅵ)
  13. sql还原数据库操作
  14. elementui el-tab添加badge,以及实时更新标记值
  15. nginx的安装以及简单代理域名
  16. AMD CPU 开启Android Studio emulator虚拟机
  17. 【转载!!】一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬
  18. 模拟器链接appium
  19. 网络带宽和速度的关系
  20. 2021 RoboCom 世界机器人开发者大赛-本科组(复赛)

热门文章

  1. python建模分析实操_R和Python在数据建模方面的风格差异分析(下)
  2. 6个班的计算机课平均分给,计算机六道题
  3. angular2页面抓取_angular2怎么获取目前高度?
  4. oracle数据库的诊断目标位置,刚安装的数据库卸载 指定数据库的诊断目标位置不存在...
  5. 4月11日 GCD 总结(二)
  6. 软件工程:第五章作业
  7. LAMP基于php模块实现个人博客搭建
  8. 杭州企业“被参与”互联网攻击致半个美国网络瘫痪
  9. 企业云桌面-03-安装第1个企业 CA-013-CA01
  10. 多文件,多目录下查询关键字脚本