- 一、打开
- 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) df2、打开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()
有兴趣可以试一下
快速获取在html中页面中Table型表格抓取的数据
table类型的表格网页结构如下:
几种标签含义:
: 定义表格 : 定义表格的页眉 : 定义表格的主体: 定义表格的行 : 定义表格的表头 : 定义表格单元* 以财富五百强为例:
df=pd.read_html('https://www.fortunechina.com/fortune500/c/2018-07/19/content_311046.htm') #财富五百强名单 df二、查看 df.shapedf.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欢迎分享,转载请注明来源:内存溢出
赞 (0)打赏 微信扫一扫 支付宝扫一扫力扣每日一题2021-11-22打乱数组上一篇 2022-12-14程序员的成长之路下一篇 2022-12-14
评论列表(0条)