利用Python读取外部数据文件

学习来自:http://www.dataguru.cn/article-9947-1.html
其他:
英文文档:http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_sas.html

文件读取 例子 函数
读取文本文件的数据 txt文件和csv文件 pd.read_csv()
读取电子表格文件 Excel文件 pd.read_excel()
读取统计软件生成的数据文件 SAS数据集,SPSS数据集 pd.read_sas(),先安装savReaderWriter模块,再运用savReaderWriter.SavReader
读取数据库数据 MySQL数据、SQL Server数据 Python先连接数据库

1、读取文本文件的数据,如txt文件和csv文件

 import pandas as pd
 #txt文件
 mydata_txt = pd.read_csv('C:\\test_code.txt',sep = '\t',encoding = 'utf-8')

#csv文件
mydata_txt = pd.read_csv('C:\\test.txt',sep = '\t',encoding = 'utf-8')

对于中文的文本文件常容易因为编码的问题而读取失败,如:
利用Python读取外部数据文件_第1张图片
解决方法:
1)当原始文件txt或csv的数据不是uft8格式时,需要另存为utf8格式编码;
2)如果原始的数据文件就是uft8格式,为了正常读入,需要将read_csv函数的参数encoding设置为utf-8

2、读取电子表格文件,如Excel文件

mydata_excel = pd.read_excel('C:\\test.xlsx',sep = '\t',encoding = 'utf-8')

3、读取统计软件生成的数据文件,如SAS数据集、SPSS数据集等
1)读取SAS数据集
SAS数据集的读取可以使用pandas模块中的read_sas函数,

mydata_sas = pd.read_sas('G:\\class.sas7bdat',encoding='utf8')

2)读取SPSS数据集
关于读取SPSS数据文件,需要为您的Python安装savReaderWriter模块,该模块可以到如下链接进行下载并安装:https://pypi.python.org/pypi/savReaderWriter/3.4.2。

pip install savReaderWriter(打开cmd输入该命令)

import savReaderWriter
 mydata_spss = savReaderWriter.SavReader('employee_data.sav')

如果尝试了好多种模块都无法读取某个统计软件的数据,建议回到R中,R自带的foreign包可以读取很多种统计软件的数据集,当读取成功后,再利用write.csv函数将数据集写出为csv格式的数据,这样Python就可以轻松读取csv数据集了

4、读取数据库数据,如MySQL数据、SQL Server数据
1)Python连接MySQL
MySQLdb模块是一个连接Python与MySQL的中间桥梁,但目前只能在Python2.x中运行,
但不意味着Python3就无法连接MySQL数据库。这里向大家介绍一个非常灵活而强大的模块,那就是pymysql模块该模块可以伪装成MySQLdb模块
Python连接MySQL的具体操作:
使用pymysql模块伪装成MySQLdb模块,然后使用Connection函数联通Python与MySQL,再使用conn的游标方法(cursor),目的是为接下来的数据库操作做铺垫,最后执行SQL语句

#伪装为MySQLdb模块
 import pymysql
 pymysql.install_as_MySQLdb()    #伪装为MySQLdb模块
 import MySQLdb
#使用Connection函数联通Python与MySQL
 conn = MySQLdb.Connection(
         host = 'localhost',
         user = 'root',
         password = 'snake',
         port = 3306,
         database = 'test',
         charset='gbk')
#使用conn的游标方法(cursor),目的是为接下来的数据库操作做铺垫。
cursor = conn.cursor()
sql = 'select * from memberinfo'
#执行SQL语句
cursor.execute(sql) 
data = cursor.fetchall()
data

利用Python读取外部数据文件_第2张图片
我们发现data中存储的是元组格式的数据集,《Python数据分析之pandas》中讲到,构造DataFrame数据结构只能通过数组、数据框、字典、列表等方式构建,但这里是元组格式的数据,该如何处理呢?很简单,只需使用list函数就可以快速的将元组数据转换为列表格式的数据。

data = list(data)

利用Python读取外部数据文件_第3张图片
再用pandas模块中的DataFrame函数将上面的data列表转换为Python的数据框格式:

mydata = pd.DataFrame(data, columns = ['id','name','age','gender'])

利用Python读取外部数据文件_第4张图片
最后千万千万注意的是,当你的数据读取完之后一定要记得关闭游标和连接,因为不关闭会导致电脑资源的浪费。

#关闭游标和连接
cursor.close()
conn.close()

完整代码:

#伪装为MySQLdb模块
 import pymysql
 pymysql.install_as_MySQLdb()    #伪装为MySQLdb模块
 import MySQLdb
#使用Connection函数联通Python与MySQL
 conn = MySQLdb.Connection(
         host = 'localhost',
         user = 'root',
         password = 'snake',
         port = 3306,
         database = 'test',
         charset='gbk')
#使用conn的游标方法(cursor),目的是为接下来的数据库操作做铺垫。
cursor = conn.cursor()
sql = 'select * from memberinfo'
#执行SQL语句
cursor.execute(sql) 
data = cursor.fetchall()
print(data)  #元组形式

#转换成列表形式 ----以便于再转换成dataframe形式
data = list(data)
print(data)
#转换成dataframe形式
mydata = pd.DataFrame(data, columns = ['id','name','age','gender'])

#关闭游标和连接
cursor.close()
conn.close()

2)Python连接SQL Server
使用Python连接SQL Server数据库,推荐使用pymssql模块,该模块的语法与上面讲的pymysql是一致的

import pymssql
connect = pymssql.connect( 
    host = '172.18.1.6\SqlR2',
    user = 'sa',
    password = '1q2w3e4r!!',
    database='Heinz_Ana',
    charset='utf8')


cursor = connect.cursor()
sql = 'select * from HeinzDB2_10'
cursor.execute(sql)
data = cursor.fetchall()

print(data[0])
mydata = pd.DataFrame(list(data),columns = ['ConsumerID',
                     'Purdate',
                      'Phase',
                      'ChangeTinRatio',
                      'TOTALAMT'])

print(mydata.head())

利用Python读取外部数据文件_第5张图片

你可能感兴趣的:(python)