对比Excel目录学Pandas系列之开始工具栏--打开保存新建

对比Excel目录学Pandas系列之开始工具栏--打开保存新建,第1张

对比Excel目录学Pandas系列之开始工具栏--打开/保存/新建

文章目录
  • 一、打开
    • 1、打开excel文件
    • 2、打开csv文件
    • 3、打开txt文件
    • 4、打开数据库sql文件
    • 5、read_clipboard()
    • 6、read_html()
  • 二、查看
    • df.shape
    • df.columns
    • df.head()
    • df.head()
  • 三、保存
    • 1、保存
    • 2、多个表写入同个文件
  • 四、新建
    • 1、通过列表创建Dataframe
    • 2、使用字典创建Dataframe
  • 五、对应EXCEL

一、打开

利用pandas读取文件主要用到的函数是read_xxx(),读取后数据结构为dataframe。

1、打开excel文件

pd.read_excel()可以用来读取excel文件

import pandas as pd
df=pd.read_excel(r'xxx.xls')# 文件名或文件路径
df

就是那么简单,当然还有参数需要学习一下

*sheet_name:指定文件中的表名
usecols:读取表格中哪几列
nrows:使用哪一列作为行索引
index_col:使用哪一列作为行索引
*header: 哪一行设置为列索引,默认是第一行,即header = 0,以header = 1,	         以第二行为列索引
date_parser:解析日期的函数
*encoding: 默认是utf-8,还可以是gbk
nrows: 读取多少行数据
skiprows: 跳过前几行读取文件,默认从0开始
*engine: 默认是C,如文件路径存在中文时,engine= "python"
names: 列索引

那么开始实战
一个表有两个sheet表一与表二


用pandas最简单方式打开

在不指定sheet_name的情况下默认是第一个sheet,如果打开第二个sheet,

df=pd.read_excel(r'工作表.xlsx',sheet_name='表2'#或者sheet_name=1)
df

第二个sheet是存在合并单元格,用pandas打开的时候会自动默认拆分,如图

题目1:打开第二个sheet,从第二行开始读取,读取表格中前两列,并自定义列名,列索引为’id’

df=pd.read_excel(r'工作表.xlsx',sheet_name='表2'#sheet_name=1
                ,skiprows = 2#第二行开始读取
                 ,usecols = [0,1,2]#只获取第一、二、三列
                 ,header=None#无列名
                 ,names = ["用户id","姓名","性别"]#添加列名
                )
df

题目2:转化时间列,读取前五行

df=pd.read_excel(r'工作表.xlsx',parse_dates=['出生年月'],nrows=5)
df
2、打开csv文件

csv文件是以逗号为分隔符的文件,读取参数与excel基本类似,与excel的读取不一样的地方在于如遇到中文路径必须得设置engine参数;
文件为gbk格式的csv,若不设置encoding参数,会报错,并且文件路径带有中文,需要设置engine参数,不然也会报错;

df = pd.read_csv(r"D:下载示例csv.csv",encoding = "gbk",engine = "python")

encoding默认是utf-8格式,根据需要还可能是gbk,示例就是gbk格式;
engine指定读取引擎,默认是c语言,如有路径有中文,需设置为python,python引擎更为全面;

csv基本与Excel用法相似,不再赘述

3、打开txt文件

在读取 txt 文件时,经常遇到分隔符非空格的情况, read_table 有一个分割参数 sep ,它使得用户可以自定义分割符号,进行 txt 数据的读取。例如,下面的读取的表以 |||| 为分割

pd.read_table('data/my_table_special_sep.txt',
          sep=' |||| ', engine='python')
4、打开数据库sql文件

打开sql文件有很多种方法
以pymysql为例:

import pymysql
eng=pymysql.connect(host='111.222.33.44',user='root',password'1234',db='test',charset='utf-8')
sql='select  * from  表名'
df=pd.read_sql(sql,eng)

host是数据库地址,user是用户名,password是密码,db是数据库名,charset是数据库编码。

以sqlalchemy为例

conn = create_engine('mysql+pymysql://root:1234@11.22.333.444:3306/test')
sql = 'select * from 表名'
df = pd.read_sql(sql,conn )
5、read_clipboard()

将剪贴簿内容转换成Dataframe
步骤:复制其他来源的表格,执行pd.read_clipboard()
有兴趣可以试一下

6、read_html()

快速获取在html中页面中Table型表格抓取的数据
table类型的表格网页结构如下:

几种标签含义:

	: 定义表格
	: 定义表格的页眉
	: 定义表格的主体
	: 定义表格的行
	: 定义表格的表头
	: 定义表格单元*

以财富五百强为例:

df=pd.read_html('https://www.fortunechina.com/fortune500/c/2018-07/19/content_311046.htm')
#财富五百强名单
df

二、查看 df.shape
df.shape
#该方法会返回这个表的(行数,列数)
df.columns

表的标题

df.columns

Index(['用户id', '姓名', '性别'], dtype='object')
df.head()
df.head() #默认读取前五行

df.head(10) #读取前10行
df.head() 三、保存 1、保存

excel,csv,txt写入文件的方式基本类似,以pandas的to_xx()方式写入;因为三者类似,这里只用excel格式来示例。

(1)index:参数只有True 或者 False 是否保留行索引
(2)columns: 通过列索引指定所需列
(3)sheet_name: sheet名称
(4)encoding:编码格式,utf-8或者gbk
(5)na_rep: 缺失值填充
(6)inf_rep:无穷值填充
(7)index_label: 行索引标签
(8)header: 默认为True,False没有列索引,如需更改列名,则header = ["列1","列2","列3"]
df.to_excel(r'工作表1.xlsx',index=False)
#最简单,需要什么参数就是自己加
df.to_excel(r"1.xlsx",index = False,columns = ["用户id","姓名","性别"],encoding = "utf-8",sheet_name = "示例",na_rep = "Na",inf_rep = "Na")

to_csv时需设置sep参数

2、多个表写入同个文件

多个数据表需同时写入一个文件时,需用到pandas的ExcelWriter

df1=pd.read_excel(r'工作表.xlsx',nrows=5)
df2=pd.read_excel(r'工作表.xlsx',nrows=5)
writer = pd.ExcelWriter(r"工作表2.xlsx",engine = "xlsxwriter")
df1.to_excel(writer,sheet_name = "例1",index=False)
df2.to_excel(writer,sheet_name = "例2",index=False)
writer.save()

输出结果存在多个sheet页

四、新建 1、通过列表创建Dataframe

用columns参数来定义列名,或者用index来定义行索引

df = pd.Dataframe(data=['a','b','c','d', 'e'], 
                  columns=['f'],index=['A','B','C','D','E'])

对应的也可以用嵌套的列表进行创建,这样columns参数就不止一个了

2、使用字典创建Dataframe

字典样式:

dict = {key1 : value1, key2 : value2, key3 : value3}

创建:

df2=pd.Dataframe({'key1' : ['value1','value2'], 'key2' :['value1','value2'], 'key3' :['value1','value2']})
df2

五、对应EXCEL

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5571726.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存