python怎么读取sav格式_利⽤Python读取外部数据⽂件
利⽤Python读取外部数据⽂件
[color=rgb(0, 0, 0) !important]刘顺祥
[color=rgb(0, 0, 0) !important]摘要: 不论是数据分析,数据可视化,还是数据挖掘,⼀切的⼀切全都是以数据作为最基础的元素。利⽤Python进⾏数据分析,同样最重要的⼀步就是如何将数据导⼊到Python中,然后才可以实现后⾯的数据分析、数据可视化、数据挖 ...
不论是数据分析,数据可视化,还是数据挖掘,⼀切的⼀切全都是以数据作为最基础的元素。利⽤Python进⾏数据分析,同样最重要的⼀步就是如何将数据导⼊到Python中,然后才可以实现后⾯的数据分析、数据可视化、数据挖掘等。
在本期的Python学习中,我们将针对Python如何获取外部数据做⼀个详细的介绍,从中我们将会学习以下4个⽅⾯的数据获取:
1、读取⽂本⽂件的数据,如txt⽂件和csv⽂件
2、读取电⼦表格⽂件,如Excel⽂件
3、读取统计软件⽣成的数据⽂件,如SAS数据集、SPSS数据集等
4、读取数据库数据,如MySQL数据、SQL Server数据
⼀、读取⽂本⽂件的数据
⼤家都知道,Python中pandas模块是专门⽤来数据分析的⼀个强⼤⼯具,在《Python数据分析之pandas学习(⼀)》和《Python数据分析之pandas学习(⼆)》中我们详细介绍了有关pandas模块的应⽤,下⾯我们就来介绍pandas是如何读取外部数据的。
1、读取txt数据
In [1]: import pandas as pd
In [2]: mydata_txt = pd.read_csv('C:\\',sep = '\t',encoding = 'utf-8')
对于中⽂的⽂本⽂件常容易因为编码的问题⽽读取失败,正如上图所⽰。遇到这样的编码问题该如何处置呢?解决办法有两种情况:
1)当原始⽂件txt或csv的数据不是uft8格式时,需要另存为utf8格式编码;
2)如果原始的数据⽂件就是uft8格式,为了正常读⼊,需要将read_csv函数的参数encoding设置为utf-8
将原始数据另存为utf8格式的数据,重新读⼊txt数据
In [3]: mydata_txt = pd.read_csv('C:\\',sep = '\t',encoding = 'utf-8')
In [4]: mydata_txt
很顺利,txt⽂本⽂件数据就这样进⼊了Python的⼝袋⾥了。
2、读取csv数据
csv⽂本⽂件是⾮常常⽤的⼀种数据存储格式,⽽且其存储量要⽐Excel电⼦表格⼤很多,下⾯我们就来看看如何利⽤Python读取csv格式的数据⽂件:
In [5]: mydata_csv = pd.read_csv('C:\\test.csv',sep = ',',encoding = 'utf-8')
In [6]: mydata_csv
如果你善于总结的话,你会发现,txt⽂件和csv⽂件均可以通过pandas模块中的read_csv函数进⾏读取。该函数有20多个参数,类似于R 中的read.table函数,如果需要查看具体的参数详情,可以查看帮
助⽂档:ad_csv)。
⼆、读取电⼦表格⽂件
这⾥所说的电⼦表格就是Excel表格,可以是xls的电⼦表格,也可以是xlsx的电⼦表格。在⽇常⼯作中,很多数据都是存放在Excel电⼦表格中的,如果我们需要使⽤Python对其进⾏分析或处理的话,第⼀步就是如何读取Excel数据。下⾯我们来看看如果读取Excel数据集:
In [7]: mydata_excel = pd.read_excel('C:\\test.xlsx',sep = '\t',encoding = 'utf-8')
In [8]: mydata_excel
三、读取统计软件⽣成的数据⽂件
往往在集成数据源的时候,可能会让你遇到⼀种苦恼,那就是你的电脑⾥存放了很多统计软件⾃带的或⽣成的数据集,诸如R语⾔数据集、SAS数据集、SPSS数据集等。那么问题来了,如果你电脑⾥都装了这些软件的话,这些数据集你⾃然可以看见,并可以⽅便的转换为⽂本⽂件或电⼦表格⽂件,如果你的电脑⾥没有安装SAS或SPSS这样⼤型的统计分析软件的话,那么你该如何查看这些数据集呢?请放
⼼,Python很万能,它可以读取很多种统计软件的数据集,下⾯我们介绍⼏种Python读取统计数据集的⽅法:
1、读取SAS数据集
SAS数据集的读取可以使⽤pandas模块中的read_sas函数,我们不妨试试该函数读取SAS数据集。下图是使⽤SAS打开的数据集,如果你的电脑中没有安装SAS,那你也可以通过Python实现数据的读取。
In [1]: import pandas as pd
In [2]: mydata_sas = pd.read_sas('G:\\class.sas7bdat',encoding='utf8')
2、读取SPSS数据集
读取SPSS数据就稍微复杂⼀点,⾃⼰测试了好多次,查了好多资料,功夫不负有⼼⼈啊,最终还是搞定了。关于读取SPSS数据⽂件,需要为您的Python安装savReaderWriter模块,该模块可以到如下链接进⾏下载并安装:
/pypi/savReaderWriter/3.4.2。
安装savReaderWriter模块
可以通过该命令进⾏savReaderWriter模块的安装:python setup.py install
下图是SPSS数据在SPSS中打开的样⼦:
In [1]: import savReaderWriter
python怎么读取桌面上的文件In [2]: mydata_spss = savReaderWriter.SavReader('employee_data.sav')
In [3]: mydata_spss
3、实在没办法该怎么办?
如果你尝试了好多种模块都⽆法读取某个统计软件的数据,我建议你还是回到R中,R也是开源的统计分析⼯具,体积也⾮常⼩,只有40M 左右,⽽且R⾃带的foreign包可以读取很多种统计软件的数据集,当读取成功后,再利⽤write.csv函数将数据集写出为csv格式的数据,这样Python就可以轻松读取csv数据集了,万事灵活⼀点就可以完成你想要的任何结果~
四、读取数据库数据
企业中更多的数据还是存放在诸如MySQL、SQL Server、DB2等数据库中,为了能够使Python连接到数据库中,科学家专门设计了Python DB API的接⼝。我们仍然通过例⼦来说明Python是如何实现数据库的连接与操作的。
1、Python连接MySQL
MySQLdb模块是⼀个连接Python与MySQL的中间桥梁,但⽬前只能在Python2.x中运⾏,但不意味着Python3就⽆法连接MySQL数据库。这⾥向⼤家介绍⼀个⾮常灵活⽽强⼤的模块,那就是pymysql模块。我⽐较喜欢他的原因是,该模块可以伪装成MySQLdb模块,具体看下⾯的例⼦:
In [1]: import pymysql
In [2]: pymysql.install_as_MySQLdb()    #伪装为MySQLdb模块
In [3]: import MySQLdb
使⽤Connection函数联通Python与MySQL
In [4]: conn = MySQLdb.Connection(
...:        host = 'localhost',
...:        user = 'root',
...:        password = 'snake',
...:        port = 3306,
...:        database = 'test',
...:        charset='gbk')
使⽤conn的游标⽅法(cursor),⽬的是为接下来的数据库操作做铺垫。
In [5]: cursor = conn.cursor()
In [6]: sql = 'select * from memberinfo'
执⾏SQL语句
In [7]: ute(sql)
Out[7]: 4
In [8]: data = cursor.fetchall()
In [9]: data
我们发现data中存储的是元组格式的数据集,我们在《Python数据分析之pandas学习(⼀)》中讲到,构造DataFrame数据结构只能通过数组、数据框、字典、列表等⽅式构建,但这⾥是元组格式的数据,该如何处理呢?很简单,只需使⽤list函数就可以快速的将元组数据转换为列表格式的数据。
In [10]: data = list(data)
In [11]: data
下⾯我们就是要pandas模块中的DataFrame函数将上⾯的data列表转换为Python的数据框格式:
In [14]: import pandas as pd
In [15]: mydata = pd.DataFrame(data, columns = ['id','name','age','gender'])
In [16]: mydata
最后千万千万注意的是,当你的数据读取完之后⼀定要记得关闭游标和连接,因为不关闭会导致电脑
资源的浪费。
In [19]: cursor.close()
In [20]: conn.close()
2、Python连接SQL Server
使⽤Python连接SQL Server数据库,我们这⾥推荐使⽤pymssql模块,该模块的语法与上⾯讲的pymysql是⼀致的,这⾥就不⼀⼀讲解每⼀步的含义了,直接上代码:
In [21]: import pymssql
In [22]: connect = t(
...:    host = '172.18.1.6\SqlR2',
...:    user = 'sa',
...:    password = '1q2w3e4r!!',
...:    database='Heinz_Ana',
...:    charset='utf8')
In [23]: cursor = connect.cursor()
In [24]: sql = 'select * from HeinzDB2_10'
In [25]: ute(sql)
In [26]: data = cursor.fetchall()
In [27]: data[0]
Out[27]: (67782, '2013-05-01', '⼆阶段', 1.0, 279.0)
In [28]: mydata = pd.DataFrame(list(data),columns = ['ConsumerID',
...:                          'Purdate',
...:                          'Phase',
...:                          'ChangeTinRatio',
.
..:                          'TOTALAMT'])
In [29]: mydata.head()
本期的内容就是向⼤家介绍如何使⽤Python实现外部数据的读取,只有完成了这个基本的第⼀步,才会顺利的进⾏下⾯的清洗、处理、分析甚⾄挖掘部分。这⼀期的内容出来的有点晚,主要还是⼯作⽐较繁忙,后期继续再接再励,谢谢⼤家⼀直以来的⽀持和互动。在下⼀期中,我们将介绍R语⾔中caret包如何实现特征选择。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。