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

一、打开

利用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为例

import 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类型的表格网页结构如下:
在这里插入图片描述
几种标签含义:

<table>	: 定义表格
<thead>	: 定义表格的页眉
<tbody>	: 定义表格的主体
<tr>	: 定义表格的行
<th>	: 定义表格的表头
<td>	: 定义表格单元*

以财富五百强为例:

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

在这里插入图片描述

合并demo文件夹下所有文件

import os
path = 'demo/'
filesnames = os.listdir(path)#获取该文件夹下的所有文件并且以列表形式
df_list = []
for filename in filesnames:
    df_list.append(pd.read_excel(path + filename)) 
    #把循环读取出来的文件添加到列表中
pd.concat(df_list)#转化为DataFrame

二、查看

df.shape

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

df.columns

表的标题

df.columns

Index(['用户id', '姓名', '性别'], dtype='object')

df.head()

df.head() #默认读取前五行

df.head(10) #读取前10行

三、保存

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: 默认为TrueFalse没有列索引,如需更改列名,则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()
writer.close()

输出结果存在多个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

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瓜瓜的小宝藏

给点饭吃吧呜呜呜

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值