Python数据分析之Pandas读写外部数据文件!

本文详细介绍了Python的Pandas库如何读写文本文件(如txt、csv)、excel文件以及关系型数据库(mysql)和非关系型数据库(mongodb)的数据。重点讲解了read_csv()和to_csv()方法的常用参数,以及read_excel()和to_excel()方法的使用,同时也涵盖了读取和写入mysql数据的方法。
摘要由CSDN通过智能技术生成

1 引言

数据分析、数据挖掘、可视化是Python的众多强项之一,但无论是这几项中的哪一项都必须以数据作为基础,数据通常都存储在外部文件中,例如txt、csv、excel、数据库。本篇中,我们来捋一捋Python中那些外部数据文件读取、写入的常用方法。

下表是Pandas官方手册上给出的一张表格,表格描述的是Pandas中对各种数据文件类型的读、写函数,你可以直接在 官方手册 中找到:

Python资源共享群:626017123

 

 

 

 

 

通过阅读表格,可以发现,Pandas中提供了非常丰富的数据读写方法。不过本文只讲述文本文件(txt、csv)、excel文件、关系型数据库(mysql)、非关系型数据库(mongodb)的读写方式。

2 文本文件(txt、csv)

无论是txt文件还是csv文件,在Pandas中都使用read_csv()方法读取,当然也使用同一个方法写入到文件,那就是to_csv()方法。

我们先来说说怎么读取数据。所要读取的文件名为“data.csv",文件内容用记事本打开后如下所示:

 

 

 

 

 

 

2.1 读取数据

为了提供更加多样化、可定制的功能,read_csv()方法定义了参数数十个参数,还好的是大部分参数并不常用,而且绝大多数情况使用默认值就可以,所以只需要记住以下的几个比较常用的参数就可以了:

(1)filepath_or_buffer:文件所在路径,可以是一个描述路径的字符串、pathlib.Path对象、http或ftp的连接,也可以是任何可调用read()方法的对象。这个参数是唯一一个必传的参数。

>>> import pandas as pd
>>> df = pd.read_csv('data.csv', encoding='gbk')
>>> df
姓名 语文 数学 英语
0 陈一 89 90 67
1 赵二 70 78 90
2 张三 87 86 79
3 李四 90 69 84
4 王五 78 80 69

(2)encoding :编码,字符型,通常为'utf-8',如果中文读取不正常,可以将encoding设为’gbk‘。

在上面打开data.csv文件的例子中,如果不指定encoding='gbk'则会出现下面的异常。当然,你也可以在记事本中通过另存为的方式将编码修改为utf-8,这样就可以使用默认的utf-8编码。

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 0: invalid continuation byte

(3)sep:分隔符,默认为一个英文逗号,即','。

(4)delimiter :备选分隔符,如果指定了delimiter则sep失效。

(5)header :整数或者由整数组成的列表,以用来指定由哪一列或者哪几列作为列名,默认为header=0,表示第一列作为列名。

>>> pd.read_csv('data.csv', encoding='gbk', header=1) # 指定第二列作为列名
陈一 89 90 67
0 赵二 70 78 90
1 张三 87 86 79
2 李四 90 69 84
3 王五 78 80 69

可以看到,当指定第一行之后的数据作为列名时,前面的所有行都会被略过。

也可以传递一个包含多个整数的列表给header,这样每一列就会有多个列名。如果中间某一行没有指定,那么改行会被略过,例如下面的第三行:

>>> df = pd.read_csv('data.csv', encoding='gbk', header=[0,1,3])
>>> df
姓名 语文 数学 英语
陈一 89 90 67
张三 87 86 79
0 李四 90 69 84
1 王五 78 80 69

当文件中没有列名一行数据时,可以传递header=None,表示不从文件数据中指定行作为列名,这是Pandas会自动生成从零开始的序列作为列名:

>>> df = pd.read_csv('data.csv', encoding='gbk', header=None)
>>> df
0 1 2 3
0
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值